DEBUG_ADDRESS_UNION
Descreve diferentes tipos de endereços.
Sintaxe
Membros
dwKind
Um valor da enumeração ADDRESS_KIND, especificando como interpretar a união.
addr.addrNative
[Somente C++] Contém a estrutura NATIVE_ADDRESS se dwKind
= ADDRESS_KIND_NATIVE.
addr.addrThisRel
[Somente C++] Contém a estrutura UNMANAGED_ADDRESS_THIS_RELATIVE se dwKind
= ADDRESS_KIND_UNMANAGED_THIS_RELATIVE.
addr.addUPhysical
[Somente C++] Contém a estrutura UNMANAGED_ADDRESS_PHYSICAL se dwKind
= ADDRESS_KIND_UNMANAGED_PHYSICAL.
addr.addrMethod
[Somente C++] Contém a estrutura METADATA_ADDRESS_METHOD se dwKind
= ADDRESS_KIND_METHOD.
addr.addrField
[Somente C++] Contém a estrutura METADATA_ADDRESS_FIELD se dwKind
= ADDRESS_KIND_FIELD.
addr.addrLocal
[Somente C++] Contém a estrutura de METADATA_ADDRESS_LOCAL se dwKind
= ADDRESS_KIND_LOCAL.
addr.addrParam
[Somente C++] Contém a estrutura de METADATA_ADDRESS_PARAM se dwKind
= ADDRESS_KIND_PARAM.
addr.addrArrayElem
[Somente C++] Contém a estrutura METADATA_ADDRESS_ARRAYELEM se dwKind
= ADDRESS_KIND_ARRAYELEM.
addr.addrRetVal
[Somente C++] Contém a estrutura de METADATA_ADDRESS_RETVAL se dwKind
= ADDRESS_KIND_RETVAL.
addr.unused
[Somente C++] preenchimento.
addr
[Somente C++] O nome do sindicato.
unionmember
[Somente C#] Esse valor precisa ser empacotado para o tipo de estrutura apropriado com base em dwKind
. Consulte Comentários para a associação entre dwKind
e interpretação do sindicato.
Observações
Essa estrutura faz parte da estrutura DEBUG_ADDRESS e representa um dos vários tipos diferentes de endereços (a estrutura de DEBUG_ADDRESS
é preenchida por uma chamada ao método GetAddress).
[Somente C#] A tabela a seguir mostra como interpretar o membro unionmember
para cada tipo de endereço. O exemplo mostra como isso é feito para um tipo de endereço.
dwKind |
unionmember interpretado como |
---|---|
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 |
Exemplo
Este exemplo mostra como interpretar um tipo de endereço (METADATA_ADDRESS_ARRAYELEM
) da estrutura de DEBUG_ADDRESS_UNION
em C#. Os elementos restantes podem ser interpretados exatamente da mesma maneira.
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));
}
}
}
}
Requisitos
Cabeçalho: sh.h
Namespace: Microsoft.VisualStudio.Debugger.Interop
Assembly: Microsoft.VisualStudio.Debugger.Interop.dll
Consulte também
- estruturas e uniões
- DEBUG_ADDRESS
- ADDRESS_KIND
- GetAddress