DEBUG_ADDRESS_UNION

描述不同類型的位址。

語法

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

成員

dwKind
來自 ADDRESS_KIND 列舉的值,指定如何解譯等位。

addr.addrNative
[僅限 C++]如果 dwKind = ADDRESS_KIND_NATIVE,則包含NATIVE_ADDRESS結構。

addr.addrThisRel
[僅限 C++]如果 dwKind = ADDRESS_KIND_UNMANAGED_THIS_RELATIVE,則包含UNMANAGED_ADDRESS_THIS_RELATIVE結構。

addr.addUPhysical
[僅限 C++]如果 dwKind = ADDRESS_KIND_UNMANAGED_PHYSICAL,則包含UNMANAGED_ADDRESS_PHYSICAL結構。

addr.addrMethod
[僅限 C++]如果 dwKind = ADDRESS_KIND_METHOD,則包含METADATA_ADDRESS_METHOD結構。

addr.addrField
[僅限 C++]如果 dwKind = ADDRESS_KIND_FIELD,則包含 METADATA_ADDRESS_FIELD 結構。

addr.addrLocal
[僅限 C++]如果 dwKind = ADDRESS_KIND_LOCAL,則包含 METADATA_ADDRESS_LOCAL 結構。

addr.addrParam
[僅限 C++]如果 dwKind = ADDRESS_KIND_PARAM,則包含METADATA_ADDRESS_PARAM結構。

addr.addrArrayElem
[僅限 C++]如果 dwKind = ADDRESS_KIND_ARRAYELEM,則包含METADATA_ADDRESS_ARRAYELEM結構。

addr.addrRetVal
[僅限 C++]如果 dwKind = ADDRESS_KIND_RETVAL,則包含 METADATA_ADDRESS_RETVAL 結構。

addr.unused
[僅限 C++] 填補。

addr
[僅限 C++]聯集的名稱。

unionmember
[僅限 C#]此值必須根據 dwKind封送處理至適當的結構類型。 請參閱,以瞭解聯集之間的 dwKind 關聯和解譯。

備註

這個結構是DEBUG_ADDRESS結構的一部分,代表數種不同位址的其中一種(結構DEBUG_ADDRESS是由 GetAddress 方法的呼叫填入的)。

[僅限 C#]下表顯示如何解譯 unionmember 每種位址類型的成員。 此範例示範如何針對一種位址完成此作業。

dwKind unionmember 解譯為
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

範例

此範例示範如何在 C# 中解譯一種結構的位址 (METADATA_ADDRESS_ARRAYELEMDEBUG_ADDRESS_UNION)。 其餘元素可以完全相同的方式解譯。

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

需求

標頭:sh.h

命名空間:Microsoft.VisualStudio.Debugger.Interop

元件:Microsoft.VisualStudio.Debugger.Interop.dll

另請參閱