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


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

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));
            }
        }
    }
}

Требования

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

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

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

См. также

Ссылки

структуры и объединения

dwTYPE_KIND

IDebugField::GetTypeInfo

METADATA_TYPE

PDB_TYPE

BUILT_TYPE