Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Describes different kinds of addresses.
Syntax
Members
dwKind
A value from the ADDRESS_KIND enumeration, specifying how to interpret the union.
addr.addrNative
[C++ only] Contains the NATIVE_ADDRESS structure if dwKind = ADDRESS_KIND_NATIVE.
addr.addrThisRel
[C++ only] Contains the UNMANAGED_ADDRESS_THIS_RELATIVE structure if dwKind = ADDRESS_KIND_UNMANAGED_THIS_RELATIVE.
addr.addUPhysical
[C++ only] Contains the UNMANAGED_ADDRESS_PHYSICAL structure if dwKind = ADDRESS_KIND_UNMANAGED_PHYSICAL.
addr.addrMethod
[C++ only] Contains the METADATA_ADDRESS_METHOD structure if dwKind = ADDRESS_KIND_METHOD.
addr.addrField
[C++ only] Contains the METADATA_ADDRESS_FIELD structure if dwKind = ADDRESS_KIND_FIELD.
addr.addrLocal
[C++ only] Contains the METADATA_ADDRESS_LOCAL structure if dwKind = ADDRESS_KIND_LOCAL.
addr.addrParam
[C++ only] Contains the METADATA_ADDRESS_PARAM structure if dwKind = ADDRESS_KIND_PARAM.
addr.addrArrayElem
[C++ only] Contains the METADATA_ADDRESS_ARRAYELEM structure if dwKind = ADDRESS_KIND_ARRAYELEM.
addr.addrRetVal
[C++ only] Contains the METADATA_ADDRESS_RETVAL structure if dwKind = ADDRESS_KIND_RETVAL.
addr.unused
[C++ only] padding.
addr
[C++ only] The name of the union.
unionmember
[C# only] This value needs to be marshaled to the appropriate structure type based on dwKind. See Remarks for the association between dwKind and interpretation of the union.
Remarks
This structure is part of the DEBUG_ADDRESS structure and represents one of a number of different kinds of addresses (the DEBUG_ADDRESS structure is filled in by a call to the GetAddress method).
[C# only] The following table shows how to interpret the unionmember member for each kind of address. The Example shows how this is done for one kind of address.
dwKind |
unionmember interpreted as |
|---|---|
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 |
Example
This example shows how to interpret one kind of address (METADATA_ADDRESS_ARRAYELEM) of the DEBUG_ADDRESS_UNION structure in C#. The remaining elements can be interpreted in exactly the same way.
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));
}
}
}
}
Requirements
Header: sh.h
Namespace: Microsoft.VisualStudio.Debugger.Interop
Assembly: Microsoft.VisualStudio.Debugger.Interop.dll