DEBUG_ADDRESS_UNION
다양 한 종류의 주소에 설명 합니다.
typedef struct _tagDEBUG_ADDRESS_UNION {
ADDRESS_KIND dwKind;
union {
NATIVE_ADDRESS addrNative;
UNMANAGED_ADDRESS_THIS_RELATIVE addrThisRel;
UNMANAGED_ADDRESS_PHYSICAL addrUPhysical;
METADATA_ADDRESS_METHOD addrMethod;
METADATA_ADDRESS_FIELD addrField;
METADATA_ADDRESS_LOCAL addrLocal;
METADATA_ADDRESS_PARAM addrParam;
METADATA_ADDRESS_ARRAYELEM addrArrayElem;
METADATA_ADDRESS_RETVAL addrRetVal;
DWORD unused;
} addr;
} DEBUG_ADDRESS_UNION;
public struct DEBUG_ADDRESS_UNION {
public ADDRESS_KIND dwKind;
public IntPtr unionmember;
}
용어
dwKind
값을는 ADDRESS_KIND 열거형, 공용 구조체를 해석 하는 방법을 지정 합니다.addr.addrNative
[C + +에만] 포함 되어 있는 NATIVE_ADDRESS 경우 구성 dwKind ADDRESS_KIND_NATIVE =.addr.addrThisRel
[C + +에만] 포함 되어 있는UNMANAGED_ADDRESS_THIS_RELATIVE 경우 구성 dwKind ADDRESS_KIND_UNMANAGED_THIS_RELATIVE =.addr.addUPhysical
[C + +에만] 포함 되어 있는UNMANAGED_ADDRESS_PHYSICAL 경우 구성 dwKind ADDRESS_KIND_UNMANAGED_PHYSICAL =.addr.addrMethod
[C + +에만] 포함 되어 있는METADATA_ADDRESS_METHOD 경우 구성 dwKind ADDRESS_KIND_METHOD =.addr.addrField
[C + +에만] 포함 되어 있는METADATA_ADDRESS_FIELD 경우 구성 dwKind ADDRESS_KIND_FIELD =.addr.addrLocal
[C + +에만] 포함 되어 있는METADATA_ADDRESS_LOCAL 경우 구성 dwKind ADDRESS_KIND_LOCAL =.addr.addrParam
[C + +에만] 포함 되어 있는METADATA_ADDRESS_PARAM 경우 구성 dwKind ADDRESS_KIND_PARAM =.addr.addrArrayElem
[C + +에만] 포함 되어 있는METADATA_ADDRESS_ARRAYELEM 경우 구성 dwKind ADDRESS_KIND_ARRAYELEM =.addr.addrRetVal
[C + +에만] 포함 되어 있는METADATA_ADDRESS_RETVAL 경우 구성 dwKind ADDRESS_KIND_RETVAL =.addr.unused
[C + +에만] 안쪽 여백입니다.대상 주소
[C + +에만] 공용 구조체의 이름입니다.unionmember
[C#만] 이 값을 기준으로 적절 한 구조 유형을 마샬링할 수 해야 dwKind. 사이의 연결에 대 한 설명 부분을 참조 하십시오. dwKind 및 통합 해석 합니다.
설명
이 구조에 속하지는 DEBUG_ADDRESS 구조와 여러 가지 종류의 주소 중 하나를 나타냅니다 (는 DEBUG_ADDRESS 구조는 기입을 호출 하 여 IDebugAddress::GetAddress 메서드).
[C#만] 다음 표를 해석 하는 방법을 보여 줍니다.의 unionmember 멤버의 각 종류의 주소입니다. 한 종류의 주소에 대 한 방법은 보여 줍니다.
dwKind |
unionmember로 해석 |
---|---|
ADDRESS_KIND_NATIVE |
|
ADDRESS_KIND_UNMANAGED_THIS_RELATIVE |
|
ADDRESS_KIND_UNMANAGED_PHYSICAL |
|
ADDRESS_KIND_METHOD |
|
ADDRESS_KIND_FIELD |
|
ADDRESS_KIND_LOCAL |
|
ADDRESS_KIND_PARAM |
|
ADDRESS_KIND_ARRAYELEM |
|
ADDRESS_KIND_RETVAL |
예제
한 종류의 주소를 해석 하는 방법을 보여 주는이 예제 (METADATA_ADDRESS_ARRAYELEM)의 DEBUG_ADDRESS_UNION C#의 구조. 나머지 요소 정확히 같은 방식으로 해석 될 수 있습니다.
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