ICorProfilerInfo4::GetILToNativeMapping2 Method
Gets a map from common intermediate language (CIL) offsets to native offsets for the code contained in the JIT-recompiled version of the specified function.
Syntax
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[]);
Parameters
functionId
[in] The ID of the function that contains the code.
pReJitId
[in] The identity of the JIT-recompiled function. The identity must be zero in .NET Framework 4.5.
cMap
[in] The maximum size of the map
array.
pcMap
[out] The total number of available COR_DEBUG_IL_TO_NATIVE_MAP structures.
map
[out] An array of COR_DEBUG_IL_TO_NATIVE_MAP
structures, each of which specifies the offsets. After the GetILToNativeMapping2
method returns, map
will contain some or all of the COR_DEBUG_IL_TO_NATIVE_MAP
structures.
Remarks
GetILToNativeMapping2
is similar to the ICorProfilerInfo::GetILToNativeMapping method, except that it will allow the profiler to specify the ID of the recompiled function in future releases.
Note
The ICorProfilerFunctionControl::SetILInstrumentedCodeMap method is not implemented in .NET Framework 4.5, so functions that have been JIT-recompiled cannot have an IL-to-native mapping that differs from the originally compiled function. As such, GetILToNativeMapping2
cannot be called with a nonzero JIT-recompiled ID in .NET Framework 4.5.
The GetILToNativeMapping2
method returns an array of COR_DEBUG_IL_TO_NATIVE_MAP
structures. To convey that certain ranges of native instructions correspond to special regions of code (for example, the prolog), an entry in the array can have its ilOffset
field set to a value of the CorDebugIlToNativeMappingTypes enumeration.
After GetILToNativeMapping2
returns, you must verify that the map
buffer was large enough to contain all the COR_DEBUG_IL_TO_NATIVE_MAP
structures. To do this, compare the value of cMap
with the value of the pcMap
parameter. If the pcMap
value, when it is multiplied by the size of a COR_DEBUG_IL_TO_NATIVE_MAP
structure, is larger than cMap
, allocate a larger map
buffer, update cMap
with the new, larger size, and call GetILToNativeMapping2
again.
Alternatively, you can first call GetILToNativeMapping2
with a zero-length map
buffer to obtain the correct buffer size. You can then set the buffer size to the value returned in pcMap
and call GetILToNativeMapping2
again.
Requirements
Platforms: See System Requirements.
Header: CorProf.idl, CorProf.h
Library: CorGuids.lib
.NET Framework Versions: Available since 4.5