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# 中 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