Поделиться через


TYPE_INFO

Эта структура задает различные виды сведений о типе поля.

Синтаксис

public struct TYPE_INFO {
   public uint   dwKind;
   public IntPtr unionmember;
};

Участники

dwKind
Значение из перечисления dwTYPE_KIND , определяющее способ интерпретации объединения.

type.typeMeta
[Только C++] Содержит структуру METADATA_TYPE , если dwKind есть TYPE_KIND_METADATA.

type.typePdb
[Только C++] Содержит структуру PDB_TYPE , если dwKind есть TYPE_KIND_PDB.

type.typeBuilt
[Только C++] Содержит структуру BUILT_TYPE , если dwKind есть TYPE_KIND_BUILT.

type.unused
Неиспользуемое заполнение.

type
Имя объединения.

unionmember
[только C#] Маршалируйте его в соответствующий тип структуры на dwKindоснове.

Замечания

Эта структура передается методу GetTypeInfo , в котором он заполняется. Интерпретация содержимого структуры зависит от dwKind поля.

Примечание.

[Только C++] Если dwKind равно TYPE_KIND_BUILT, необходимо освободить базовый объект IDebugField при уничтожении TYPE_INFO структуры. Это выполняется с помощью вызова метода typeInfo.type.typeBuilt.pUnderlyingField->Release().

[только C#] В следующей таблице показано, как интерпретировать unionmember член для каждого типа. В примере показано, как это делается для одного типа.

dwKind unionmember интерпретируется как
TYPE_KIND_METADATA METADATA_TYPE
TYPE_KIND_PDB PDB_TYPE
TYPE_KIND_BUILT BUILT_TYPE

Пример

В этом примере показано, как интерпретировать 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));
            }
        }
    }
}

Requirements

Заголовок: sh.h

Пространство имен: Microsoft.VisualStudio.Debugger.Interop

Сборка: Microsoft.VisualStudio.Debugger.Interop.dll

См. также