Aracılığıyla paylaş


DEBUG_ADDRESS_UNION

Farklı adres türlerini açıklar.

Sözdizimi

  • C#
  • C++
public struct DEBUG_ADDRESS_UNION {
   public ADDRESS_KIND dwKind;
   public IntPtr       unionmember;
}

Üyeler

dwKind
ADDRESS_KIND numaralandırmasından, birleşimin nasıl yorumlanacağını belirten bir değer.

addr.addrNative
[Yalnızca C++] dwKind = ADDRESS_KIND_NATIVE ise NATIVE_ADDRESS yapısını içerir.

addr.addrThisRel
[Yalnızca C++] dwKind = ADDRESS_KIND_UNMANAGED_THIS_RELATIVE ise UNMANAGED_ADDRESS_THIS_RELATIVE yapısını içerir.

addr.addUPhysical
[Yalnızca C++] dwKind = ADDRESS_KIND_UNMANAGED_PHYSICAL ise UNMANAGED_ADDRESS_PHYSICAL yapısını içerir.

addr.addrMethod
[Yalnızca C++] dwKind = ADDRESS_KIND_METHOD ise METADATA_ADDRESS_METHOD yapısını içerir.

addr.addrField
[Yalnızca C++] dwKind = ADDRESS_KIND_FIELD ise METADATA_ADDRESS_FIELD yapısını içerir.

addr.addrLocal
[Yalnızca C++] dwKind = ADDRESS_KIND_LOCAL ise METADATA_ADDRESS_LOCAL yapısını içerir.

addr.addrParam
[Yalnızca C++] dwKind = ADDRESS_KIND_PARAM ise METADATA_ADDRESS_PARAM yapısını içerir.

addr.addrArrayElem
[Yalnızca C++] dwKind = ADDRESS_KIND_ARRAYELEM ise METADATA_ADDRESS_ARRAYELEM yapısını içerir.

addr.addrRetVal
[Yalnızca C++] dwKind = ADDRESS_KIND_RETVAL ise METADATA_ADDRESS_RETVAL yapısını içerir.

addr.unused
[Yalnızca C++] doldurma.

addr
[Yalnızca C++] Birleşimin adı.

unionmember
[Yalnızca C# ] Bu değerin dwKindtemelinde uygun yapı türüne sıralanması gerekir. dwKind ile birleşimin yorumlanması arasındaki ilişki için açıklamalar bölümüne bakın.

Açıklamalar

Bu yapı, DEBUG_ADDRESS yapısının bir parçasıdır ve çeşitli adres türlerinden birini temsil eder (DEBUG_ADDRESS yapısı GetAddress yöntemine yapılan çağrıyla doldurulur).

[Yalnızca C# ] Aşağıdaki tabloda, her adres türü için unionmember üyenin nasıl yorumlur olduğu gösterilmektedir. Örnek, bunun bir tür adres için nasıl yapıldığını gösterir.

dwKind unionmember olarak yorumlanır
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

Örnek

Bu örnekte, C# dilindeki DEBUG_ADDRESS_UNION yapısının bir tür adresinin (METADATA_ADDRESS_ARRAYELEM) nasıl yorumlur? Kalan öğeler tam olarak aynı şekilde yorumlanabilir.

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

Gereksinim -leri

Üst bilgi: sh.h

Ad Alanı: Microsoft.VisualStudio.Debugger.Interop

Derleme: Microsoft.VisualStudio.Debugger.Interop.dll

Ayrıca bkz.