Поделиться через


Метод 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] Идентификатор класса, для которого будут извлечены сведения.

  • pModuleId
    [out] Указатель на идентификатор родительского модуля класса.

  • pTypeDefToken
    [out] Указатель на маркер метаданных для данного класса.

  • pParentClassId
    [out] Указатель на идентификатор родительского класса.

  • cNumTypeArgs
    [in] Размер массива typeArgs.

  • pcNumTypeArgs
    [out] Указатель на общее количество доступных элементов.

  • typeArgs
    [out] Массив значений ClassID, каждое из которых представляет идентификатор аргумента типа класса. Когда метод возвращает значение, в параметре typeArgs будут содержаться некоторые или все доступные значения ClassID.

Заметки

Метод GetClassIDInfo2 аналогичен методу ICorProfilerInfo::GetClassIDInfo, однако GetClassIDInfo2 получает дополнительные сведения об универсальном типе.

Код профилировщика может вызвать метод ICorProfilerInfo::GetModuleMetaData для получения интерфейса метаданных для данного модуля. Маркер метаданных, возвращаемый в расположение, на которое ссылается параметр pTypeDefToken, можно использовать для доступа к метаданным класса.

После того, как метод GetClassIDInfo2 возвратит значение, можно убедиться, что буфер typeArgs был достаточно велик, чтобы вместить в себя значения ClassID. Для этого нужно сравнить значение, на которое указывает параметр pcNumTypeArgs, со значением параметра cNumTypeArgs. Если pcNumTypeArgs указывает на значение, которое больше, чем cNumTypeArgs, нужно выделить буфер typeArgs большего размера, обновить значение cNumTypeArgs, задав для него новый, больший размер, и вызвать метод GetClassIDInfo2 снова.

Кроме того, сначала можно вызвать метод GetClassIDInfo2 с буфером typeArgs нулевой длины для получения правильного размера буфера. А затем указать в качестве размера буфера typeArgs значение, возвращенное в параметре pcNumTypeArgs, и вызвать метод GetClassIDInfo2 снова.

Дополнительные сведения об этих двух подходах см. в разделе Соглашения методов интерфейса API для профилирования.

Требования

Платформы: см. раздел Требования к системе для .NET Framework.

Заголовок: CorProf.idl, CorProf.h

Библиотека: CorGuids.lib

Версии платформы .NET Framework: 4, 3.5 с пакетом обновления 1 (SP1), 3.5, 3.0 с пакетом обновления 1 (SP1), 3.0, 2.0 с пакетом обновления 1 (SP1), 2.0

См. также

Ссылки

Интерфейс ICorProfilerInfo

Интерфейс ICorProfilerInfo2

Другие ресурсы

Профилирующие интерфейсы

Профилирование (справочник по неуправляемым интерфейсам API)