Compartir vía


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

Consulte también