Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis 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