Функция FunctionLeave3WithInfo

Уведомляет профилировщика о том, что элемент управления возвращается из функции, и предоставляет дескриптор, который можно передать в метод ICorProfilerInfo3::GetFunctionLeave3Info для получения кадра стека и возвращаемого значения.

Синтаксис

void __stdcall FunctionLeave3WithInfo(  
               [in] FunctionIDOrClientID functionIDOrClientID,  
               [in] COR_PRF_ELT_INFO eltInfo);  

Параметры

functionIDOrClientID [in] Идентификатор функции, из которой возвращается элемент управления.

eltInfo [in] Непрозрачный дескриптор, представляющий сведения о заданном кадре стека. Этот дескриптор действителен только во время обратного вызова, в который он передается.

Комментарии

Метод FunctionLeave3WithInfo обратного вызова уведомляет профилировщик при вызове функций и позволяет профилировщику использовать метод ICorProfilerInfo3::GetFunctionLeave3Info для проверки возвращаемого значения. Чтобы получить доступ к возвращаемым сведениям о значении COR_PRF_ENABLE_FUNCTION_RETVAL , необходимо установить флаг . Профилировщик может использовать метод ICorProfilerInfo::SetEventMask для установки флагов событий, а затем использовать метод ICorProfilerInfo3::SetEnterLeaveFunctionHooks3WithInfo для регистрации реализации этой функции.

Функция FunctionLeave3WithInfo является обратным вызовом; ее необходимо реализовать. Реализация должна использовать __declspec(naked) атрибут класса хранения.

Подсистема выполнения не сохраняет регистры перед вызовом этой функции.

  • При записи необходимо сохранить все используемые регистры, включая регистры в единице с плавающей запятой (FPU).

  • При выходе необходимо восстановить стек, вырвав все параметры, которые были отправлены вызывающим элементом.

Реализация FunctionLeave3WithInfo не должна блокироваться, так как это приведет к задержке сборки мусора. Реализация не должна пытаться выполнить сборку мусора, так как стек может не находиться в удобном для сборки мусора состоянии. При попытке сборки мусора среда выполнения будет блокироваться до тех пор, пока не FunctionLeave3WithInfo вернется.

Функция FunctionLeave3WithInfo не должна вызывать управляемый код или вызывать выделение управляемой памяти каким-либо образом.

Требования

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

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

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

версии платформа .NET Framework: доступно с 4

См. также раздел