DEBUG_ADDRESS_UNION
描述不同類型的位址。
語法
成員
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# 中解譯一種結構的位址 (METADATA_ADDRESS_ARRAYELEM
DEBUG_ADDRESS_UNION
)。 其餘元素可以完全相同的方式解譯。
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