TYPE_INFO
Note
This article applies to Visual Studio 2015. If you're looking for the latest Visual Studio documentation, see Visual Studio documentation. We recommend upgrading to the latest version of Visual Studio. Download it here
This structure specifies various kinds of information about a field's type.
Syntax
struct _tagTYPE_INFO_UNION {
dwTYPE_KIND dwKind;
union {
METADATA_TYPE typeMeta;
PDB_TYPE typePdb;
BUILT_TYPE typeBuilt;
DWORD unused;
} type;
} TYPE_INFO;
public struct TYPE_INFO {
public uint dwKind;
public IntPtr unionmember;
};
Parameters
dwKind
A value from the dwTYPE_KIND enumeration that determines how to interpret the union.
type.typeMeta
[C++ only] Contains a METADATA_TYPE structure if dwKind
is TYPE_KIND_METADATA
.
type.typePdb
[C++ only] Contains a PDB_TYPE structure if dwKind
is TYPE_KIND_PDB
.
type.typeBuilt
[C++ only] Contains a BUILT_TYPE structure if dwKind
is TYPE_KIND_BUILT
.
type.unused
Unused padding.
type
Name of the union.
unionmember
[C# only] Marshal this to the appropriate structure type based on dwKind
.
Remarks
This structure is passed to the GetTypeInfo method where it is filled in. How the contents of the structure are interpreted is based on the dwKind
field.
Note
[C++ only] If dwKind
equals TYPE_KIND_BUILT
, then it is necessary to release the underlying IDebugField object when destroying the TYPE_INFO
structure. This is done by calling typeInfo.type.typeBuilt.pUnderlyingField->Release()
.
[C# only] The following table shows how to interpret the unionmember
member for each kind of type. The Example shows how this is done for one kind of type.
dwKind |
unionmember interpreted as |
---|---|
TYPE_KIND_METADATA |
METADATA_TYPE |
TYPE_KIND_PDB |
PDB_TYPE |
TYPE_KIND_BUILT |
BUILT_TYPE |
Example
This example shows how to interpret the unionmember
member of the TYPE_INFO
structure in C#. This example shows interpreting only one type (TYPE_KIND_METADATA
) but the others are interpreted in exactly the same way.
using System;
using System.Runtime.Interop.Services;
using Microsoft.VisualStudio.Debugger.Interop;
namespace MyPackage
{
public class MyClass
{
public void Interpret(TYPE_INFO ti)
{
if (ti.dwKind == (uint)enum_dwTypeKind.TYPE_KIND_METADATA)
{
METADATA_TYPE dataType = (METADATA_TYPE)Marshal.PtrToStructure(ti.unionmember,
typeof(METADATA_TYPE));
}
}
}
}
Requirements
Header: sh.h
Namespace: Microsoft.VisualStudio.Debugger.Interop
Assembly: Microsoft.VisualStudio.Debugger.Interop.dll
See Also
Structures and Unions
dwTYPE_KIND
GetTypeInfo
METADATA_TYPE
PDB_TYPE
BUILT_TYPE