Note
Access to this page requires authorization. You can try signing in or changing directories.
Access to this page requires authorization. You can try changing directories.
This structure specifies various kinds of information about a field's type.
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 IDebugField::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 |
|
TYPE_KIND_PDB |
|
TYPE_KIND_BUILT |
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