ICorProfilerInfo9::GetCodeInfo4 方法
给定原生代码起始地址后,返回存储此代码的虚拟内存块。
语法
HRESULT GetCodeInfo4( [in] UINT_PTR pNativeCodeStartAddress,
[in] ULONG32 cCodeInfos,
[out] ULONG32* pcCodeInfos,
[out] COR_PRF_CODE_INFO codeInfos[]);
参数
pNativeCodeStartAddress
[in] 指向原生函数开头的指针。
cCodeInfos
[in] codeInfos
数组的大小。
pcCodeInfos
[out] 指向可用 COR_PRF_CODE_INFO 结构总数的指针。
codeInfos
[out] 调用方提供的缓冲区。 返回此方法后,它包含一个 COR_PRF_CODE_INFO
结构数组,每个结构描述一个本机代码块。
注解
GetCodeInfo4
方法类似于 GetCodeInfo3,不同之处在于它可以查找方法的不同原生版本的代码信息。
注意
GetCodeInfo4
可以触发垃圾回收。
范围按公共中间语言 (CIL) 偏移递增的顺序进行排序。
GetCodeInfo4
返回后,必须验证 codeInfos
缓冲区是否足够大,可以包含所有 COR_PRF_CODE_INFO 结构。 为此,请将 cCodeInfos
的值和 cchName
参数的值进行比较。 如果 cCodeInfos
除以 COR_PRF_CODE_INFO 结构的大小的结果小于 pcCodeInfos
,则分配更大的 codeInfos
缓冲区,用新的、更大的大小更新 cCodeInfos
,并再次调用 GetCodeInfo4
。
或者,可以先用长度为零的 codeInfos
缓冲区调用 GetCodeInfo4
以获取正确的缓冲区大小。 然后可将 codeInfos
缓冲区大小设置为 pcCodeInfos
中返回的值,再乘以 COR_PRF_CODE_INFO 结构的大小,并再次调用 GetCodeInfo4
。
要求
平台:请参阅 .NET 支持的操作系统。
头文件: CorProf.idl、CorProf.h
库:CorGuids.lib
.NET 版本:自 .NET Core 2.1 起可用