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 + +]Contains a METADATA_TYPE structure if dwKind is TYPE_KIND_METADATA.type.typePdb
[只有 c + +]Contains a PDB_TYPE structure if dwKind is TYPE_KIND_PDB.type.typeBuilt
[只有 c + +]Contains a BUILT_TYPE structure if dwKind is TYPE_KIND_BUILT.type.unused
未使用的填補。type
聯集的名稱。unionmember
[C# 只]這為適當的結構的型別為基礎的封送處理dwKind。
備註
這個結構會傳遞至IDebugField::GetTypeInfo填滿其中的方法。 結構的內容解譯的方式根據dwKind欄位。
注意事項 |
---|
[只有 c + +]如果dwKind等於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
Namespace: Microsoft.VisualStudio.Debugger.Interop
組件: Microsoft.VisualStudio.Debugger.Interop.dll