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