Поделиться через


Метод ICorProfilerInfo4::GetILToNativeMapping2

Получает карту из смещения общего промежуточного языка (CIL) на собственные смещения для кода, содержащегося в версии JIT-recompiled указанной функции.

Синтаксис

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[]);

Параметры

functionId [in] Идентификатор функции, содержащей код.

pReJitId [in] Удостоверение функции JIT-recompiled. Удостоверение должно быть равно нулю в платформа .NET Framework 4.5.

cMap [in] Максимальный размер массива map .

pcMap [out] Общее количество доступных COR_DEBUG_IL_TO_NATIVE_MAP структур.

map [out] Массив COR_DEBUG_IL_TO_NATIVE_MAP структур, каждый из которых задает смещения. После возврата метода GetILToNativeMapping2 параметр map будет содержать все или некоторые из структур COR_DEBUG_IL_TO_NATIVE_MAP.

Замечания

GetILToNativeMapping2 аналогичен методу ICorProfilerInfo::GetILToNativeMapping , за исключением того, что он позволит профилировщику указать идентификатор перекомпилированного функции в будущих выпусках.

Примечание.

Метод ICorProfilerFunctionControl::SetILInstrumentedCodeMap не реализован в платформа .NET Framework 4.5, поэтому функции, которые были перекомпилированы JIT-recompiled, не могут иметь собственное сопоставление IL-to-native, которое отличается от первоначально скомпилированной функции. Таким образом, GetILToNativeMapping2 нельзя вызывать ненулевой идентификатор JIT-recompiled в платформа .NET Framework 4.5.

Метод GetILToNativeMapping2 возвращает массив структур COR_DEBUG_IL_TO_NATIVE_MAP. Чтобы передать, что определенные диапазоны собственных инструкций соответствуют специальным областям кода (например, прологу), запись в массиве может иметь значение ilOffset значения перечисления CorDebugIlToNativeMappingTypes.

После возврата метода GetILToNativeMapping2 необходимо убедиться, что буфер map был достаточно велик, чтобы вместить в себя все структуры COR_DEBUG_IL_TO_NATIVE_MAP. Для этого сравните значение параметра cMap со значением параметра pcMap. Если значение pcMap, умноженное на размер структуры COR_DEBUG_IL_TO_NATIVE_MAPCOR_PRF_CODE_INFO, больше значения cMap, выделите буфер map большего размера, обновите параметр cMap, задав новый, больший размер, и вызовите метод GetILToNativeMapping2 снова.

Кроме того, сначала можно вызвать метод GetILToNativeMapping2 с буфером map нулевой длины для получения правильного размера буфера. Затем можно задать размер буфера равным значению, возвращенному в параметре pcMap, и вызвать метод GetILToNativeMapping2 снова.

Требования

Платформы: см. раздел Требования к системе.

Заголовок: CorProf.idl, CorProf.h

Библиотека: CorGuids.lib

версии платформа .NET Framework: Доступно с версии 4.5

См. также