Метод ICorProfilerInfo2::GetFunctionInfo2
Получает родительский класс, токен метаданных и ClassID
для каждого аргумента типа функции при их наличии.
Синтаксис
HRESULT GetFunctionInfo2(
[in] FunctionID funcId,
[in] COR_PRF_FRAME_INFO frameInfo,
[out] ClassID *pClassId,
[out] ModuleID *pModuleId,
[out] mdToken *pToken,
[in] ULONG32 cTypeArgs,
[out] ULONG32 *pcTypeArgs,
[out] ClassID typeArgs[]);
Параметры
funcId
[входной] Идентификатор функции, для которой нужно получить родительский класс и другую информацию.
frameInfo
[входной] Значение COR_PRF_FRAME_INFO
, указывающее на информацию о кадре стека.
pClassId
[выходной] Указатель на родительский класс функции.
pModuleId
[выходной] Указатель на модуль, в котором определен родительский класс функции.
pToken
[выходной] Указатель на токен метаданных функции.
cTypeArgs
[in] Размер массива typeArgs
.
pcTypeArgs
[выходной] Указатель на общее количество значений ClassID
.
typeArgs
[выходной] Массив значений ClassID
, каждое из которых является идентификатором аргумента типа функции. При возврате из метода в параметре typeArgs
содержатся все или некоторые значения ClassID
.
Комментарии
Код профилировщика может вызывать ICorProfilerInfo::GetModuleMetaData для получения интерфейса метаданных для данного модуля. Токен метаданных, возвращенный в расположение, на которое ссылается pToken
, можно впоследствии использовать для доступа к метаданным функции.
Идентификатор класса и аргументы типа, возвращенные с помощью параметров pClassId
и typeArgs
, зависят от значения, переданного в параметре frameInfo
, как показано в таблице ниже.
Значение параметра frameInfo |
Результат |
---|---|
Значение COR_PRF_FRAME_INFO , полученное в результате обратного вызова FunctionEnter2 |
Значение ClassID , возвращенное в расположении, на которое ссылается параметр pClassId , и все аргументы типа, возвращенные в массиве typeArgs , будут точными. |
Объект COR_PRF_FRAME_INFO , полученный из источника, отличного от обратного вызова FunctionEnter2 |
Точное значение ClassID и аргументы типа определить нельзя. То есть, ClassID может иметь значение NULL, а некоторые аргументы типа могут быть возвращены в виде объекта Object. |
Ноль | Точное значение ClassID и аргументы типа определить нельзя. То есть, ClassID может иметь значение NULL, а некоторые аргументы типа могут быть возвращены в виде объекта Object. |
После возврата метода GetFunctionInfo2
необходимо убедиться, что буфер typeArgs
был достаточно велик, чтобы вместить в себя все значения ClassID
. Для этого сравните значение, на которое указывает параметр pcTypeArgs
, со значением параметра cTypeArgs
. Если параметр pcTypeArgs
указывает на значение, превышающее значение cTypeArgs
, деленное на размер значения ClassID
, нужно выделить буфер pcTypeArgs
большего размера, обновить параметр cTypeArgs
, задав новый, больший размер и вызвать метод GetFunctionInfo2
снова.
Кроме того, сначала можно вызвать метод GetFunctionInfo2
с буфером pcTypeArgs
нулевой длины для получения правильного размера буфера. Затем можно задать размер буфера равным значению, возвращенному в параметре pcTypeArgs
, деленному на размер значения ClassID
, и вызвать метод GetFunctionInfo2
снова.
Требования
Платформы: см. раздел Требования к системе.
Заголовок: CorProf.idl, CorProf.h
Библиотека: CorGuids.lib
версии платформа .NET Framework: доступно с версии 2.0.