FunctionTailcall 函数

通知探查器当前正在执行的函数即将对另一个函数执行尾调用。

注意

.NET Framework 2.0 版中已弃用 FunctionTailcall 函数。 它将继续运行,但会导致性能下降。 请改用 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

另请参阅