获取函数的父类、元数据标记和 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返回的所有类型参数都是确切的。 | 
| 从回调以外的源获取的 FunctionEnter2ACOR_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 起提供