ICorProfilerInfo2::GetClassIDInfo2 方法

更新:2007 年 11 月

获取指定泛型类的父模块和元数据标记、其父类的 ClassID 和该类的每个类型参数的 ClassID(如果存在)。

HRESULT GetClassIDInfo2(
    [in]  ClassID classId,
    [out] ModuleID *pModuleId,
    [out] mdTypeDef *pTypeDefToken,
    [out] ClassID *pParentClassId,
    [in]  ULONG32 cNumTypeArgs,
    [out] ULONG32 *pcNumTypeArgs,
    [out] ClassID typeArgs[]);

参数

  • classId
    [in] 将为其检索信息的类的 ID。

  • pModuleId
    [out] 指向类的父模块 ID 的指针。

  • pTypeDefToken
    [out] 指向类的元数据标记的指针。

  • pParentClassId
    [out] 指向父类 ID 的指针。

  • cNumTypeArgs
    [in] typeArgs 数组的大小。

  • pcNumTypeArgs
    [out] 指向可用元素总数的指针。

  • typeArgs
    [out] 一个由 ClassID 值构成的数组,其中的每个值表示该类的一个类型参数的 ID。方法返回时,typeArgs 将包含部分或全部可用的 ClassID 值。

备注

GetClassIDInfo2 方法与 ICorProfilerInfo::GetClassIDInfo 方法类似,但 GetClassIDInfo2 可获取有关泛型类型的附加信息。

探查器代码可以调用 ICorProfilerInfo::GetModuleMetaData 来获取给定模块的元数据接口。随后可以使用返回到 pTypeDefToken 所引用的位置的元数据标记来访问该类的元数据。

GetClassIDInfo2 返回后,您必须验证 typeArgs 缓冲区是否足够大以包含所有 ClassID 值。为此,请将 pcNumTypeArgs 指向的值与 cNumTypeArgs 参数的值进行比较。如果 pcNumTypeArgs 指向大于 cNumTypeArgs 的值,请分配更大的 typeArgs 缓冲区,用新的、更大的大小更新 cNumTypeArgs,然后再次调用 GetClassIDInfo2

或者,您可以首先用长度为零的 typeArgs 缓冲区调用 GetClassIDInfo2,以获取正确的缓冲区大小。然后,您可以将 typeArgs 缓冲区大小设置为 pcNumTypeArgs 中返回的值,然后再次调用 GetClassIDInfo2

有关这两种方法的更多信息,请参见分析 API 中由调用方分配的缓冲区

要求

**平台:**请参见 .NET Framework 系统要求

**头文件:**CorProf.idl

**库:**CorGuids.lib

**.NET Framework 版本:**3.5 SP1、3.5、3.0 SP1、3.0、2.0 SP1、2.0

请参见

参考

ICorProfilerInfo

ICorProfilerInfo2

其他资源

分析接口

分析(非托管 API 参考)