ICorProfilerInfo2::GetClassIDInfo2 Method

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

Syntax

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

Parameters

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

pModuleId [out]指向指定类的打开泛型定义的父模块 ID 的指针。

pTypeDefToken [out]指向指定类的打开泛型定义的元数据标记的指针。

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

cNumTypeArgs [in]数组的大小 typeArgs

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

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

Remarks

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

探查器代码可以调用 ICorProfilerInfo::GetModuleMetaData 以获取给定模块的 元数据 接口。 然后,返回到所引用位置的 pTypeDefToken 元数据令牌可用于访问类的元数据。

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

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

Requirements

平台:请参阅系统要求

页眉: CorProf.idl、CorProf.h

Library: CorGuids.lib

.NET Framework 版本:自 2.0 起提供

See also