ICorProfilerInfo4::GetCodeInfo3 方法

获取本机代码的范围,该代码与指定函数的 JIT 重新编译版本相关联。

语法

HRESULT GetCodeInfo3(  
    [in]  FunctionID functionID,  
    [in]  ReJITID reJitId,  
    [in]  ULONG32 cCodeInfos,  
    [out] ULONG32 *pcCodeInfos,  
    [out, size_is(cCodeInfos), length_is(*pcCodeInfos)]  
    COR_PRF_CODE_INFO codeInfos[]);  

参数

functionID
[in] 与本机代码关联的函数的 ID。

reJitId
[in] JIT 重新编译的函数的标识。

cCodeInfos
[in] codeInfos 数组的大小。

pcCodeInfos
[out] 指向可用 COR_PRF_CODE_INFO 结构总数的指针。

codeInfos
[out] 调用方提供的缓冲区。 返回此方法后,它包含一个 COR_PRF_CODE_INFO 结构数组,每个结构描述一个本机代码块。

注解

GetCodeInfo3 方法类似于 GetCodeInfo2,只不过它将获取包含指定 IP 地址的函数的 JIT 重新编译的 ID。

注意

GetCodeInfo3 可以触发垃圾回收,而 GetCodeInfo2 则不会。 有关详细信息,请参阅 CORPROF_E_UNSUPPORTED_CALL_SEQUENCE HRESULT。

范围按公共中间语言 (CIL) 偏移递增的顺序进行排序。

GetCodeInfo3 返回后,必须验证 codeInfos 缓冲区是否足够大,可以包含所有 COR_PRF_CODE_INFO 结构。 为此,请将 cCodeInfos 的值和 cchName 参数的值进行比较。 如果 cCodeInfos 除以 COR_PRF_CODE_INFO 结构的大小的结果小于 pcCodeInfos,则分配更大的 codeInfos 缓冲区,用新的、更大的大小更新 cCodeInfos,并再次调用 GetCodeInfo3

或者,可以先用长度为零的 codeInfos 缓冲区调用 GetCodeInfo3 以获取正确的缓冲区大小。 然后可将 codeInfos 缓冲区大小设置为 pcCodeInfos 中返回的值,再乘以 COR_PRF_CODE_INFO 结构的大小,并再次调用 GetCodeInfo3

要求

平台:请参阅系统要求

头文件: CorProf.idl、CorProf.h

库:CorGuids.lib

.NET Framework 版本:自 4.5 起可用

另请参阅