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


ICorProfilerInfo2::GetFunctionInfo2 Method

Возвращает родительский класс, маркер метаданных и ClassID аргумент каждого типа, если он присутствует, функции.

Syntax

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[]);

Parameters

funcId [in] Идентификатор функции, для которой нужно получить родительский класс и другие сведения.

frameInfo [in] COR_PRF_FRAME_INFO Значение, указывающее на сведения о кадре стека.

pClassId [out] Указатель на родительский класс функции.

pModuleId [out] Указатель на модуль, в котором определен родительский класс функции.

pToken [out] Указатель на маркер метаданных для функции.

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

pcTypeArgs [out] Указатель на общее количество значений ClassID .

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

Remarks

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

Аргументы идентификатора класса и типа, возвращаемые через pClassIdtypeArgs параметры, зависят от значения, передаваемого в параметре, как показано в следующей frameInfo таблице.

Значение параметра frameInfo Result
COR_PRF_FRAME_INFO Значение, полученное из обратного FunctionEnter2 вызова Значение ClassID, возвращаемое в расположении, на который pClassIdссылается , и все аргументы типа, возвращаемые в typeArgs массиве, будут точными.
Значение COR_PRF_FRAME_INFO , полученное из источника, отличного от обратного FunctionEnter2 вызова Точные ClassID и типовые аргументы не могут быть определены. То есть может ClassID быть значение NULL, а некоторые аргументы типа могут вернуться как Object.
Zero Точные ClassID и типовые аргументы не могут быть определены. То есть может ClassID быть значение NULL, а некоторые аргументы типа могут вернуться как Object.

После GetFunctionInfo2 возврата необходимо убедиться, что typeArgs буфер был достаточно большим, чтобы содержать все ClassID значения. Для этого сравните значение, указывающее pcTypeArgs на значение cTypeArgs параметра. Если pcTypeArgs указывает на значение, которое больше, чем cTypeArgs разделено на размер ClassID значения, выделите больший pcTypeArgs буфер, обновите cTypeArgs его новым, большим размером и снова вызовите GetFunctionInfo2 .

Кроме того, можно сначала вызвать GetFunctionInfo2 буфер нулевой длины pcTypeArgs , чтобы получить правильный размер буфера. Затем можно задать размер буфера для значения, возвращаемого pcTypeArgsClassID по размеру значения, и снова вызвать GetFunctionInfo2 .

Requirements

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

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

Library: CorGuids.lib

версии .NET Framework: доступно с версии 2.0

See also