HandlerRoutine

【勇芳软件工作室】汉化HomePreviousNext

一个HandlerRoutine函数是控制台进程指定的一个函数来处理进程接收到的控制信号。该函数可以有任何名称。

BOOL HandlerRoutine(

DWORD 【dwCtrlType】//控制信号类型
); 

参数

【dwCtrlType】

指示处理程序接收到的控制信号的类型。此值为以下之一:

信号描述
CTRL_C_EVENT从键盘输入或由GenerateConsoleCtrlEvent功能生成的信号接收到CTRL + C信号。
CTRL_BREAK_EVENT接收到CTRL + BREAK信号,无论是从键盘输入还是从GenerateConsoleCtrlEvent生成的信号。
CTRL_CLOSE_EVENT当用户关闭控制台时(通过从控制台窗口的“系统”菜单中选择“关闭”命令,或从“任务列表”中选择“结束任务”命令),系统将发送给连接到控制台的所有进程的信号。
CTRL_LOGOFF_EVENT系统在用户注销时发送到所有控制台进程的信号。该信号不指示哪个用户正在注销,因此不能做任何假设。
CTRL_SHUTDOWN_EVENT当系统关闭时系统发送到所有控制台进程的信号。

返回值

如果函数处理控制信号,它应该返回TRUE。如果返回FALSE,则使用该进程处理程序列表中的下一个处理函数。

备注

每个控制台进程都有自己的HandlerRoutine功能列表。最初,此列表仅包含调用ExitProcess的默认处理函数。控制台进程通过调用SetConsoleCtrlHandler函数来添加或删除其他处理函数,这不影响其他进程的处理函数列表。当控制台进程接收到任何控制信号时,其处理函数在最后注册的第一个基础上被调用,直到其中一个处理程序返回TRUE为止。如果处理程序没有返回TRUE,则调用默认处理程序。

CTRL_CLOSE_EVENT,CTRL_LOGOFF_EVENT和CTRL_SHUTDOWN_EVENT信号为进程提供了在终止前清理的机会。调用处理任何这些信号的HandlerRoutine可以在执行任何清除操作后执行以下操作之一:

*调用ExitProcess函数来终止进程。

*返回FALSE。如果没有注册的处理程序函数返回TRUE,则默认处理程序终止进程。

*返回TRUE。在这种情况下,不会调用其他处理函数,系统会显示弹出对话框,询问用户是否终止进程。如果进程在一定的超时时间内没有响应(CTRL_CLOSE_EVENT为5秒,CTRL_LOGOFF_EVENT和CTRL_SHUTDOWN_EVENT为20秒),系统还会显示该对话框。

一个进程可以使用SetProcessShutdownParameters函数来阻止CTRL_LOGOFF_EVENT和CTRL_SHUTDOWN_EVENT对话框的显示。在这种情况下,当HandlerRoutine返回TRUE或超时时间过去时,系统就会终止进程。

也可以看看

ExitProcess, GenerateConsoleCtrlEvent, GetProcessShutdownParameters, SetConsoleCtrlHandler, SetProcessShutdownParameters