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


Функция FunctionTailcall

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

Примечание

Функция FunctionTailcall устарела в платформа .NET Framework версии 2.0. Он будет продолжать работать, но повлечет за собой снижение производительности. Вместо этого используйте функцию FunctionTailcall2 .

Синтаксис

void __stdcall FunctionTailcall (  
    [in] FunctionID funcID  
);  

Параметры

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

Комментарии

Целевая функция в заключительном вызове будет использовать текущий кадр стека и будет возвращаться непосредственно вызывающей функции, которая сделала вызов хвоста. Это означает, что обратный вызов FunctionLeave не будет выполняться для функции, которая является целевым объектом для заключительного вызова.

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

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

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

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

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

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

Требования

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

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

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

платформа .NET Framework версии: 1.1, 1.0

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