HandlerRoutine
A HandlerRoutine
function is a function that a console process specifies to handle control
signals received by the process. The function can have any name.
BOOL HandlerRoutine(
DWORD dwCtrlType |
// control signal type |
); |
|
Parameters
dwCtrlType
Indicates the
type of control signal received by the handler. This value is one of the
following:
Signal |
Description |
CTRL_C_EVENT |
A CTRL+C signal
was received, either from keyboard input or from a signal generated by the GenerateConsoleCtrlEvent |
CTRL_BREAK_EVENT |
A CTRL+BREAK
signal was received, either from keyboard input or from a signal generated by
GenerateConsoleCtrlEvent. |
CTRL_CLOSE_EVENT |
A signal
that the system sends to all processes attached to a console when the user
closes the console (either by choosing the Close command from the console
window s System menu, or by choosing the End Task command from the Task List). |
CTRL_LOGOFF_EVENT |
A signal
that the system sends to all console processes when a user is logging off.
This signal does not indicate which user is logging off, so no assumptions
can be made. |
CTRL_SHUTDOWN_EVENT |
A signal
that the system sends to all console processes when the system is shutting
down. |
Return Values
If the
function handles the control signal, it should return TRUE. If it returns
FALSE, the next handler function in the list of handlers for this process is
used.
Remarks
Each console
process has its own list of HandlerRoutine functions. Initially, this list
contains only a default handler function that calls ExitProcess
The
CTRL_CLOSE_EVENT, CTRL_LOGOFF_EVENT, and CTRL_SHUTDOWN_EVENT signals give the
process an opportunity to clean up before termination. A HandlerRoutine
called to handle any of these signals can do one of the following after
performing any cleanup operations:
Call the ExitProcess function to terminate the
process.
Return FALSE. If none of the
registered handler functions returns TRUE, the default handler terminates the
process.
Return TRUE. In this case, no
other handler functions are called, and the system displays a pop-up dialog box
that asks the user whether to terminate the process. The system also displays
the dialog box if the process does not respond within a certain time-out period
(5 seconds for CTRL_CLOSE_EVENT, and 20 seconds for CTRL_LOGOFF_EVENT and
CTRL_SHUTDOWN_EVENT).
A process can
use the SetProcessShutdownParameters function to prevent the
CTRL_LOGOFF_EVENT and CTRL_SHUTDOWN_EVENT dialog box from being displayed. In
this case, the system just terminates the process when a HandlerRoutine
returns TRUE or when the time-out period elapses.
See Also