Supported Dialog Box Service Time-out Operations
Winlogon implements two time-out operations, one for secure dialog boxes and the other for screen saver activation and termination.
While displaying a secure dialog box, such as logon or unlocking a workstation, Winlogon can time-out the dialog boxes and return an appropriate result code to the dialog box procedure. Winlogon provides a set of dialog box support functions for the GINA. The GINA must use these functions instead of their Windows counterparts to ensure that the GINA and Winlogon maintain appropriate control over the dialog boxes. Failure to use the Winlogon versions of these functions could result in unauthorized users gaining access to the system.
Winlogon dialog box services are provided by the following support functions.
|WlxMessageBox||Similar to the Windows MessageBox function.|
|WlxDialogBox||Similar to the Windows DialogBox function.|
|WlxDialogBoxIndirect||Similar to the Windows DialogBoxIndirect function.|
|WlxDialogBoxParam||Similar to the Windows DialogBoxParam function.|
|WlxDialogBoxIndirectParam||Similar to the Windows DialogBoxIndirectParam function.|
GINA DLLs can also receive WLX_WM_SAS messages from Winlogon. These messages are sent to active dialog boxes if an secure attention sequence (SAS) is received. This is useful if the GINA is in the process of prompting for the matching PIN for a smart card, and the card is removed from the smart card reader. Winlogon uses WLX_DLG_SAS as the EndDialog result code when an SAS event occurs during a dialog box operation.
Time-outs are also delivered in this manner. A WLX_WM_SAS message is sent with WLX_SAS_TYPE_SCRNSVR_TIMEOUT or WLX_SAS_TYPE_TIMEOUT. The dialog box will end with an appropriate exit code to allow GINA developers to hook the time-out notifications.
GINA dialog boxes can be terminated by Winlogon by using the code WLX_DLG_USER_LOGOFF. This indicates that the user has logged off during the running of the dialog box (for example, by calling the ExitWindowsEx function from another thread).