Condividi tramite


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

METADATA_TYPE

TYPE_KIND_PDB

PDB_TYPE

TYPE_KIND_BUILT

BUILT_TYPE

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

Vedere anche

Riferimenti

Strutture e unioni

dwTYPE_KIND

IDebugField:: GetTypeInfo

METADATA_TYPE

PDB_TYPE

BUILT_TYPE