ICorProfilerInfo4::GetILToNativeMapping2 (Método)
Obtiene un mapa de desplazamientos del lenguaje intermedio común (CIL) a desplazamientos nativos para el código contenido en la versión recompilada JIT de la función especificada.
Sintaxis
HRESULT GetILToNativeMapping2(
[in] FunctionID functionId,
[in] ReJITID reJitId,
[in] ULONG32 cMap,
[out] ULONG32 *pcMap,
[out, size_is(cMap), length_is(*pcMap)]
COR_DEBUG_IL_TO_NATIVE_MAP map[]);
Parámetros
functionId
[in] Identificador de la función que contiene el código.
pReJitId
[in] La identidad de la función recompilada con JIT. La identidad debe ser cero en .NET Framework 4.5.
cMap
[in] Tamaño máximo de la matriz map
.
pcMap
[out] Número total de estructuras COR_DEBUG_IL_TO_NATIVE_MAP disponibles.
map
[out] Matriz de COR_DEBUG_IL_TO_NATIVE_MAP
estructuras, cada una de las cuales especifica los desplazamientos. Después de que el método GetILToNativeMapping2
vuelva, map
contendrá algunas o todas las estructuras COR_DEBUG_IL_TO_NATIVE_MAP
.
Comentarios
GetILToNativeMapping2
es similar al método ICorProfilerInfo::GetILToNativeMapping, salvo que permite al generador de perfiles especificar el identificador de la función recompilada en futuras versiones.
Nota
El método ICorProfilerFunctionControl::SetILInstrumentedCodeMap no está implementado en .NET Framework 4.5, por lo que las funciones recompiladas con JIT no pueden tener una asignación de IL a nativo diferente de la función compilada originalmente. Por lo tanto, no se puede llamar a GetILToNativeMapping2
con un identificador compilado con JIT distinto de cero en .NET Framework 4.5.
El método GetILToNativeMapping2
devuelve una matriz de estructuras COR_DEBUG_IL_TO_NATIVE_MAP
. Para indicar que algunos intervalos de instrucciones nativas se corresponden con regiones de código especiales (por ejemplo, el prólogo), es posible establecer el campo ilOffset
de una entrada de la matriz en un valor de la enumeración CorDebugIlToNativeMappingTypes.
Después de la devolución de GetILToNativeMapping2
, debe comprobar que el búfer map
era lo suficientemente grande como para contener todas las estructuras COR_DEBUG_IL_TO_NATIVE_MAP
. Para ello, compare el valor de cMap
con el valor del parámetro pcMap
. Si el valor de pcMap
, al multiplicarlo por el tamaño de una estructura COR_DEBUG_IL_TO_NATIVE_MAP
, es mayor que cMap
, asigne un búfer map
mayor, actualice cMap
con el nuevo tamaño de mayores dimensiones y vuelva a llamar a GetILToNativeMapping2
.
También tiene la opción de llamar primero a GetILToNativeMapping2
con un búfer map
de longitud de cero para obtener el tamaño de búfer correcto. Después, puede establecer el tamaño del búfer en el valor devuelto en pcMap
y volver a llamar a GetILToNativeMapping2
.
Requisitos
Plataformas: Vea Requisitos de sistema.
Encabezado: CorProf.idl, CorProf.h
Biblioteca: CorGuids.lib
Versiones de .NET Framework: disponible a partir de la versión 4.5