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

请参见

参考

ICorProfilerInfo 接口

其他资源

分析接口

分析(非托管 API 参考)