Sdílet prostřednictvím


DEBUG_ADDRESS_UNION

Popisuje různé druhy adres.

Syntaxe

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

Členové

dwKind
Hodnota z ADDRESS_KIND výčtu určující, jak interpretovat sjednocení.

addr.addrNative
[Pouze C++] Obsahuje strukturu NATIVE_ADDRESS pokud dwKind = ADDRESS_KIND_NATIVE.

addr.addrThisRel
[Pouze C++] Obsahuje strukturu UNMANAGED_ADDRESS_THIS_RELATIVE , pokud dwKind = ADDRESS_KIND_UNMANAGED_THIS_RELATIVE.

addr.addUPhysical
[Pouze C++] Obsahuje strukturu UNMANAGED_ADDRESS_PHYSICAL pokud dwKind = ADDRESS_KIND_UNMANAGED_PHYSICAL.

addr.addrMethod
[Pouze C++] Obsahuje strukturu METADATA_ADDRESS_METHOD , pokud dwKind = ADDRESS_KIND_METHOD.

addr.addrField
[Pouze C++] Obsahuje strukturu METADATA_ADDRESS_FIELD pokud dwKind = ADDRESS_KIND_FIELD.

addr.addrLocal
[Pouze C++] Obsahuje strukturu METADATA_ADDRESS_LOCAL if dwKind = ADDRESS_KIND_LOCAL.

addr.addrParam
[Pouze C++] Obsahuje strukturu METADATA_ADDRESS_PARAM pokud dwKind = ADDRESS_KIND_PARAM.

addr.addrArrayElem
[Pouze C++] Obsahuje strukturu METADATA_ADDRESS_ARRAYELEM if dwKind = ADDRESS_KIND_ARRAYELEM.

addr.addrRetVal
[Pouze C++] Obsahuje strukturu METADATA_ADDRESS_RETVAL , pokud dwKind = ADDRESS_KIND_RETVAL.

addr.unused
[Pouze C++] odsazení.

addr
[Pouze C++] Název sjednocení.

unionmember
[Jenom jazyk C#] Tato hodnota musí být zařazována do příslušného typu struktury na dwKindzákladě . Viz Poznámky týkající se přidružení mezi dwKind sjednocením a výkladem unie.

Poznámky

Tato struktura je součástí struktury DEBUG_ADDRESS a představuje jeden z několika různých typů adres ( DEBUG_ADDRESS struktura je vyplněna voláním Metody GetAddress ).

[Jenom jazyk C#] Následující tabulka ukazuje, jak interpretovat člena unionmember pro každý druh adresy. Příklad ukazuje, jak se to dělá pro jeden druh adresy.

dwKind unionmember interpretováno jako
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

Příklad

Tento příklad ukazuje, jak interpretovat jeden druh adresy (METADATA_ADDRESS_ARRAYELEM) DEBUG_ADDRESS_UNION struktury v jazyce C#. Zbývající prvky lze interpretovat úplně stejným způsobem.

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));
            }
        }
    }
}

Požadavky

Hlavička: sh.h

Obor názvů: Microsoft.VisualStudio.Debugger.Interop

Sestavení: Microsoft.VisualStudio.Debugger.Interop.dll

Viz také