TYPE_INFO
Эта структура определяет различные типы сведения о представлении поля.
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;
};
Параметры
dwKind
Значение dwTYPE_KIND перечисление, которое определяет, как интерпретировать соединение.type.typeMeta
[C++] содержит только a METADATA_TYPE если структура dwKind существует TYPE_KIND_METADATA.type.typePdb
[C++] содержит только a PDB_TYPE если структура dwKind существует TYPE_KIND_PDB.type.typeBuilt
[C++] содержит только a BUILT_TYPE если структура dwKind существует TYPE_KIND_BUILT.type.unused
Неиспользуемая заполнение.type
Имя соединения.unionmember
[C#] маршалируйте это только к соответствующему типу структуры в соответствии on dwKind.
Заметки
Эта структура передается IDebugField::GetTypeInfo метод, в котором он заполнен. Содержимое структуры, найденных на интерпретируются как dwKind поле.
Примечание
Только если [C++] dwKind equals TYPE_KIND_BUILTпосле этого необходимо освободить помещения в основу IDebugField объект уничтожение TYPE_INFO структура.Это делается путем вызова typeInfo.type.typeBuilt.pUnderlyingField->Release().
[C#] только в следующей таблице показано, как интерпретировать unionmember элемент для каждого типа. Пример показывает, как это делается для одного типа.
dwKind |
unionmember интерпретируется как |
---|---|
TYPE_KIND_METADATA |
|
TYPE_KIND_PDB |
|
TYPE_KIND_BUILT |
Пример
В этом примере показано, как интерпретировать unionmember элемент TYPE_INFO структура в c#. Этот пример показывает интерпретировать только один тип (TYPE_KIND_METADATA), но другие интерпретировать способом те же.
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));
}
}
}
}
Требования
Заголовок: sh.h
Пространство имен: Microsoft.VisualStudio.Debugger.Interop
Сборка: Microsoft.VisualStudio.Debugger.Interop.dll