DEBUG_ADDRESS_UNION
Beskriver olika typer av adresser.
Syntax
Medlemmar
dwKind
Ett värde från ADDRESS_KIND uppräkning som anger hur unionen ska tolkas.
addr.addrNative
[Endast C++] Innehåller den NATIVE_ADDRESS strukturen om dwKind
= ADDRESS_KIND_NATIVE.
addr.addrThisRel
[Endast C++] Innehåller UNMANAGED_ADDRESS_THIS_RELATIVE struktur om dwKind
= ADDRESS_KIND_UNMANAGED_THIS_RELATIVE.
addr.addUPhysical
[Endast C++] Innehåller den UNMANAGED_ADDRESS_PHYSICAL strukturen om dwKind
= ADDRESS_KIND_UNMANAGED_PHYSICAL.
addr.addrMethod
[Endast C++] Innehåller den METADATA_ADDRESS_METHOD strukturen om dwKind
= ADDRESS_KIND_METHOD.
addr.addrField
[Endast C++] Innehåller den METADATA_ADDRESS_FIELD strukturen om dwKind
= ADDRESS_KIND_FIELD.
addr.addrLocal
[Endast C++] Innehåller den METADATA_ADDRESS_LOCAL strukturen om dwKind
= ADDRESS_KIND_LOCAL.
addr.addrParam
[Endast C++] Innehåller den METADATA_ADDRESS_PARAM strukturen om dwKind
= ADDRESS_KIND_PARAM.
addr.addrArrayElem
[Endast C++] Innehåller den METADATA_ADDRESS_ARRAYELEM strukturen om dwKind
= ADDRESS_KIND_ARRAYELEM.
addr.addrRetVal
[Endast C++] Innehåller METADATA_ADDRESS_RETVAL struktur om dwKind
= ADDRESS_KIND_RETVAL.
addr.unused
[Endast C++] utfyllnad.
addr
[Endast C++] Namnet på facket.
unionmember
[Endast C#] Det här värdet måste konverteras till lämplig strukturtyp baserat på dwKind
. Se Anmärkningar för associationen mellan dwKind
och tolkning av facket.
Anmärkningar
Den här strukturen är en del av DEBUG_ADDRESS struktur och representerar en av flera olika typer av adresser (DEBUG_ADDRESS
strukturen fylls i av ett anrop till metoden GetAddress).
[Endast C#] Följande tabell visar hur du tolkar unionmember
medlem för varje typ av adress. Exemplet visar hur detta görs för en typ av adress.
dwKind |
unionmember tolkas som |
---|---|
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 |
Exempel
Det här exemplet visar hur du tolkar en typ av adress (METADATA_ADDRESS_ARRAYELEM
) för den DEBUG_ADDRESS_UNION
strukturen i C#. De återstående elementen kan tolkas på exakt samma sätt.
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));
}
}
}
}
Krav
Rubrik: sh.h
Namnområde: Microsoft.VisualStudio.Debugger.Interop
Sammansättning: Microsoft.VisualStudio.Debugger.Interop.dll