3 * Copyright (C) 2003 ReactOS Team
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.
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.
15 * You should have received a copy of the GNU General Public License along
16 * with this program; if not, write to the Free Software Foundation, Inc.,
17 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
19 /* COPYRIGHT: See COPYING in the top level directory
20 * PROJECT: ReactOS winlogon
21 * FILE: subsys/system/winlogon/winlogon.h
26 #ifndef __WINLOGON_MAIN_H__
27 #define __WINLOGON_MAIN_H__
29 #define USE_GETLASTINPUTINFO
31 #define WIN32_NO_STATUS
43 #include <reactos/winlogon.h>
48 typedef BOOL (WINAPI
* PFWLXNEGOTIATE
) (DWORD
, DWORD
*);
49 typedef BOOL (WINAPI
* PFWLXINITIALIZE
) (LPWSTR
, HANDLE
, PVOID
, PVOID
, PVOID
*);
50 typedef VOID (WINAPI
* PFWLXDISPLAYSASNOTICE
) (PVOID
);
51 typedef int (WINAPI
* PFWLXLOGGEDOUTSAS
) (PVOID
, DWORD
, PLUID
, PSID
, PDWORD
,
52 PHANDLE
, PWLX_MPR_NOTIFY_INFO
,
54 typedef BOOL (WINAPI
* PFWLXACTIVATEUSERSHELL
) (PVOID
, PWSTR
, PWSTR
, PVOID
);
55 typedef int (WINAPI
* PFWLXLOGGEDONSAS
) (PVOID
, DWORD
, PVOID
);
56 typedef VOID (WINAPI
* PFWLXDISPLAYLOCKEDNOTICE
) (PVOID
);
57 typedef int (WINAPI
* PFWLXWKSTALOCKEDSAS
) (PVOID
, DWORD
);
58 typedef BOOL (WINAPI
* PFWLXISLOCKOK
) (PVOID
);
59 typedef BOOL (WINAPI
* PFWLXISLOGOFFOK
) (PVOID
);
60 typedef VOID (WINAPI
* PFWLXLOGOFF
) (PVOID
);
61 typedef VOID (WINAPI
* PFWLXSHUTDOWN
) (PVOID
, DWORD
);
65 typedef BOOL (WINAPI
* PFWLXSCREENSAVERNOTIFY
) (PVOID
, BOOL
*);
66 typedef BOOL (WINAPI
* PFWLXSTARTAPPLICATION
) (PVOID
, PWSTR
, PVOID
, PWSTR
);
70 typedef BOOL (WINAPI
* PFWLXNETWORKPROVIDERLOAD
) (PVOID
, PWLX_MPR_NOTIFY_INFO
);
71 typedef BOOL (WINAPI
* PFWLXDISPLAYSTATUSMESSAGE
) (PVOID
, HDESK
, DWORD
, PWSTR
, PWSTR
);
72 typedef BOOL (WINAPI
* PFWLXGETSTATUSMESSAGE
) (PVOID
, DWORD
*, PWSTR
, DWORD
);
73 typedef BOOL (WINAPI
* PFWLXREMOVESTATUSMESSAGE
) (PVOID
);
75 typedef struct _GINAFUNCTIONS
77 /* Functions always available for a valid GINA */
78 PFWLXNEGOTIATE WlxNegotiate
; /* optional */
79 PFWLXINITIALIZE WlxInitialize
;
81 /* Functions available if WlxVersion >= WLX_VERSION_1_0 (MS Windows 3.5.0) */
82 PFWLXDISPLAYSASNOTICE WlxDisplaySASNotice
;
83 PFWLXLOGGEDOUTSAS WlxLoggedOutSAS
;
84 PFWLXACTIVATEUSERSHELL WlxActivateUserShell
;
85 PFWLXLOGGEDONSAS WlxLoggedOnSAS
;
86 PFWLXDISPLAYLOCKEDNOTICE WlxDisplayLockedNotice
;
87 PFWLXWKSTALOCKEDSAS WlxWkstaLockedSAS
;
88 PFWLXISLOCKOK WlxIsLockOk
;
89 PFWLXISLOGOFFOK WlxIsLogoffOk
;
90 PFWLXLOGOFF WlxLogoff
;
91 PFWLXSHUTDOWN WlxShutdown
;
93 /* Functions available if WlxVersion >= WLX_VERSION_1_1 (MS Windows 3.5.1) */
94 PFWLXSCREENSAVERNOTIFY WlxScreenSaverNotify
; /* optional */
95 PFWLXSTARTAPPLICATION WlxStartApplication
; /* optional */
97 /* Functions available if WlxVersion >= WLX_VERSION_1_2 (MS Windows NT 4.0) */
99 /* Functions available if WlxVersion >= WLX_VERSION_1_3 (MS Windows 2000) */
100 PFWLXNETWORKPROVIDERLOAD WlxNetworkProviderLoad
; /* not called ATM */
101 PFWLXDISPLAYSTATUSMESSAGE WlxDisplayStatusMessage
;
102 PFWLXGETSTATUSMESSAGE WlxGetStatusMessage
; /* doesn't need to be called */
103 PFWLXREMOVESTATUSMESSAGE WlxRemoveStatusMessage
;
105 /* Functions available if WlxVersion >= WLX_VERSION_1_4 (MS Windows XP) */
106 } GINAFUNCTIONS
, *PGINAFUNCTIONS
;
108 typedef struct _GINAINSTANCE
110 HMODULE hDllInstance
;
111 GINAFUNCTIONS Functions
;
114 BOOL UseCtrlAltDelete
;
115 } GINAINSTANCE
, *PGINAINSTANCE
;
117 /* FIXME: put in an enum */
118 /* See http://msdn.microsoft.com/library/default.asp?url=/library/en-us/secauthn/security/winlogon_states.asp */
119 #define WKSTA_IS_LOGGED_OFF 0
120 #define WKSTA_IS_LOGGED_ON 1
121 #define WKSTA_IS_LOCKED 2
123 #define LockWorkstation(Session)
124 #define UnlockWorkstation(Session)
126 typedef struct _WLSESSION
133 HWINSTA InteractiveWindowStation
;
134 LPWSTR InteractiveWindowStationName
;
135 HDESK ApplicationDesktop
;
136 HDESK WinlogonDesktop
;
137 HDESK ScreenSaverDesktop
;
142 DWORD DialogTimeout
; /* Timeout for dialog boxes, in seconds */
144 /* Screen-saver informations */
145 #ifndef USE_GETLASTINPUTINFO
149 HANDLE hEndOfScreenSaverThread
;
150 HANDLE hScreenSaverParametersChanged
;
151 HANDLE hUserActivity
;
152 HANDLE hEndOfScreenSaver
;
153 #ifndef USE_GETLASTINPUTINFO
157 /* Logon informations */
159 WLX_MPR_NOTIFY_INFO MprNotifyInfo
;
160 WLX_PROFILE_V2_0
*Profile
;
161 } WLSESSION
, *PWLSESSION
;
163 extern HINSTANCE hAppInstance
;
164 extern PWLSESSION WLSession
;
166 #define WLX_SHUTTINGDOWN(Status) \
167 (((Status) == WLX_SAS_ACTION_SHUTDOWN) || \
168 ((Status) == WLX_SAS_ACTION_SHUTDOWN_POWER_OFF) || \
169 ((Status) == WLX_SAS_ACTION_SHUTDOWN_REBOOT) \
172 #define WLX_SUSPENDING(Status) \
173 (((Status) == WLX_SAS_ACTION_SHUTDOWN_SLEEP) || \
174 ((Status) == WLX_SAS_ACTION_SHUTDOWN_SLEEP2) || \
175 ((Status) == WLX_SAS_ACTION_SHUTDOWN_HIBERNATE) \
180 UpdatePerUserSystemParameters(DWORD dwUnknown
,
186 IN BOOL UserProfile
);
190 IN OUT PWLSESSION Session
);
194 InitializeScreenSaver(
195 IN OUT PWLSESSION Session
);
199 IN PWLSESSION Session
);
203 DisplayStatusMessage(
204 IN PWLSESSION Session
,
210 IN PWLSESSION Session
);
215 IN OUT PWLSESSION Session
);
217 CreateWindowStationAndDesktops(
218 IN OUT PWLSESSION Session
);
222 IN OUT PWLSESSION Session
,
225 VOID WINAPI
WlxUseCtrlAltDel(HANDLE hWlx
);
226 VOID WINAPI
WlxSetContextPointer(HANDLE hWlx
, PVOID pWlxContext
);
227 VOID WINAPI
WlxSasNotify(HANDLE hWlx
, DWORD dwSasType
);
228 BOOL WINAPI
WlxSetTimeout(HANDLE hWlx
, DWORD Timeout
);
229 int WINAPI
WlxAssignShellProtection(HANDLE hWlx
, HANDLE hToken
, HANDLE hProcess
, HANDLE hThread
);
230 int WINAPI
WlxMessageBox(HANDLE hWlx
, HWND hwndOwner
, LPWSTR lpszText
, LPWSTR lpszTitle
, UINT fuStyle
);
231 int WINAPI
WlxDialogBox(HANDLE hWlx
, HANDLE hInst
, LPWSTR lpszTemplate
, HWND hwndOwner
, DLGPROC dlgprc
);
232 int WINAPI
WlxDialogBoxParam(HANDLE hWlx
, HANDLE hInst
, LPWSTR lpszTemplate
, HWND hwndOwner
, DLGPROC dlgprc
, LPARAM dwInitParam
);
233 int WINAPI
WlxDialogBoxIndirect(HANDLE hWlx
, HANDLE hInst
, LPCDLGTEMPLATE hDialogTemplate
, HWND hwndOwner
, DLGPROC dlgprc
);
234 int WINAPI
WlxDialogBoxIndirectParam(HANDLE hWlx
, HANDLE hInst
, LPCDLGTEMPLATE hDialogTemplate
, HWND hwndOwner
, DLGPROC dlgprc
, LPARAM dwInitParam
);
235 int WINAPI
WlxSwitchDesktopToUser(HANDLE hWlx
);
236 int WINAPI
WlxSwitchDesktopToWinlogon(HANDLE hWlx
);
237 int WINAPI
WlxChangePasswordNotify(HANDLE hWlx
, PWLX_MPR_NOTIFY_INFO pMprInfo
, DWORD dwChangeInfo
);
238 BOOL WINAPI
WlxGetSourceDesktop(HANDLE hWlx
, PWLX_DESKTOP
* ppDesktop
);
239 BOOL WINAPI
WlxSetReturnDesktop(HANDLE hWlx
, PWLX_DESKTOP pDesktop
);
240 BOOL WINAPI
WlxCreateUserDesktop(HANDLE hWlx
, HANDLE hToken
, DWORD Flags
, PWSTR pszDesktopName
, PWLX_DESKTOP
* ppDesktop
);
241 int WINAPI
WlxChangePasswordNotifyEx(HANDLE hWlx
, PWLX_MPR_NOTIFY_INFO pMprInfo
, DWORD dwChangeInfo
, PWSTR ProviderName
, PVOID Reserved
);
242 BOOL WINAPI
WlxCloseUserDesktop(HANDLE hWlx
, PWLX_DESKTOP pDesktop
, HANDLE hToken
);
243 BOOL WINAPI
WlxSetOption(HANDLE hWlx
, DWORD Option
, ULONG_PTR Value
, ULONG_PTR
* OldValue
);
244 BOOL WINAPI
WlxGetOption(HANDLE hWlx
, DWORD Option
, ULONG_PTR
* Value
);
245 VOID WINAPI
WlxWin31Migrate(HANDLE hWlx
);
246 BOOL WINAPI
WlxQueryClientCredentials(PWLX_CLIENT_CREDENTIALS_INFO_V1_0 pCred
);
247 BOOL WINAPI
WlxQueryInetConnectorCredentials(PWLX_CLIENT_CREDENTIALS_INFO_V1_0 pCred
);
248 DWORD WINAPI
WlxQueryConsoleSwitchCredentials(PWLX_CONSOLESWITCH_CREDENTIALS_INFO_V1_0 pCred
);
249 BOOL WINAPI
WlxQueryTsLogonCredentials(PWLX_CLIENT_CREDENTIALS_INFO_V2_0 pCred
);
250 BOOL WINAPI
WlxDisconnect(VOID
);
251 DWORD WINAPI
WlxQueryTerminalServicesData(HANDLE hWlx
, PWLX_TERMINAL_SERVICES_DATA pTSData
, WCHAR
* UserName
, WCHAR
* Domain
);
253 #endif /* __WINLOGON_MAIN_H__ */