TYPE_INFORMATION
Questa struttura specifica i vari tipi di informazioni su un tipo di campo.
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;
};
Parametri
dwKind
Un valore dwTYPE_KIND dell'enumerazione che determina come interpretare l'unione.type.typeMeta
[C++ solo] contiene METADATA_TYPE una struttura se dwKind è TYPE_KIND_METADATA.type.typePdb
[C++ solo] contiene PDB_TYPE una struttura se dwKind è TYPE_KIND_PDB.type.typeBuilt
[C++ solo] contiene BUILT_TYPE una struttura se dwKind è TYPE_KIND_BUILT.type.unused
riempimento inutilizzato.type
Nome dell'unione.unionmember
[Solo c#] il marshalling questo al tipo appropriato della struttura basato su dwKind.
Note
Questa struttura viene passata IDebugField:: GetTypeInfo al metodo in cui viene soddisfatta. Come contenuto della struttura viene interpretato è basato sul campo di dwKind .
Nota
[C++ solo] se dwKind equivale a TYPE_KIND_BUILT, è necessario rilasciare l'oggetto sottostante IDebugField quando si elimina la struttura di TYPE_INFO .Questa operazione viene eseguita chiamando typeInfo.type.typeBuilt.pUnderlyingField->Release().
[Solo c#] illustrato nella tabella come interpretare il membro di unionmember per ogni tipo di elemento. Nell'esempio viene illustrato come eseguire questa operazione per un tipo di elemento.
dwKind |
unionmember interpretata come |
---|---|
TYPE_KIND_METADATA |
|
TYPE_KIND_PDB |
|
TYPE_KIND_BUILT |
Esempio
In questo esempio viene illustrato come interpretare il membro di unionmember della struttura di TYPE_INFO in c#. Questo esempio mostra l'interpretazione di un solo tipo (TYPE_KIND_METADATA) ma gli altri sono interpretati esattamente allo stesso modo.
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));
}
}
}
}
Requisiti
intestazione: sh.h
Spazio dei nomi: Microsoft.VisualStudio.Debugger.Interop
Assembly: Microsoft.VisualStudio.Debugger.Interop.dll