summaryrefslogtreecommitdiffstats
path: root/private/windows/gina/winlogon/timeout.h
blob: 8f679d671d3b4c7c50991d83bcf757f54b4e4906 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
/****************************** Module Header ******************************\
* Module Name: timeout.h
*
* Copyright (c) 1991, Microsoft Corporation
*
* Defines apis to support dialog and message-box input timeouts
*
* History:
* 12-05-91 Davidc       Created.
\***************************************************************************/


//
// Define timeout type - represents timeout value in seconds
//
typedef ULONG TIMEOUT;
typedef TIMEOUT * PTIMEOUT;


//
// Define special timeout values
//
// The top bit of the timeout value is the 'notify bit'.
// This bit is only used when the timeout value = TIMEOUT_NONE
//
// When a screen-saver timeout occurs, the timeout stack is searched
// from the top down for the first occurrence of
//  1) A window with a timeout OR
//  2) The first TIMEOUT_NONE window with the notify-bit set.
//
// In case 1), the window is timed-out and returns DLG_SCREEN_SAVER_TIMEOUT.
//
// In case 2), a WM_SCREEN_SAVER_TIMEOUT message is posted to the window.
//
// The notify bit is never inherited. If required, it must be specified in
// addition to TIMEOUT_CURRENT.
//
// NOTE SAS messages are always sent to the topmost timeout window
//
// NOTE User logoff messages cause the top window to return DLG_USER_LOGOFF
// if it has a non-0 timeout, otherwise the window receives a WM_USER_LOGOFF
// message.
//

#define TIMEOUT_VALUE_MASK  (0x0fffffff)
#define TIMEOUT_NOTIFY_MASK (0x10000000)

#define TIMEOUT_VALUE(t)    (t & TIMEOUT_VALUE_MASK)
#define TIMEOUT_NOTIFY(t)   (t & TIMEOUT_NOTIFY_MASK)

#define TIMEOUT_SS_NOTIFY   (TIMEOUT_NOTIFY_MASK)
#define TIMEOUT_CURRENT     (TIMEOUT_VALUE_MASK)    // Use existing timeout
#define TIMEOUT_NONE        (0)                     // Disable input timeout






//
// Exported function prototypes
//


LONG ForwardMessage(
    PGLOBALS pGlobals,
    UINT    Message,
    WPARAM  wParam,
    LPARAM  lParam
    );

VOID ProcessDialogTimeout(
    HWND    hwnd,
    UINT    Message,
    DWORD   wParam,
    LONG    lParam
    );

int TimeoutMessageBoxEx(
    PGLOBALS    pGlobals,
    HWND hWnd,
    UINT IdText,
    UINT IdCaption,
    UINT wType,
    TIMEOUT Timeout
    );

int TimeoutMessageBoxlpstr(
    PGLOBALS pGlobals,
    HWND hWnd,
    LPTSTR Text,
    LPTSTR Caption,
    UINT wType,
    TIMEOUT Timeout
    );

int
TimeoutDialogBoxParam(
    PGLOBALS    pGlobals,
    HANDLE hInstance,
    LPTSTR lpTemplateName,
    HWND hWndParent,
    DLGPROC lpDialogFunc,
    LONG dwInitParam,
    TIMEOUT Timeout
    );

int
TimeoutDialogBoxIndirectParam(
    PGLOBALS    pGlobals,
    HANDLE hInstance,
    LPDLGTEMPLATE Template,
    HWND hwndParent,
    DLGPROC lpDialogFunc,
    LONG dwInitParam,
    TIMEOUT Timeout
    );

BOOL EndTopDialog(
    HWND    hwnd,
    int DlgResult
    );

BOOL SetTopTimeout(HWND hwnd);


BOOL
TimeoutUpdateTopTimeout(
    DWORD   Timeout);