DEBUG_ADDRESS_UNION
Décrit différents types d’adresses.
Syntaxe
Membres
dwKind
Valeur de l’énumération ADDRESS_KIND, spécifiant comment interpréter l’union.
addr.addrNative
[C++ uniquement] Contient la structure NATIVE_ADDRESS si dwKind
= ADDRESS_KIND_NATIVE.
addr.addrThisRel
[C++ uniquement] Contient la structure UNMANAGED_ADDRESS_THIS_RELATIVE si dwKind
= ADDRESS_KIND_UNMANAGED_THIS_RELATIVE.
addr.addUPhysical
[C++ uniquement] Contient la structure UNMANAGED_ADDRESS_PHYSICAL si dwKind
= ADDRESS_KIND_UNMANAGED_PHYSICAL.
addr.addrMethod
[C++ uniquement] Contient la structure METADATA_ADDRESS_METHOD si dwKind
= ADDRESS_KIND_METHOD.
addr.addrField
[C++ uniquement] Contient la structure METADATA_ADDRESS_FIELD si dwKind
= ADDRESS_KIND_FIELD.
addr.addrLocal
[C++ uniquement] Contient la structure METADATA_ADDRESS_LOCAL si dwKind
= ADDRESS_KIND_LOCAL.
addr.addrParam
[C++ uniquement] Contient la structure METADATA_ADDRESS_PARAM si dwKind
= ADDRESS_KIND_PARAM.
addr.addrArrayElem
[C++ uniquement] Contient la structure METADATA_ADDRESS_ARRAYELEM si dwKind
= ADDRESS_KIND_ARRAYELEM.
addr.addrRetVal
[C++ uniquement] Contient la structure METADATA_ADDRESS_RETVAL si dwKind
= ADDRESS_KIND_RETVAL.
addr.unused
Remplissage [C++ uniquement].
addr
[C++ uniquement] Nom de l’union.
unionmember
[C# uniquement] Cette valeur doit être marshalée sur le type de structure approprié en fonction de dwKind
. Consultez les remarques relatives à l’association entre dwKind
et l’interprétation de l’union.
Remarques
Cette structure fait partie de la structure DEBUG_ADDRESS et représente l’un des différents types d’adresses (la structure DEBUG_ADDRESS
est remplie par un appel à la méthode GetAddress).
[C# uniquement] Le tableau suivant montre comment interpréter le membre unionmember
pour chaque type d’adresse. L’exemple montre comment cela est effectué pour un type d’adresse.
dwKind |
unionmember interprété comme |
---|---|
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 |
Exemple
Cet exemple montre comment interpréter un type d’adresse (METADATA_ADDRESS_ARRAYELEM
) de la structure DEBUG_ADDRESS_UNION
en C#. Les éléments restants peuvent être interprétés de la même façon.
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));
}
}
}
}
Exigences
En-tête : sh.h
Espace de noms : Microsoft.VisualStudio.Debugger.Interop
Assembly : Microsoft.VisualStudio.Debugger.Interop.dll
Voir aussi
- structures et syndicats
- DEBUG_ADDRESS
- ADDRESS_KIND
- GetAddress