ICorProfilerInfo::GetILToNativeMapping 方法
获取从 Microsoft 中间语言 (MSIL) 偏移量到指定函数中包含的代码的本机偏移量的映射。
HRESULT GetILToNativeMapping(
[in] FunctionID functionId,
[in] ULONG32 cMap,
[out] ULONG32 *pcMap,
[out, size_is(cMap), length_is(*pcMap)]
COR_DEBUG_IL_TO_NATIVE_MAP map[]);
参数
functionId
[in] 包含代码的函数的 ID。cMap
[in] map 数组的最大大小。pcMap
[out] COR_DEBUG_IL_TO_NATIVE_MAP 可用结构总数。map
[out] 一个由 COR_DEBUG_IL_TO_NATIVE_MAP 结构构成的数组,其中的每个结构都指定相应的偏移量。 GetILToNativeMapping 方法返回后,map 将包含部分或全部 COR_DEBUG_IL_TO_NATIVE_MAP 结构。
备注
GetILToNativeMapping 方法返回一个由 COR_DEBUG_IL_TO_NATIVE_MAP 结构构成的数组。 若要传达本机指令的某些范围对应于特殊的代码区域(例如 prolog)这一信息,可以将该数组中的项的 ilOffset 字段设置为一个 CorDebugIlToNativeMappingTypes 枚举值。
GetILToNativeMapping 返回后,您必须验证 map 缓冲区大小是否足以包含所有 COR_DEBUG_IL_TO_NATIVE_MAP 结构。 为此,请将 cMap 的值与 pcMap 参数的值进行比较。 如果 pcMap 值乘以 COR_DEBUG_IL_TO_NATIVE_MAP 结构大小大于 cMap,请分配更大的 map 缓冲区,并用新的、更大的大小更新 cMap,然后再次调用 GetILToNativeMapping。
或者,您可以首先用长度为零的 map 缓冲区调用 GetILToNativeMapping,以获取正确的缓冲区大小。 然后,您可以将缓冲区大小设置为 pcMap 中返回的值,然后再次调用 GetILToNativeMapping。
有关这两种方法的更多信息,请参见调用方分配的缓冲区。
要求
**平台:**请参见 .NET Framework 系统要求。
**头文件:**CorProf.idl、CorProf.h
**库:**CorGuids.lib
**.NET Framework 版本:**4、3.5 SP1、3.5、3.0 SP1、3.0、2.0 SP1、2.0