remove whitespace from end of lines
[reactos.git] / reactos / subsys / system / winlogon / winlogon.h
1 /*
2 * ReactOS kernel
3 * Copyright (C) 2003 ReactOS Team
4 *
5 * This program is free software; you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License as published by
7 * the Free Software Foundation; either version 2 of the License, or
8 * (at your option) any later version.
9 *
10 * This program is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 * GNU General Public License for more details.
14 *
15 * You should have received a copy of the GNU General Public License
16 * along with this program; if not, write to the Free Software
17 * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
18 */
19 /* $Id$
20 * COPYRIGHT: See COPYING in the top level directory
21 * PROJECT: ReactOS winlogon
22 * FILE: subsys/system/winlogon/winlogon.h
23 * PURPOSE: Winlogon
24 * PROGRAMMER:
25 */
26
27 #ifndef __WINLOGON_MAIN_H__
28 #define __WINLOGON_MAIN_H__
29
30 #include <winwlx.h>
31
32 VOID WINAPI WlxUseCtrlAltDel(HANDLE hWlx);
33 VOID WINAPI WlxSetContextPointer(HANDLE hWlx, PVOID pWlxContext);
34 VOID WINAPI WlxSasNotify(HANDLE hWlx, DWORD dwSasType);
35 BOOL WINAPI WlxSetTimeout(HANDLE hWlx, DWORD Timeout);
36 int WINAPI WlxAssignShellProtection(HANDLE hWlx, HANDLE hToken, HANDLE hProcess, HANDLE hThread);
37 int WINAPI WlxMessageBox(HANDLE hWlx, HWND hwndOwner, LPWSTR lpszText, LPWSTR lpszTitle, UINT fuStyle);
38 int WINAPI WlxDialogBox(HANDLE hWlx, HANDLE hInst, LPWSTR lpszTemplate, HWND hwndOwner, DLGPROC dlgprc);
39 int WINAPI WlxDialogBoxParam(HANDLE hWlx, HANDLE hInst, LPWSTR lpszTemplate, HWND hwndOwner, DLGPROC dlgprc, LPARAM dwInitParam);
40 int WINAPI WlxDialogBoxIndirect(HANDLE hWlx, HANDLE hInst, LPCDLGTEMPLATE hDialogTemplate, HWND hwndOwner, DLGPROC dlgprc);
41 int WINAPI WlxDialogBoxIndirectParam(HANDLE hWlx, HANDLE hInst, LPCDLGTEMPLATE hDialogTemplate, HWND hwndOwner, DLGPROC dlgprc, LPARAM dwInitParam);
42 int WINAPI WlxSwitchDesktopToUser(HANDLE hWlx);
43 int WINAPI WlxSwitchDesktopToWinlogon(HANDLE hWlx);
44 int WINAPI WlxChangePasswordNotify(HANDLE hWlx, PWLX_MPR_NOTIFY_INFO pMprInfo, DWORD dwChangeInfo);
45 BOOL WINAPI WlxGetSourceDesktop(HANDLE hWlx, PWLX_DESKTOP* ppDesktop);
46 BOOL WINAPI WlxSetReturnDesktop(HANDLE hWlx, PWLX_DESKTOP pDesktop);
47 BOOL WINAPI WlxCreateUserDesktop(HANDLE hWlx, HANDLE hToken, DWORD Flags, PWSTR pszDesktopName, PWLX_DESKTOP* ppDesktop);
48 int WINAPI WlxChangePasswordNotifyEx(HANDLE hWlx, PWLX_MPR_NOTIFY_INFO pMprInfo, DWORD dwChangeInfo, PWSTR ProviderName, PVOID Reserved);
49 BOOL WINAPI WlxCloseUserDesktop(HANDLE hWlx, PWLX_DESKTOP pDesktop, HANDLE hToken);
50 BOOL WINAPI WlxSetOption(HANDLE hWlx, DWORD Option, ULONG_PTR Value, ULONG_PTR* OldValue);
51 BOOL WINAPI WlxGetOption(HANDLE hWlx, DWORD Option, ULONG_PTR* Value);
52 VOID WINAPI WlxWin31Migrate(HANDLE hWlx);
53 BOOL WINAPI WlxQueryClientCredentials(PWLX_CLIENT_CREDENTIALS_INFO_V1_0 pCred);
54 BOOL WINAPI WlxQueryInetConnectorCredentials(PWLX_CLIENT_CREDENTIALS_INFO_V1_0 pCred);
55 DWORD WINAPI WlxQueryConsoleSwitchCredentials(PWLX_CONSOLESWITCH_CREDENTIALS_INFO_V1_0 pCred);
56 BOOL WINAPI WlxQueryTsLogonCredentials(PWLX_CLIENT_CREDENTIALS_INFO_V2_0 pCred);
57 BOOL WINAPI WlxDisconnect(void);
58 DWORD WINAPI WlxQueryTerminalServicesData(HANDLE hWlx, PWLX_TERMINAL_SERVICES_DATA pTSData, WCHAR* UserName, WCHAR* Domain);
59
60 typedef BOOL (WINAPI * PFWLXNEGOTIATE) (DWORD, DWORD *);
61 typedef BOOL (WINAPI * PFWLXINITIALIZE) (LPWSTR, HANDLE, PVOID, PVOID, PVOID *);
62 typedef VOID (WINAPI * PFWLXDISPLAYSASNOTICE) (PVOID);
63 typedef int (WINAPI * PFWLXLOGGEDOUTSAS) (PVOID, DWORD, PLUID, PSID, PDWORD,
64 PHANDLE, PWLX_MPR_NOTIFY_INFO,
65 PVOID *);
66 typedef BOOL (WINAPI * PFWLXACTIVATEUSERSHELL) (PVOID, PWSTR, PWSTR, PVOID);
67 typedef int (WINAPI * PFWLXLOGGEDONSAS) (PVOID, DWORD, PVOID);
68 typedef VOID (WINAPI * PFWLXDISPLAYLOCKEDNOTICE) (PVOID);
69 typedef int (WINAPI * PFWLXWKSTALOCKEDSAS) (PVOID, DWORD);
70 typedef BOOL (WINAPI * PFWLXISLOCKOK) (PVOID);
71 typedef BOOL (WINAPI * PFWLXISLOGOFFOK) (PVOID);
72 typedef VOID (WINAPI * PFWLXLOGOFF) (PVOID);
73 typedef VOID (WINAPI * PFWLXSHUTDOWN) (PVOID, DWORD);
74
75 /* version 1.1 */
76
77 typedef BOOL (WINAPI * PFWLXSCREENSAVERNOTIFY) (PVOID, BOOL *);
78 typedef BOOL (WINAPI * PFWLXSTARTAPPLICATION) (PVOID, PWSTR, PVOID, PWSTR);
79
80 /* version 1.3 */
81
82 typedef BOOL (WINAPI * PFWLXNETWORKPROVIDERLOAD) (PVOID, PWLX_MPR_NOTIFY_INFO);
83 typedef BOOL (WINAPI * PFWLXDISPLAYSTATUSMESSAGE) (PVOID, HDESK, DWORD, PWSTR, PWSTR);
84 typedef BOOL (WINAPI * PFWLXGETSTATUSMESSAGE) (PVOID, DWORD *, PWSTR, DWORD);
85 typedef BOOL (WINAPI * PFWLXREMOVESTATUSMESSAGE) (PVOID);
86
87 typedef struct _MSGINAFUNCTIONS
88 {
89 PFWLXNEGOTIATE WlxNegotiate;
90 PFWLXINITIALIZE WlxInitialize;
91 PFWLXDISPLAYSASNOTICE WlxDisplaySASNotice;
92 PFWLXLOGGEDOUTSAS WlxLoggedOutSAS;
93 PFWLXACTIVATEUSERSHELL WlxActivateUserShell;
94 PFWLXLOGGEDONSAS WlxLoggedOnSAS;
95 PFWLXDISPLAYLOCKEDNOTICE WlxDisplayLockedNotice;
96 PFWLXWKSTALOCKEDSAS WlxWkstaLockedSAS;
97 PFWLXISLOCKOK WlxIsLockOk;
98 PFWLXISLOGOFFOK WlxIsLogoffOk;
99 PFWLXLOGOFF WlxLogoff;
100 PFWLXSHUTDOWN WlxShutdown;
101
102 PFWLXSCREENSAVERNOTIFY WlxScreenSaverNotify;
103 PFWLXSTARTAPPLICATION WlxStartApplication;
104
105 PFWLXNETWORKPROVIDERLOAD WlxNetworkProviderLoad;
106 PFWLXDISPLAYSTATUSMESSAGE WlxDisplayStatusMessage;
107 PFWLXGETSTATUSMESSAGE WlxGetStatusMessage;
108 PFWLXREMOVESTATUSMESSAGE WlxRemoveStatusMessage;
109 } MSGINAFUNCTIONS, *PMSGINAFUNCTIONS;
110
111 typedef struct _MSGINAINSTANCE
112 {
113 HMODULE hDllInstance;
114 MSGINAFUNCTIONS Functions;
115 PVOID Context;
116 DWORD Version;
117 } MSGINAINSTANCE, *PMSGINAINSTANCE;
118
119 typedef struct _WLSESSION
120 {
121 MSGINAINSTANCE MsGina;
122 DWORD SASAction;
123 DWORD LogonStatus;
124 BOOL SuppressStatus;
125 BOOL TaskManHotkey;
126 HWND SASWindow;
127 HWINSTA InteractiveWindowStation;
128 LPWSTR InteractiveWindowStationName;
129 HDESK ApplicationDesktop;
130 HDESK WinlogonDesktop;
131 HDESK ScreenSaverDesktop;
132 LUID LogonId;
133 } WLSESSION, *PWLSESSION;
134
135 extern HINSTANCE hAppInstance;
136 extern PWLSESSION WLSession;
137
138 BOOL
139 InitializeSAS(PWLSESSION Session);
140 void
141 DispatchSAS(PWLSESSION Session, DWORD dwSasType);
142
143 #define LOGON_INITIALIZING 1
144 #define LOGON_NONE 2
145 #define LOGON_SHOWINGLOGON 3
146
147 #define LOGON_SHUTDOWN 9
148
149 #define WLX_SHUTTINGDOWN(Status) \
150 (((Status) == WLX_SAS_ACTION_SHUTDOWN) || \
151 ((Status) == WLX_SAS_ACTION_SHUTDOWN_POWER_OFF) || \
152 ((Status) == WLX_SAS_ACTION_SHUTDOWN_REBOOT) \
153 )
154
155 #define WLX_SUSPENDING(Status) \
156 (((Status) == WLX_SAS_ACTION_SHUTDOWN_SLEEP) || \
157 ((Status) == WLX_SAS_ACTION_SHUTDOWN_SLEEP2) || \
158 ((Status) == WLX_SAS_ACTION_SHUTDOWN_HIBERNATE) \
159 )
160
161 #define RemoveStatusMessage(Session) \
162 Session->MsGina.Functions.WlxRemoveStatusMessage(Session->MsGina.Context);
163 #define DisplaySASNotice(Session) \
164 Session->MsGina.Functions.WlxDisplaySASNotice(Session->MsGina.Context);
165
166 /* user32 */
167 BOOL WINAPI
168 UpdatePerUserSystemParameters(DWORD dwUnknown,
169 DWORD dwReserved);
170
171 #endif /* __WINLOGON_MAIN_H__ */
172
173 /* EOF */