ReactOS 0.4.16-dev-981-g80eb313
winlogon.h
Go to the documentation of this file.
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 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.
18 */
19/* COPYRIGHT: See COPYING in the top level directory
20 * PROJECT: ReactOS winlogon
21 * FILE: base/system/winlogon/winlogon.h
22 * PURPOSE: Winlogon
23 * PROGRAMMER:
24 */
25
26#ifndef __WINLOGON_MAIN_H__
27#define __WINLOGON_MAIN_H__
28
29#define USE_GETLASTINPUTINFO
30
31
32#include <stdarg.h>
33
34/* PSDK/NDK Headers */
35#define WIN32_NO_STATUS
36#include <windef.h>
37#include <winbase.h>
38#include <wingdi.h>
39#include <winuser.h>
40#include <winreg.h>
41#include <winwlx.h>
42#include <ndk/rtlfuncs.h>
43#include <ndk/exfuncs.h>
44#include <ndk/kefuncs.h>
45#include <strsafe.h>
46
47/* PSEH for SEH Support */
48#include <pseh/pseh2.h>
49
50#include <reactos/undocuser.h>
51#include <reactos/undocmpr.h>
52
53BOOL
56 IN HWINSTA hWindowStation,
57 IN PLUID pluid,
58 IN PSID psid OPTIONAL,
59 IN DWORD size);
60
61#include <wine/debug.h>
63
64#include "resource.h"
65
71 PVOID *);
80
81/* version 1.1 */
82
85
86/* version 1.3 */
87
92
93typedef struct _GINAFUNCTIONS
94{
95 /* Functions always available for a valid GINA */
98
99 /* Functions available if WlxVersion >= WLX_VERSION_1_0 (MS Windows 3.5.0) */
110
111 /* Functions available if WlxVersion >= WLX_VERSION_1_1 (MS Windows 3.5.1) */
114
115 /* Functions available if WlxVersion >= WLX_VERSION_1_2 (MS Windows NT 4.0) */
116
117 /* Functions available if WlxVersion >= WLX_VERSION_1_3 (MS Windows 2000) */
120 PFWLXGETSTATUSMESSAGE WlxGetStatusMessage; /* doesn't need to be called */
122
123 /* Functions available if WlxVersion >= WLX_VERSION_1_4 (MS Windows XP) */
125
126typedef struct _GINAINSTANCE
127{
134
135
136/*
137 * The picture Microsoft is trying to paint here
138 * (https://learn.microsoft.com/en-us/windows/win32/secauthn/winlogon-states)
139 * about the Winlogon states is a little too simple.
140 *
141 * The real picture should look more like this:
142 *
143 * STATE_INIT
144 * Initial state. Required for session initialization. After initialization,
145 * the state will automatically change to STATE_LOGGED_OFF.
146 *
147 * STATE_LOGGED_OFF
148 * User is logged off. Winlogon shows the "Press Ctrl-Alt-Del for logon"
149 * dialog. The state changes to STATE_LOGGED_OFF_SAS when the user presses
150 * "Ctrl-Alt-Del". If DisableCAD is true, the state will automatically
151 * change to STATE_LOGGED_OFF_SAS without showing the dialog.
152 *
153 * STATE_LOGGED_OFF_SAS
154 * State shows the logon dialog. Entering the right credentials and pressing
155 * "OK" changes the state to STATE_LOGGED_ON. Pressing "Cancel" or a timeout
156 * changes the state back to STATE_LOGGED_OFF.
157 *
158 * STATE_LOGGED_ON
159 * User is logged on. Winlogon does not show any dialog. Pressing
160 * "Ctrl-Alt-Del" changes the state to STATE_LOGGED_ON_SAS and user
161 * inactivity changes the state to STATE_SCREENSAVER.
162 *
163 * STATE_LOGGED_ON_SAS
164 * Winlogon shows the security dialog. Pressing "Cancel" or "Task Manager"
165 * or a timeout change the state back to STATE_LOGGED_ON. Pressing "Change
166 * Password" does not change the state, because the security dialog is still
167 * visible behind the change password dialog. Pressing "Log off" changes the
168 * state to STATE_LOGGING_OFF. Pressing "Lock Computer" changes the state to
169 * STATE_LOCKED. Pressing "Shutdown" changes the state to
170 * STATE_SHUTTING_DOWN.
171 *
172 * STATE_LOCKED
173 * Winlogon shows the locked message dialog. When the user presses "Ctrl-
174 * Alt-Del" the state changes to STATE_LOCKED_SAS. If DisableCAD is true,
175 * the state will automatically change to STATE_LOCKED_SAS without showing
176 * the dialog.
177 *
178 * STATE_LOCKED_SAS
179 * Winlogon shows the unlock dialog. Pressing "Cancel" or a timeout will
180 * change the state back to STATE_LOCKED. Entering the right credentials and
181 * pressing "OK" unlocks the computer and changes the state to
182 * STATE_LOGGED_ON.
183 *
184 * STATE_LOGGING_OFF
185 * Winlogon shows the logoff dialog. Pressing "Cancel" or a timeout changes
186 * the state back to STATE_LOGGED_ON_SAS. Pressing "OK" logs off the user
187 * and changes the state to STATE_LOGGED_OFF.
188 *
189 * STATE_SHUTTING_DOWN
190 * Winlogon shows the shutdown dialog. Pressing "Cancel" or a timeout will
191 * change the state back to STATE_LOGGED_ON_SAS. Pressing "OK" will change
192 * the state to STATE_SHUT_DOWN.
193 *
194 * STATE_SHUT_DOWN
195 * Terminates Winlogon and initiates shut-down.
196 *
197 * STATE_SCREENSAVER
198 * Winlogon runs the screen saver. Upon user activity, the screensaver
199 * terminates and the state changes back to STATE_LOGGED_ON if the secure
200 * screen saver option is off. Otherwise, the state changes to STATE_LOCKED.
201 */
202typedef enum _LOGON_STATE
203{
211 STATE_LOGGING_OFF, // not used yet
212 STATE_SHUTTING_DOWN, // not used yet
213 STATE_SHUT_DOWN, // not used yet
214 STATE_SCREENSAVER // not used yet
216
217#define LockWorkstation(Session)
218#define UnlockWorkstation(Session)
219
220typedef struct _WLSESSION
221{
236 DWORD DialogTimeout; /* Timeout for dialog boxes, in seconds */
238
239 /* Screen-saver informations */
240#ifndef USE_GETLASTINPUTINFO
241 HHOOK KeyboardHook;
242 HHOOK MouseHook;
243#endif
248#ifndef USE_GETLASTINPUTINFO
249 DWORD LastActivity;
250#endif
251
252 /* Logon informations */
257
259{
274
276extern PWLSESSION WLSession;
277
278#define WLX_SHUTTINGDOWN(Status) \
279 (((Status) == WLX_SAS_ACTION_SHUTDOWN) || \
280 ((Status) == WLX_SAS_ACTION_SHUTDOWN_POWER_OFF) || \
281 ((Status) == WLX_SAS_ACTION_SHUTDOWN_REBOOT) \
282 )
283
284#define WLX_SUSPENDING(Status) \
285 (((Status) == WLX_SAS_ACTION_SHUTDOWN_SLEEP) || \
286 ((Status) == WLX_SAS_ACTION_SHUTDOWN_SLEEP2) || \
287 ((Status) == WLX_SAS_ACTION_SHUTDOWN_HIBERNATE) \
288 )
289
291VOID
293 _Inout_ PWLSESSION Session)
294{
295 NtQuerySystemTime(&Session->LastLogon);
296}
297
299BOOL
301 _In_ PWLSESSION Session)
302{
303 /* The WLSESSION::LastLogon is initialized to 0 so this is OK */
304 return (Session->LastLogon.QuadPart == 0);
305}
306
307/* environment.c */
308BOOL
310
311/* notify.c */
312BOOL
314
315VOID
317
318VOID
320 PWLSESSION pSession,
322
323/* rpcserver.c */
324BOOL
326
327/* sas.c */
328extern LUID LuidNone;
329
330BOOL
332
335 IN DWORD wlxAction);
336
337BOOL
339
340/* screensaver.c */
341BOOL
343
344VOID
346
347/* security.c */
350 _In_ PSECURITY_DESCRIPTOR AbsoluteSd);
351
352BOOL
354 _Out_ PSECURITY_DESCRIPTOR *WinstaSd);
355
356BOOL
358 _Out_ PSECURITY_DESCRIPTOR *ApplicationDesktopSd);
359
360BOOL
362 _Out_ PSECURITY_DESCRIPTOR *WinlogonDesktopSd);
363
364BOOL
366 _Out_ PSECURITY_DESCRIPTOR *ScreenSaverDesktopSd);
367
368BOOL
370 _In_ HWINSTA WinSta,
371 _In_ PSID LogonSid);
372
373BOOL
375 _In_ HDESK Desktop,
376 _In_ PSID LogonSid);
377
378BOOL
380 _In_ PWLSESSION Session);
381
382/* setup.c */
383DWORD
385
386BOOL
388
389/* shutdown.h */
390DWORD
392
393DWORD
395 IN PUNICODE_STRING pMessage,
397 IN BOOLEAN bForceAppsClosed,
398 IN BOOLEAN bRebootAfterShutdown,
400
401/* winlogon.c */
402BOOL
404 IN UINT Logon,
405 IN UINT Flags);
406
407BOOL
409 IN HDESK hDesktop,
411
412BOOL
414
415/* wlx.c */
416VOID
418
419VOID
421
422BOOL
423GinaInit(IN OUT PWLSESSION Session);
424
425BOOL
427 _Inout_ PWLSESSION Session);
428
429
431VOID WINAPI WlxSetContextPointer(HANDLE hWlx, PVOID pWlxContext);
432VOID WINAPI WlxSasNotify(HANDLE hWlx, DWORD dwSasType);
435int WINAPI WlxMessageBox(HANDLE hWlx, HWND hwndOwner, LPWSTR lpszText, LPWSTR lpszTitle, UINT fuStyle);
436int WINAPI WlxDialogBox(HANDLE hWlx, HANDLE hInst, LPWSTR lpszTemplate, HWND hwndOwner, DLGPROC dlgprc);
437int WINAPI WlxDialogBoxParam(HANDLE hWlx, HANDLE hInst, LPWSTR lpszTemplate, HWND hwndOwner, DLGPROC dlgprc, LPARAM dwInitParam);
438int WINAPI WlxDialogBoxIndirect(HANDLE hWlx, HANDLE hInst, LPCDLGTEMPLATE hDialogTemplate, HWND hwndOwner, DLGPROC dlgprc);
439int WINAPI WlxDialogBoxIndirectParam(HANDLE hWlx, HANDLE hInst, LPCDLGTEMPLATE hDialogTemplate, HWND hwndOwner, DLGPROC dlgprc, LPARAM dwInitParam);
442int WINAPI WlxChangePasswordNotify(HANDLE hWlx, PWLX_MPR_NOTIFY_INFO pMprInfo, DWORD dwChangeInfo);
445BOOL WINAPI WlxCreateUserDesktop(HANDLE hWlx, HANDLE hToken, DWORD Flags, PWSTR pszDesktopName, PWLX_DESKTOP* ppDesktop);
446int WINAPI WlxChangePasswordNotifyEx(HANDLE hWlx, PWLX_MPR_NOTIFY_INFO pMprInfo, DWORD dwChangeInfo, PWSTR ProviderName, PVOID Reserved);
448BOOL WINAPI WlxSetOption(HANDLE hWlx, DWORD Option, ULONG_PTR Value, ULONG_PTR* OldValue);
457
458#endif /* __WINLOGON_MAIN_H__ */
INT ResourceId
Definition: LoadImageGCC.c:72
unsigned char BOOLEAN
Type
Definition: Type.h:7
#define VOID
Definition: acefi.h:82
#define WINE_DEFAULT_DEBUG_CHANNEL(t)
Definition: precomp.h:23
LONG NTSTATUS
Definition: precomp.h:26
DWORD dwReason
Definition: misc.cpp:135
#define DLGPROC
Definition: maze.c:62
struct _LUID * PLUID
unsigned int(__cdecl typeof(jpeg_read_scanlines))(struct jpeg_decompress_struct *
Definition: typeof.h:31
HINSTANCE hInst
Definition: dxdiag.c:13
unsigned int BOOL
Definition: ntddk_ex.h:94
unsigned long DWORD
Definition: ntddk_ex.h:95
GLsizeiptr size
Definition: glext.h:5919
_In_ BOOL _In_ HANDLE hProcess
Definition: mapping.h:71
struct _SID * PSID
Definition: eventlog.c:35
unsigned int UINT
Definition: ndis.h:50
HANDLE hThread
Definition: wizard.c:28
#define _Inout_
Definition: no_sal2.h:162
#define _Out_
Definition: no_sal2.h:160
#define _In_
Definition: no_sal2.h:158
#define BOOL
Definition: nt_native.h:43
#define DWORD
Definition: nt_native.h:44
NTSTATUS NTAPI NtQuerySystemTime(OUT PLARGE_INTEGER SystemTime)
Definition: time.c:569
PVOID *typedef PHANDLE
Definition: ntsecpkg.h:455
DWORD * PDWORD
Definition: pedump.c:68
static ULONG Timeout
Definition: ping.c:61
PULONG MinorVersion OPTIONAL
Definition: CrossNt.h:68
PFWLXWKSTALOCKEDSAS WlxWkstaLockedSAS
Definition: winlogon.h:105
PFWLXISLOCKOK WlxIsLockOk
Definition: winlogon.h:106
PFWLXDISPLAYSTATUSMESSAGE WlxDisplayStatusMessage
Definition: winlogon.h:119
PFWLXSCREENSAVERNOTIFY WlxScreenSaverNotify
Definition: winlogon.h:112
PFWLXLOGGEDOUTSAS WlxLoggedOutSAS
Definition: winlogon.h:101
PFWLXISLOGOFFOK WlxIsLogoffOk
Definition: winlogon.h:107
PFWLXINITIALIZE WlxInitialize
Definition: winlogon.h:97
PFWLXLOGGEDONSAS WlxLoggedOnSAS
Definition: winlogon.h:103
PFWLXLOGOFF WlxLogoff
Definition: winlogon.h:108
PFWLXSHUTDOWN WlxShutdown
Definition: winlogon.h:109
PFWLXNEGOTIATE WlxNegotiate
Definition: winlogon.h:96
PFWLXGETSTATUSMESSAGE WlxGetStatusMessage
Definition: winlogon.h:120
PFWLXNETWORKPROVIDERLOAD WlxNetworkProviderLoad
Definition: winlogon.h:118
PFWLXSTARTAPPLICATION WlxStartApplication
Definition: winlogon.h:113
PFWLXDISPLAYSASNOTICE WlxDisplaySASNotice
Definition: winlogon.h:100
PFWLXREMOVESTATUSMESSAGE WlxRemoveStatusMessage
Definition: winlogon.h:121
PFWLXACTIVATEUSERSHELL WlxActivateUserShell
Definition: winlogon.h:102
PFWLXDISPLAYLOCKEDNOTICE WlxDisplayLockedNotice
Definition: winlogon.h:104
PVOID Context
Definition: winlogon.h:130
HMODULE hDllInstance
Definition: winlogon.h:128
GINAFUNCTIONS Functions
Definition: winlogon.h:129
BOOL UseCtrlAltDelete
Definition: winlogon.h:132
DWORD Version
Definition: winlogon.h:131
HANDLE hUserActivity
Definition: winlogon.h:246
LPWSTR InteractiveWindowStationName
Definition: winlogon.h:228
DWORD DialogTimeout
Definition: winlogon.h:236
WLX_PROFILE_V2_0 * Profile
Definition: winlogon.h:255
LUID LogonId
Definition: winlogon.h:232
HANDLE hScreenSaverParametersChanged
Definition: winlogon.h:245
HWINSTA InteractiveWindowStation
Definition: winlogon.h:227
DWORD Options
Definition: winlogon.h:253
BOOL SuppressStatus
Definition: winlogon.h:224
HANDLE hEndOfScreenSaver
Definition: winlogon.h:247
HANDLE UserToken
Definition: winlogon.h:233
HANDLE hEndOfScreenSaverThread
Definition: winlogon.h:244
HANDLE hProfileInfo
Definition: winlogon.h:234
HDESK WinlogonDesktop
Definition: winlogon.h:230
BOOL TaskManHotkey
Definition: winlogon.h:225
WLX_MPR_NOTIFY_INFO MprNotifyInfo
Definition: winlogon.h:254
LARGE_INTEGER LastLogon
Definition: winlogon.h:237
DWORD SASAction
Definition: winlogon.h:223
LOGON_STATE LogonState
Definition: winlogon.h:235
HWND SASWindow
Definition: winlogon.h:226
HDESK ScreenSaverDesktop
Definition: winlogon.h:231
GINAINSTANCE Gina
Definition: winlogon.h:222
HDESK ApplicationDesktop
Definition: winlogon.h:229
uint16_t * PWSTR
Definition: typedefs.h:56
void * PVOID
Definition: typedefs.h:50
PVOID HANDLE
Definition: typedefs.h:73
uint32_t ULONG_PTR
Definition: typedefs.h:65
#define IN
Definition: typedefs.h:39
uint32_t ULONG
Definition: typedefs.h:59
#define OUT
Definition: typedefs.h:40
VOID FASTCALL Logon(BOOL IsLogon)
Definition: logon.c:74
_Must_inspect_result_ _In_ WDFKEY _In_ PCUNICODE_STRING _Out_opt_ PUSHORT _Inout_opt_ PUNICODE_STRING Value
Definition: wdfregistry.h:413
#define FORCEINLINE
Definition: wdftypes.h:67
_In_ void _In_ PCCERT_CONTEXT _In_opt_ LPFILETIME _In_ DWORD _In_ DWORD dwTimeout
Definition: wincrypt.h:6081
_Reserved_ PVOID Reserved
Definition: winddi.h:3974
LONG_PTR LPARAM
Definition: windef.h:208
#define WINAPI
Definition: msvc.h:6
int(WINAPI * PFWLXWKSTALOCKEDSAS)(PVOID, DWORD)
Definition: winlogon.h:75
BOOL DisplayStatusMessage(IN PWLSESSION Session, IN HDESK hDesktop, IN UINT ResourceId)
Definition: winlogon.c:349
struct _GINAFUNCTIONS * PGINAFUNCTIONS
DWORD GetSetupType(VOID)
Definition: setup.c:16
VOID(WINAPI * PFWLXDISPLAYLOCKEDNOTICE)(PVOID)
Definition: winlogon.h:74
BOOL WINAPI WlxCloseUserDesktop(HANDLE hWlx, PWLX_DESKTOP pDesktop, HANDLE hToken)
Definition: wlx.c:517
DWORD WINAPI WlxQueryConsoleSwitchCredentials(PWLX_CONSOLESWITCH_CREDENTIALS_INFO_V1_0 pCred)
Definition: wlx.c:698
int WINAPI WlxDialogBoxParam(HANDLE hWlx, HANDLE hInst, LPWSTR lpszTemplate, HWND hwndOwner, DLGPROC dlgprc, LPARAM dwInitParam)
Definition: wlx.c:306
enum _LOGON_STATE LOGON_STATE
BOOL WINAPI WlxCreateUserDesktop(HANDLE hWlx, HANDLE hToken, DWORD Flags, PWSTR pszDesktopName, PWLX_DESKTOP *ppDesktop)
Definition: wlx.c:473
int(WINAPI * PFWLXLOGGEDOUTSAS)(PVOID, DWORD, PLUID, PSID, PDWORD, PHANDLE, PWLX_MPR_NOTIFY_INFO, PVOID *)
Definition: winlogon.h:69
int WINAPI WlxAssignShellProtection(HANDLE hWlx, HANDLE hToken, HANDLE hProcess, HANDLE hThread)
Definition: wlx.c:248
int WINAPI WlxDialogBoxIndirectParam(HANDLE hWlx, HANDLE hInst, LPCDLGTEMPLATE hDialogTemplate, HWND hwndOwner, DLGPROC dlgprc, LPARAM dwInitParam)
Definition: wlx.c:359
BOOL AllowWinstaAccessToUser(_In_ HWINSTA WinSta, _In_ PSID LogonSid)
Assigns access to the specific logon user to the default window station. Such access is given to the ...
Definition: security.c:874
BOOL WINAPI WlxSetTimeout(HANDLE hWlx, DWORD Timeout)
Definition: wlx.c:231
BOOL WINAPI WlxSetOption(HANDLE hWlx, DWORD Option, ULONG_PTR Value, ULONG_PTR *OldValue)
Definition: wlx.c:535
BOOL(WINAPI * PFWLXNEGOTIATE)(DWORD, DWORD *)
Definition: winlogon.h:66
BOOL SetDefaultLanguage(IN PWLSESSION Session)
Definition: sas.c:117
VOID(WINAPI * PFWLXSHUTDOWN)(PVOID, DWORD)
Definition: winlogon.h:79
struct _GINAINSTANCE * PGINAINSTANCE
DWORD WINAPI WlxQueryTerminalServicesData(HANDLE hWlx, PWLX_TERMINAL_SERVICES_DATA pTSData, WCHAR *UserName, WCHAR *Domain)
Definition: wlx.c:678
int WINAPI WlxSwitchDesktopToUser(HANDLE hWlx)
Definition: wlx.c:393
LUID LuidNone
Definition: sas.c:47
FORCEINLINE BOOL IsFirstLogon(_In_ PWLSESSION Session)
Definition: winlogon.h:300
BOOL WINAPI WlxQueryClientCredentials(PWLX_CLIENT_CREDENTIALS_INFO_V1_0 pCred)
Definition: wlx.c:639
NTSTATUS HandleShutdown(IN OUT PWLSESSION Session, IN DWORD wlxAction)
Definition: sas.c:970
BOOL WINAPI SetWindowStationUser(IN HWINSTA hWindowStation, IN PLUID pluid, IN PSID psid OPTIONAL, IN DWORD size)
Definition: winsta.c:419
int WINAPI WlxChangePasswordNotifyEx(HANDLE hWlx, PWLX_MPR_NOTIFY_INFO pMprInfo, DWORD dwChangeInfo, PWSTR ProviderName, PVOID Reserved)
Definition: wlx.c:495
BOOL InitializeScreenSaver(IN OUT PWLSESSION Session)
Definition: screensaver.c:204
VOID WINAPI WlxSasNotify(HANDLE hWlx, DWORD dwSasType)
Definition: wlx.c:214
PWLSESSION WLSession
Definition: winlogon.c:20
enum _NOTIFICATION_TYPE NOTIFICATION_TYPE
BOOL(WINAPI * PFWLXISLOGOFFOK)(PVOID)
Definition: winlogon.h:77
enum _NOTIFICATION_TYPE * PNOTIFICATION_TYPE
BOOL CreateApplicationDesktopSecurity(_Out_ PSECURITY_DESCRIPTOR *ApplicationDesktopSd)
Creates a security descriptor for the default application desktop upon its creation.
Definition: security.c:359
int WINAPI WlxDialogBoxIndirect(HANDLE hWlx, HANDLE hInst, LPCDLGTEMPLATE hDialogTemplate, HWND hwndOwner, DLGPROC dlgprc)
Definition: wlx.c:340
VOID(WINAPI * PFWLXLOGOFF)(PVOID)
Definition: winlogon.h:78
struct _GINAFUNCTIONS GINAFUNCTIONS
BOOL(WINAPI * PFWLXREMOVESTATUSMESSAGE)(PVOID)
Definition: winlogon.h:91
BOOL GinaInit(IN OUT PWLSESSION Session)
Definition: wlx.c:905
BOOL(WINAPI * PFWLXSTARTAPPLICATION)(PVOID, PWSTR, PVOID, PWSTR)
Definition: winlogon.h:84
PSECURITY_DESCRIPTOR ConvertToSelfRelative(_In_ PSECURITY_DESCRIPTOR AbsoluteSd)
Converts an absolute security descriptor to a self-relative format.
Definition: security.c:64
BOOL CreateWinstaSecurity(_Out_ PSECURITY_DESCRIPTOR *WinstaSd)
Creates a security descriptor for the default window station upon its creation.
Definition: security.c:112
BOOL(WINAPI * PFWLXINITIALIZE)(LPWSTR, HANDLE, PVOID, PVOID, PVOID *)
Definition: winlogon.h:67
BOOL AllowDesktopAccessToUser(_In_ HDESK Desktop, _In_ PSID LogonSid)
Assigns access to the specific logon user to the default desktop. Such access is given to the user wh...
Definition: security.c:1165
BOOL RunSetup(VOID)
Definition: setup.c:153
VOID WINAPI WlxWin31Migrate(HANDLE hWlx)
Definition: wlx.c:626
HINSTANCE hAppInstance
Definition: mmc.c:23
BOOL(WINAPI * PFWLXSCREENSAVERNOTIFY)(PVOID, BOOL *)
Definition: winlogon.h:83
VOID StartScreenSaver(IN PWLSESSION Session)
Definition: screensaver.c:257
VOID WINAPI WlxUseCtrlAltDel(HANDLE hWlx)
Definition: wlx.c:183
BOOL InitNotifications(VOID)
Definition: notify.c:253
VOID CallNotificationDlls(PWLSESSION pSession, NOTIFICATION_TYPE Type)
Definition: notify.c:390
int WINAPI WlxChangePasswordNotify(HANDLE hWlx, PWLX_MPR_NOTIFY_INFO pMprInfo, DWORD dwChangeInfo)
Definition: wlx.c:423
BOOL CreateWinlogonDesktopSecurity(_Out_ PSECURITY_DESCRIPTOR *WinlogonDesktopSd)
Creates a security descriptor for the default Winlogon desktop. This descriptor serves as a security ...
Definition: security.c:541
BOOL AllowAccessOnSession(_In_ PWLSESSION Session)
Assigns both window station and desktop access to the specific session currently active on the system...
Definition: security.c:1391
BOOL WINAPI WlxQueryTsLogonCredentials(PWLX_CLIENT_CREDENTIALS_INFO_V2_0 pCred)
Definition: wlx.c:712
BOOL InitializeSAS(IN OUT PWLSESSION Session)
Definition: sas.c:1517
struct _WLSESSION * PWLSESSION
BOOL RemoveStatusMessage(IN PWLSESSION Session)
Definition: winlogon.c:370
FORCEINLINE VOID SetLogonTimestamp(_Inout_ PWLSESSION Session)
Definition: winlogon.h:292
BOOL(WINAPI * PFWLXNETWORKPROVIDERLOAD)(PVOID, PWLX_MPR_NOTIFY_INFO)
Definition: winlogon.h:88
BOOL WINAPI WlxDisconnect(VOID)
Definition: wlx.c:667
BOOL WINAPI WlxGetOption(HANDLE hWlx, DWORD Option, ULONG_PTR *Value)
Definition: wlx.c:568
BOOL CreateUserEnvironment(IN PWLSESSION Session)
Definition: environment.c:128
VOID WINAPI WlxSetContextPointer(HANDLE hWlx, PVOID pWlxContext)
Definition: wlx.c:198
BOOL(WINAPI * PFWLXGETSTATUSMESSAGE)(PVOID, DWORD *, PWSTR, DWORD)
Definition: winlogon.h:90
VOID InitDialogListHead(VOID)
Definition: wlx.c:31
BOOL StartRpcServer(VOID)
Definition: rpcserver.c:32
BOOL(WINAPI * PFWLXISLOCKOK)(PVOID)
Definition: winlogon.h:76
BOOL(WINAPI * PFWLXDISPLAYSTATUSMESSAGE)(PVOID, HDESK, DWORD, PWSTR, PWSTR)
Definition: winlogon.h:89
int WINAPI WlxSwitchDesktopToWinlogon(HANDLE hWlx)
Definition: wlx.c:408
VOID CleanupNotifications(VOID)
Definition: notify.c:470
BOOL CreateScreenSaverSecurity(_Out_ PSECURITY_DESCRIPTOR *ScreenSaverDesktopSd)
Creates a security descriptor for the screen saver desktop.
Definition: security.c:690
int WINAPI WlxDialogBox(HANDLE hWlx, HANDLE hInst, LPWSTR lpszTemplate, HWND hwndOwner, DLGPROC dlgprc)
Definition: wlx.c:287
struct _WLSESSION WLSESSION
_LOGON_STATE
Definition: winlogon.h:203
@ STATE_LOGGED_ON
Definition: winlogon.h:207
@ STATE_LOGGED_OFF_SAS
Definition: winlogon.h:206
@ STATE_LOCKED_SAS
Definition: winlogon.h:210
@ STATE_INIT
Definition: winlogon.h:204
@ STATE_LOGGED_OFF
Definition: winlogon.h:205
@ STATE_LOGGING_OFF
Definition: winlogon.h:211
@ STATE_SHUT_DOWN
Definition: winlogon.h:213
@ STATE_LOGGED_ON_SAS
Definition: winlogon.h:208
@ STATE_SCREENSAVER
Definition: winlogon.h:214
@ STATE_LOCKED
Definition: winlogon.h:209
@ STATE_SHUTTING_DOWN
Definition: winlogon.h:212
BOOL PlaySoundRoutine(IN LPCWSTR FileName, IN UINT Logon, IN UINT Flags)
Definition: sas.c:246
DWORD TerminateSystemShutdown(VOID)
Definition: shutdown.c:328
VOID(WINAPI * PFWLXDISPLAYSASNOTICE)(PVOID)
Definition: winlogon.h:68
struct _GINAINSTANCE GINAINSTANCE
BOOL WINAPI WlxGetSourceDesktop(HANDLE hWlx, PWLX_DESKTOP *ppDesktop)
Definition: wlx.c:441
BOOL CreateWindowStationAndDesktops(_Inout_ PWLSESSION Session)
Definition: wlx.c:928
VOID CloseAllDialogWindows(VOID)
Definition: wlx.c:95
int(WINAPI * PFWLXLOGGEDONSAS)(PVOID, DWORD, PVOID)
Definition: winlogon.h:73
_NOTIFICATION_TYPE
Definition: winlogon.h:259
@ StopScreenSaverHandler
Definition: winlogon.h:267
@ PostShellHandler
Definition: winlogon.h:271
@ LastHandler
Definition: winlogon.h:272
@ LogonHandler
Definition: winlogon.h:260
@ LogoffHandler
Definition: winlogon.h:261
@ StartShellHandler
Definition: winlogon.h:270
@ DisconnectHandler
Definition: winlogon.h:268
@ UnlockHandler
Definition: winlogon.h:263
@ ReconnectHandler
Definition: winlogon.h:269
@ LockHandler
Definition: winlogon.h:262
@ StartScreenSaverHandler
Definition: winlogon.h:266
@ ShutdownHandler
Definition: winlogon.h:265
@ StartupHandler
Definition: winlogon.h:264
BOOL(WINAPI * PFWLXACTIVATEUSERSHELL)(PVOID, PWSTR, PWSTR, PVOID)
Definition: winlogon.h:72
int WINAPI WlxMessageBox(HANDLE hWlx, HWND hwndOwner, LPWSTR lpszText, LPWSTR lpszTitle, UINT fuStyle)
Definition: wlx.c:268
BOOL WINAPI WlxQueryInetConnectorCredentials(PWLX_CLIENT_CREDENTIALS_INFO_V1_0 pCred)
Definition: wlx.c:653
enum _LOGON_STATE * PLOGON_STATE
DWORD StartSystemShutdown(IN PUNICODE_STRING pMessage, IN ULONG dwTimeout, IN BOOLEAN bForceAppsClosed, IN BOOLEAN bRebootAfterShutdown, IN ULONG dwReason)
Definition: shutdown.c:337
BOOL WINAPI WlxSetReturnDesktop(HANDLE hWlx, PWLX_DESKTOP pDesktop)
Definition: wlx.c:457
struct _WLX_MPR_NOTIFY_INFO * PWLX_MPR_NOTIFY_INFO
_Must_inspect_result_ _In_ ULONG Flags
Definition: wsk.h:170
__wchar_t WCHAR
Definition: xmlstorage.h:180
WCHAR * LPWSTR
Definition: xmlstorage.h:184
const WCHAR * LPCWSTR
Definition: xmlstorage.h:185