ICorProfilerInfo2::GetClassIDInfo2 方法
获取指定类的开放式泛型定义的父模块和元数据标记、其父类的 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
。
要求
平台:请参阅系统要求。
头文件: CorProf.idl、CorProf.h
库:CorGuids.lib
.NET Framework 版本:自 2.0 起可用