Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Уведомляет профилировщика о том, что функция вот-вот вернется вызывающей объекту, и предоставляет сведения о кадре стека и возвращаемом значении функции.
Синтаксис
void __stdcall FunctionLeave2 (
[in] FunctionID funcId,
[in] UINT_PTR clientData,
[in] COR_PRF_FRAME_INFO func,
[in] COR_PRF_FUNCTION_ARGUMENT_RANGE *retvalRange
);
Параметры
funcId [in] Идентификатор возвращаемой функции.
clientData [in] Идентификатор переназначенной функции, который профилировщик ранее указал с помощью функции FunctionIDMapper .
func [in] Значение COR_PRF_FRAME_INFO типа , указывающее сведения о кадре стека.
Профилировщик должен рассматривать его как непрозрачный дескриптор, который можно передать обратно в подсистему выполнения в методе ICorProfilerInfo2::GetFunctionInfo2 .
retvalRange [in] Указатель на структуру COR_PRF_FUNCTION_ARGUMENT_RANGE , указывающую расположение в памяти возвращаемого значения функции.
Чтобы получить доступ к возвращаемым сведениям о значении COR_PRF_ENABLE_FUNCTION_RETVAL , необходимо установить флаг . Профилировщик может использовать метод ICorProfilerInfo::SetEventMask для установки флагов событий.
Комментарии
Значения func параметров и retvalRange недопустимы после FunctionLeave2 возврата функцией, так как значения могут измениться или быть уничтожены.
Функция FunctionLeave2 является обратным вызовом; ее необходимо реализовать. Реализация должна использовать __declspecатрибут класса хранения (naked).
Подсистема выполнения не сохраняет регистры перед вызовом этой функции.
При записи необходимо сохранить все используемые регистры, включая регистры в единице с плавающей запятой (FPU).
При выходе необходимо восстановить стек, вырвав все параметры, которые были отправлены вызывающим элементом.
Реализация FunctionLeave2 не должна блокироваться, так как это приведет к задержке сборки мусора. Реализация не должна пытаться выполнить сборку мусора, так как стек может не находиться в состоянии, удобном для сборки мусора. При попытке сборки мусора среда выполнения будет блокироваться до тех пор, пока не FunctionLeave2 вернется.
Кроме того, FunctionLeave2 функция не должна вызывать в управляемый код или каким-либо образом вызывать выделение управляемой памяти.
Требования
Платформы: см. раздел Требования к системе.
Заголовка: CorProf.idl
Библиотека: CorGuids.lib
версии платформа .NET Framework: доступно с версии 2.0