Dela via


DEBUG_ADDRESS_UNION

Beskriver olika typer av adresser.

Syntax

public struct DEBUG_ADDRESS_UNION {
   public ADDRESS_KIND dwKind;
   public IntPtr       unionmember;
}

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

Se även