Anmerkung
Der Zugriff auf diese Seite erfordert eine Genehmigung. Du kannst versuchen, dich anzumelden oder die Verzeichnisse zu wechseln.
Der Zugriff auf diese Seite erfordert eine Genehmigung. Du kannst versuchen , die Verzeichnisse zu wechseln.
Beschreibt verschiedene Arten von Adressen.
Syntax
public struct DEBUG_ADDRESS_UNION {
public ADDRESS_KIND dwKind;
public IntPtr unionmember;
}
Angehörige
dwKind
Ein Wert aus der ADDRESS_KIND-Aufzählung, der angibt, wie die Union interpretiert werden soll.
addr.addrNative
[Nur C++] Enthält die NATIVE_ADDRESS Struktur, wenn dwKind = ADDRESS_KIND_NATIVE.
addr.addrThisRel
[Nur C++] Enthält die UNMANAGED_ADDRESS_THIS_RELATIVE Struktur, wenn dwKind = ADDRESS_KIND_UNMANAGED_THIS_RELATIVE.
addr.addUPhysical
[Nur C++] Enthält die UNMANAGED_ADDRESS_PHYSICAL Struktur, wenn dwKind = ADDRESS_KIND_UNMANAGED_PHYSICAL.
addr.addrMethod
[Nur C++] Enthält die METADATA_ADDRESS_METHOD Struktur, wenn dwKind = ADDRESS_KIND_METHOD.
addr.addrField
[Nur C++] Enthält die METADATA_ADDRESS_FIELD Struktur, wenn dwKind = ADDRESS_KIND_FIELD.
addr.addrLocal
[Nur C++] Enthält die METADATA_ADDRESS_LOCAL Struktur, wenn dwKind = ADDRESS_KIND_LOCAL.
addr.addrParam
[Nur C++] Enthält die METADATA_ADDRESS_PARAM Struktur, wenn dwKind = ADDRESS_KIND_PARAM.
addr.addrArrayElem
[Nur C++] Enthält die METADATA_ADDRESS_ARRAYELEM Struktur, wenn dwKind = ADDRESS_KIND_ARRAYELEM.
addr.addrRetVal
[Nur C++] Enthält die METADATA_ADDRESS_RETVAL Struktur, wenn dwKind = ADDRESS_KIND_RETVAL.
addr.unused
[Nur C++]-Abstand.
addr
[Nur C++] Der Name der Vereinigung.
unionmember
[Nur C#] Dieser Wert muss basierend auf dwKinddem entsprechenden Strukturtyp gemarstet werden. Siehe Anmerkungen zur Zuordnung zwischen dwKind und Auslegung der Vereinigung.
Bemerkungen
Diese Struktur ist Teil der DEBUG_ADDRESS-Struktur und stellt eine der verschiedenen Arten von Adressen dar (die DEBUG_ADDRESS Struktur wird durch einen Aufruf der GetAddress-Methode ausgefüllt).
[Nur C#] In der folgenden Tabelle wird gezeigt, wie das unionmember Element für jede Art von Adresse interpretiert wird. Das Beispiel zeigt, wie dies für eine Art von Adresse erfolgt.
dwKind |
unionmember interpretiert 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 |
Beispiel
In diesem Beispiel wird gezeigt, wie eine Art von Adresse (METADATA_ADDRESS_ARRAYELEM) der DEBUG_ADDRESS_UNION Struktur in C# interpretiert wird. Die übrigen Elemente können genau auf die gleiche Weise interpretiert werden.
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));
}
}
}
}
Anforderungen
Kopfzeile: sh.h
Namespace: Microsoft.VisualStudio.Debugger.Interop
Assembly: Microsoft.VisualStudio.Debugger.Interop.dll