Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Descrive diversi tipi di indirizzi.
Sintassi
- C#
- C++
public struct DEBUG_ADDRESS_UNION {
public ADDRESS_KIND dwKind;
public IntPtr unionmember;
}
Membri
dwKind
Valore dell'enumerazione ADDRESS_KIND, che specifica come interpretare l'unione.
addr.addrNative
[solo C++] Contiene la struttura NATIVE_ADDRESS se dwKind = ADDRESS_KIND_NATIVE.
addr.addrThisRel
[solo C++] Contiene la struttura UNMANAGED_ADDRESS_THIS_RELATIVE se dwKind = ADDRESS_KIND_UNMANAGED_THIS_RELATIVE.
addr.addUPhysical
[solo C++] Contiene la struttura UNMANAGED_ADDRESS_PHYSICAL se dwKind = ADDRESS_KIND_UNMANAGED_PHYSICAL.
addr.addrMethod
[solo C++] Contiene la struttura METADATA_ADDRESS_METHOD se dwKind = ADDRESS_KIND_METHOD.
addr.addrField
[solo C++] Contiene la struttura METADATA_ADDRESS_FIELD se dwKind = ADDRESS_KIND_FIELD.
addr.addrLocal
[solo C++] Contiene la struttura METADATA_ADDRESS_LOCAL se dwKind = ADDRESS_KIND_LOCAL.
addr.addrParam
[solo C++] Contiene la struttura METADATA_ADDRESS_PARAM se dwKind = ADDRESS_KIND_PARAM.
addr.addrArrayElem
[solo C++] Contiene la struttura METADATA_ADDRESS_ARRAYELEM se dwKind = ADDRESS_KIND_ARRAYELEM.
addr.addrRetVal
[solo C++] Contiene la struttura METADATA_ADDRESS_RETVAL se dwKind = ADDRESS_KIND_RETVAL.
addr.unused
Riempimento [solo C++].
addr
[solo C++] Nome dell'unione.
unionmember
[Solo C#] Questo valore deve essere sottoposto a marshalling al tipo di struttura appropriato in base a dwKind. Vedere osservazioni per l'associazione tra dwKind e interpretazione dell'unione.
Osservazioni
Questa struttura fa parte della struttura DEBUG_ADDRESS e rappresenta uno dei diversi tipi di indirizzi (la struttura DEBUG_ADDRESS viene compilata da una chiamata al metodo GetAddress).
[Solo C#] Nella tabella seguente viene illustrato come interpretare il membro unionmember per ogni tipo di indirizzo. L'esempio mostra come viene eseguita questa operazione per un tipo di indirizzo.
dwKind |
unionmember interpretata come |
|---|---|
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 |
Esempio
Questo esempio illustra come interpretare un tipo di indirizzo (METADATA_ADDRESS_ARRAYELEM) della struttura DEBUG_ADDRESS_UNION in C#. Gli elementi rimanenti possono essere interpretati esattamente nello stesso modo.
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));
}
}
}
}
Fabbisogno
Intestazione: sh.h
Spazio dei nomi: Microsoft.VisualStudio.Debugger.Interop
Assembly: Microsoft.VisualStudio.Debugger.Interop.dll