Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
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