Delen via


DEBUG_ADDRESS_UNION

Beschrijft verschillende soorten adressen.

Syntaxis

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

Leden

dwKind
Een waarde uit de opsomming ADDRESS_KIND die aangeeft hoe de samenvoeging moet worden geïnterpreteerd.

addr.addrNative
[Alleen C++ ] Bevat de NATIVE_ADDRESS structuur als dwKind = ADDRESS_KIND_NATIVE.

addr.addrThisRel
[Alleen C++ ] Bevat de UNMANAGED_ADDRESS_THIS_RELATIVE structuur als dwKind = ADDRESS_KIND_UNMANAGED_THIS_RELATIVE.

addr.addUPhysical
[Alleen C++ ] Bevat de UNMANAGED_ADDRESS_PHYSICAL structuur als dwKind = ADDRESS_KIND_UNMANAGED_PHYSICAL.

addr.addrMethod
[Alleen C++ ] Bevat de METADATA_ADDRESS_METHOD structuur als dwKind = ADDRESS_KIND_METHOD.

addr.addrField
[Alleen C++ ] Bevat de METADATA_ADDRESS_FIELD structuur als dwKind = ADDRESS_KIND_FIELD.

addr.addrLocal
[Alleen C++ ] Bevat de METADATA_ADDRESS_LOCAL structuur als dwKind = ADDRESS_KIND_LOCAL.

addr.addrParam
[Alleen C++ ] Bevat de METADATA_ADDRESS_PARAM structuur als dwKind = ADDRESS_KIND_PARAM.

addr.addrArrayElem
[Alleen C++ ] Bevat de METADATA_ADDRESS_ARRAYELEM structuur als dwKind = ADDRESS_KIND_ARRAYELEM.

addr.addrRetVal
[Alleen C++ ] Bevat de METADATA_ADDRESS_RETVAL structuur als dwKind = ADDRESS_KIND_RETVAL.

addr.unused
[Alleen C++ ] opvulling.

addr
[Alleen C++ ] De naam van de samenvoeging.

unionmember
[Alleen C# ] Deze waarde moet worden marshaled naar het juiste structuurtype op basis van dwKind. Zie Opmerkingen voor de associatie tussen dwKind en interpretatie van de unie.

Opmerkingen

Deze structuur maakt deel uit van de DEBUG_ADDRESS structuur en vertegenwoordigt een van een aantal verschillende soorten adressen (de DEBUG_ADDRESS structuur wordt ingevuld door een aanroep naar de GetAddress-methode).

[Alleen C# ] In de volgende tabel ziet u hoe u het unionmember lid voor elk type adres interpreteert. In het voorbeeld ziet u hoe dit wordt gedaan voor één soort adres.

dwKind unionmember geïnterpreteerd als
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

Voorbeeld

In dit voorbeeld ziet u hoe u één soort adres (METADATA_ADDRESS_ARRAYELEM) van de DEBUG_ADDRESS_UNION structuur in C# interpreteert. De resterende elementen kunnen op exact dezelfde manier worden geïnterpreteerd.

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));
            }
        }
    }
}

Eisen

Koptekst: sh.h

Naamruimte: Microsoft.VisualStudio.Debugger.Interop

Assembly: Microsoft.VisualStudio.Debugger.Interop.dll

Zie ook