获取函数的父类、元数据标记和 ClassID
每个类型参数(如果存在)。
Syntax
HRESULT GetFunctionInfo2(
[in] FunctionID funcId,
[in] COR_PRF_FRAME_INFO frameInfo,
[out] ClassID *pClassId,
[out] ModuleID *pModuleId,
[out] mdToken *pToken,
[in] ULONG32 cTypeArgs,
[out] ULONG32 *pcTypeArgs,
[out] ClassID typeArgs[]);
Parameters
funcId
[in]要为其获取父类和其他信息的函数的 ID。
frameInfo
[in]一个 COR_PRF_FRAME_INFO
指向有关堆栈帧的信息的值。
pClassId
[out]指向函数的父类的指针。
pModuleId
[out]指向在其中定义函数父类的模块的指针。
pToken
[out]指向函数元数据令牌的指针。
cTypeArgs
[in]数组的大小 typeArgs
。
pcTypeArgs
[out]指向值的总数的 ClassID
指针。
typeArgs
[out]值的数组,每个数组 ClassID
都是函数的类型参数的 ID。 方法返回时, typeArgs
将包含部分或全部 ClassID
值。
Remarks
探查器代码可以调用 ICorProfilerInfo::GetModuleMetaData 以获取给定模块的 元数据 接口。 然后,返回到所引用位置的 pToken
元数据令牌可用于访问函数的元数据。
通过 pClassId
参数 typeArgs
返回的类 ID 和类型参数取决于参数中 frameInfo
传递的值,如下表所示。
frameInfo 参数的值 |
Result |
---|---|
COR_PRF_FRAME_INFO 从FunctionEnter2 回调获取的值 |
ClassID 在所引用pClassId 的位置返回的 、数组中typeArgs 返回的所有类型参数都是确切的。 |
从回调以外的源获取的 FunctionEnter2 A COR_PRF_FRAME_INFO |
无法确定确切 ClassID 参数和类型参数。 也就是说, ClassID 可能为 null,并且某些类型参数可能返回为 Object。 |
Zero | 无法确定确切 ClassID 参数和类型参数。 也就是说, ClassID 可能为 null,并且某些类型参数可能返回为 Object。 |
返回后 GetFunctionInfo2
,必须验证 typeArgs
缓冲区是否足够大,足以包含所有 ClassID
值。 为此,请将指向的值 pcTypeArgs
与参数的值 cTypeArgs
进行比较。 如果 pcTypeArgs
指向大于 cTypeArgs
除以值大小 ClassID
的值,请分配更大的 pcTypeArgs
缓冲区,使用新的、更大的大小进行更新 cTypeArgs
,然后再次调用 GetFunctionInfo2
。
或者,可以使用零长度GetFunctionInfo2
缓冲区首次调用pcTypeArgs
以获取正确的缓冲区大小。 然后,可以将缓冲区大小设置为以除以值大小ClassID
返回pcTypeArgs
的值,然后再次调用GetFunctionInfo2
。
Requirements
平台:请参阅系统要求。
页眉: CorProf.idl、CorProf.h
Library: CorGuids.lib
.NET Framework 版本:自 2.0 起提供