Share via


DEBUG_ADDRESS_UNION

Décrit différents types d’adresses.

Syntaxe

public struct DEBUG_ADDRESS_UNION {
   public ADDRESS_KIND dwKind;
   public IntPtr       unionmember;
}

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 lastructure UNMANAGED_ADDRESS_THIS_RELATIVE si dwKind = ADDRESS_KIND_UNMANAGED_THIS_RELATIVE.

addr.addUPhysical
[C++ uniquement] Contient lastructure UNMANAGED_ADDRESS_PHYSICAL si dwKind = ADDRESS_KIND_UNMANAGED_PHYSICAL.

addr.addrMethod
[C++ uniquement] Contient lastructure METADATA_ADDRESS_METHOD si dwKind = ADDRESS_KIND_METHOD.

addr.addrField
[C++ uniquement] Contient lastructure METADATA_ADDRESS_FIELD si dwKind = ADDRESS_KIND_FIELD.

addr.addrLocal
[C++ uniquement] Contient lastructure METADATA_ADDRESS_LOCAL si dwKind = ADDRESS_KIND_LOCAL.

addr.addrParam
[C++ uniquement] Contient lastructure METADATA_ADDRESS_PARAM si dwKind = ADDRESS_KIND_PARAM.

addr.addrArrayElem
[C++ uniquement] Contient lastructure METADATA_ADDRESS_ARRAYELEM si dwKind = ADDRESS_KIND_ARRAYELEM.

addr.addrRetVal
[C++ uniquement] Contient lastructure 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 dwKindde . Consultez les remarques relatives à l’association entre dwKind et l’interprétation de l’union.

Notes

Cette structure fait partie de la structure DEBUG_ADDRESS et représente l’un des différents types d’adresses (la DEBUG_ADDRESS structure est remplie par un appel à la méthode GetAddress ).

[C# uniquement] Le tableau suivant montre comment interpréter le unionmember membre 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 DEBUG_ADDRESS_UNION structure 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));
            }
        }
    }
}

Spécifications

En-tête : sh.h

Espace de noms : Microsoft.VisualStudio.Debugger.Interop

Assembly : Microsoft.VisualStudio.Debugger.Interop.dll

Voir aussi