每个控制台进程都有自己的控制处理函数列表,当进程收到CTRL + C,CTRL + BREAK或CTRL + CLOSE信号时,系统调用该函数。最初,每个进程的控制处理程序列表只包含调用ExitProcess函数的默认处理函数。控制台进程可以通过调用SetConsoleCtrlHandler函数来添加或删除其他处理函数。此函数不影响其他进程的控制处理程序列表。当控制台进程收到任何控制信号时,它会以最后一次注册的第一个方式调用处理函数,直到其中一个处理程序返回TRUE为止。如果处理程序没有返回TRUE,则调用默认处理程序。
以下的typedef声明说明了控制处理函数的格式。
typedef BOOL (*PHANDLER_ROUTINE)(DWORD dwCtrlType);
功能的【dwCtrlType】参数识别接收到哪个控制信号,返回值指示信号是否被处理。
有关控制处理函数的示例,请参阅注册控制处理函数.