Функция FunctionTailcall3WithInfo

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

Синтаксис

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

Параметры

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

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

Комментарии

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

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

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

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

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

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

Кроме того, функция FunctionTailcall3WithInfo не должна вызывать управляемый код или вызывать выделение управляемой памяти каким-либо образом.

Требования

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

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

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

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

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