Each console process has its own list of control handler functions that are called by the system when the process receives a CTRL+C, CTRL+BREAK, or CTRL+CLOSE signal. Initially, the list of control handlers for each process contains only a default handler function that calls the ExitProcess function. A console process can add or remove additional handler functions by calling the SetConsoleCtrlHandler function. This function does not affect the lists of control handlers for other processes. When a console process receives any of the control signals, it calls the handler functions on a last-registered, first-called basis until one of the handlers returns TRUE. If none of the handlers returns TRUE, the default handler is called.
The following typedef declaration illustrates the format of a control handler function.
typedef BOOL (*PHANDLER_ROUTINE)(DWORD dwCtrlType);
The function's dwCtrlType parameter identifies which control signal was received, and the return value indicates whether the signal was handled.
For an example of a control handler function, see Registering a Control Handler Function.