ICorProfilerInfo2::GetFunctionInfo2 Method

获取函数的父类、元数据标记和 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_INFOFunctionEnter2回调获取的值 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 起提供

See also