TYPE_INFO
This structure specifies various kinds of information about a field's type.
Syntax
Members
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