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 起可用

另请参阅