Hizkuntza
Oharra
Baimena behar duzu orria atzitzeko. Direktorioetan saioa has dezakezu edo haiek alda ditzakezu.
Baimena behar duzu orria atzitzeko. Direktorioak alda ditzakezu.
Describe diferentes tipos de direcciones.
Sintaxis
public struct DEBUG_ADDRESS_UNION {
public ADDRESS_KIND dwKind;
public IntPtr unionmember;
}
Miembros
dwKind
Valor de la enumeración ADDRESS_KIND, especificando cómo interpretar la unión.
addr.addrNative
[Solo C++] Contiene la estructura NATIVE_ADDRESS si dwKind = ADDRESS_KIND_NATIVE.
addr.addrThisRel
[Solo C++] Contiene la estructura UNMANAGED_ADDRESS_THIS_RELATIVE si dwKind = ADDRESS_KIND_UNMANAGED_THIS_RELATIVE.
addr.addUPhysical
[Solo C++] Contiene la estructura UNMANAGED_ADDRESS_PHYSICAL si dwKind = ADDRESS_KIND_UNMANAGED_PHYSICAL.
addr.addrMethod
[Solo C++] Contiene la estructura METADATA_ADDRESS_METHOD si dwKind = ADDRESS_KIND_METHOD.
addr.addrField
[Solo C++] Contiene la estructura METADATA_ADDRESS_FIELD si dwKind = ADDRESS_KIND_FIELD.
addr.addrLocal
[Solo C++] Contiene la estructura METADATA_ADDRESS_LOCAL si dwKind = ADDRESS_KIND_LOCAL.
addr.addrParam
[Solo C++] Contiene la estructura METADATA_ADDRESS_PARAM si dwKind = ADDRESS_KIND_PARAM.
addr.addrArrayElem
[Solo C++] Contiene la estructura METADATA_ADDRESS_ARRAYELEM si dwKind = ADDRESS_KIND_ARRAYELEM.
addr.addrRetVal
[Solo C++] Contiene la estructura METADATA_ADDRESS_RETVAL si dwKind = ADDRESS_KIND_RETVAL.
addr.unused
[Solo C++] relleno.
addr
[Solo C++] Nombre de la unión.
unionmember
[Solo C#] Este valor debe serializarse en el tipo de estructura adecuado basado en dwKind. Vea comentarios sobre la asociación entre dwKind e interpretación de la unión.
Observaciones
Esta estructura forma parte de la estructura DEBUG_ADDRESS y representa uno de varios tipos diferentes de direcciones (la estructura DEBUG_ADDRESS se rellena mediante una llamada al método GetAddress).
[Solo C#] En la tabla siguiente se muestra cómo interpretar el miembro unionmember para cada tipo de dirección. En el ejemplo se muestra cómo se hace esto para un tipo de dirección.
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 |
Ejemplo
En este ejemplo se muestra cómo interpretar un tipo de dirección (METADATA_ADDRESS_ARRAYELEM) de la estructura DEBUG_ADDRESS_UNION en C#. Los elementos restantes se pueden interpretar exactamente de la misma manera.
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
Encabezado: sh.h
Espacio de nombres: Microsoft.VisualStudio.Debugger.Interop
Ensamblado: Microsoft.VisualStudio.Debugger.Interop.dll
Consulte también
- estructuras y uniones de
- DEBUG_ADDRESS
- ADDRESS_KIND
- GetAddress