描述不同類型的位址。
語法
成員
dwKind
來自 ADDRESS_KIND 列舉的值,指定如何解譯等位。
addr.addrNative
[僅限C++]如果 dwKind = ADDRESS_KIND_NATIVE,則包含 NATIVE_ADDRESS 結構。
addr.addrThisRel
[僅限C++]如果 dwKind = ADDRESS_KIND_UNMANAGED_THIS_RELATIVE,則包含 UNMANAGED_ADDRESS_THIS_RELATIVE 結構。
addr.addUPhysical
[僅限C++]如果 dwKind = ADDRESS_KIND_UNMANAGED_PHYSICAL,則包含 UNMANAGED_ADDRESS_PHYSICAL 結構。
addr.addrMethod
[僅限C++]如果 dwKind = ADDRESS_KIND_METHOD,則包含 METADATA_ADDRESS_METHOD 結構。
addr.addrField
[僅限C++]如果 dwKind = ADDRESS_KIND_FIELD,則包含 METADATA_ADDRESS_FIELD 結構。
addr.addrLocal
[僅限C++]如果 dwKind = ADDRESS_KIND_LOCAL,則包含 METADATA_ADDRESS_LOCAL 結構。
addr.addrParam
[僅限C++]如果 dwKind = ADDRESS_KIND_PARAM,則包含 METADATA_ADDRESS_PARAM 結構。
addr.addrArrayElem
[僅限C++]如果 dwKind = ADDRESS_KIND_ARRAYELEM,則包含 METADATA_ADDRESS_ARRAYELEM 結構。
addr.addrRetVal
[僅限C++]如果 dwKind = ADDRESS_KIND_RETVAL,則包含 METADATA_ADDRESS_RETVAL 結構。
addr.unused
[僅限C++] 填補。
addr
[僅限C++]聯集的名稱。
unionmember
[僅限 C#]此值必須根據 dwKind封送處理至適當的結構類型。 請參閱,以瞭解 dwKind 與聯集解譯之間的關聯。
言論
這個結構是 DEBUG_ADDRESS 結構的一部分,代表數種不同位址的其中一種(DEBUG_ADDRESS 結構是由 呼叫 getAddress 方法填入的)。
[僅限 C#]下表顯示如何解譯每種位址 unionmember 成員。 此範例示範如何針對一種位址完成此作業。
dwKind |
unionmember 解譯為 |
|---|---|
ADDRESS_KIND_NATIVE |
NATIVE_ADDRESS |
ADDRESS_KIND_UNMANAGED_THIS_RELATIVE |
UNMANAGED_ADDRESS_THIS_RELATIVE |
ADDRESS_KIND_UNMANAGED_PHYSICAL |
UNMANAGED_ADDRESS_PHYSICAL |
ADDRESS_KIND_METHOD |
METADATA_ADDRESS_METHOD |
ADDRESS_KIND_FIELD |
METADATA_ADDRESS_FIELD |
ADDRESS_KIND_LOCAL |
METADATA_ADDRESS_LOCAL |
ADDRESS_KIND_PARAM |
METADATA_ADDRESS_PARAM |
ADDRESS_KIND_ARRAYELEM |
METADATA_ADDRESS_ARRAYELEM |
ADDRESS_KIND_RETVAL |
METADATA_ADDRESS_RETVAL |
例
此範例示範如何在 C# 中解譯 DEBUG_ADDRESS_UNION 結構的一種位址(METADATA_ADDRESS_ARRAYELEM)。 其餘元素可以完全相同的方式解譯。
using System;
using System.Runtime.Interop.Services;
using Microsoft.VisualStudio.Debugger.Interop;
namespace MyPackage
{
public class MyClass
{
public void Interpret(DEBUG_ADDRESS_UNION dau)
{
if (dau.dwKind == (uint)enum_ADDRESS_KIND.ADDRESS_KIND_METADATA_ARRAYELEM)
{
METADATA_ADDRESS_ARRAYELEM arrayElem =
(METADATA_ADDRESS_ARRAYELEM)Marshal.PtrToStructure(dau.unionmember,
typeof(METADATA_ADDRESS_ARRAYELEM));
}
}
}
}
要求
標頭:sh.h
命名空間:Microsoft.VisualStudio.Debugger.Interop
元件:Microsoft.VisualStudio.Debugger.Interop.dll