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
16 * along with this program; if not, write to the Free Software
17 * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
20 * COPYRIGHT: See COPYING in the top level directory
21 * PROJECT: ReactOS winlogon
22 * FILE: subsys/system/winlogon/winlogon.h
27 #ifndef __WINLOGON_MAIN_H__
28 #define __WINLOGON_MAIN_H__
34 #define NTOS_MODE_USER
35 #include <ndk/ntndk.h>
37 #include <reactos/winlogon.h>
42 VOID WINAPI
WlxUseCtrlAltDel(HANDLE hWlx
);
43 VOID WINAPI
WlxSetContextPointer(HANDLE hWlx
, PVOID pWlxContext
);
44 VOID WINAPI
WlxSasNotify(HANDLE hWlx
, DWORD dwSasType
);
45 BOOL WINAPI
WlxSetTimeout(HANDLE hWlx
, DWORD Timeout
);
46 int WINAPI
WlxAssignShellProtection(HANDLE hWlx
, HANDLE hToken
, HANDLE hProcess
, HANDLE hThread
);
47 int WINAPI
WlxMessageBox(HANDLE hWlx
, HWND hwndOwner
, LPWSTR lpszText
, LPWSTR lpszTitle
, UINT fuStyle
);
48 int WINAPI
WlxDialogBox(HANDLE hWlx
, HANDLE hInst
, LPWSTR lpszTemplate
, HWND hwndOwner
, DLGPROC dlgprc
);
49 int WINAPI
WlxDialogBoxParam(HANDLE hWlx
, HANDLE hInst
, LPWSTR lpszTemplate
, HWND hwndOwner
, DLGPROC dlgprc
, LPARAM dwInitParam
);
50 int WINAPI
WlxDialogBoxIndirect(HANDLE hWlx
, HANDLE hInst
, LPCDLGTEMPLATE hDialogTemplate
, HWND hwndOwner
, DLGPROC dlgprc
);
51 int WINAPI
WlxDialogBoxIndirectParam(HANDLE hWlx
, HANDLE hInst
, LPCDLGTEMPLATE hDialogTemplate
, HWND hwndOwner
, DLGPROC dlgprc
, LPARAM dwInitParam
);
52 int WINAPI
WlxSwitchDesktopToUser(HANDLE hWlx
);
53 int WINAPI
WlxSwitchDesktopToWinlogon(HANDLE hWlx
);
54 int WINAPI
WlxChangePasswordNotify(HANDLE hWlx
, PWLX_MPR_NOTIFY_INFO pMprInfo
, DWORD dwChangeInfo
);
55 BOOL WINAPI
WlxGetSourceDesktop(HANDLE hWlx
, PWLX_DESKTOP
* ppDesktop
);
56 BOOL WINAPI
WlxSetReturnDesktop(HANDLE hWlx
, PWLX_DESKTOP pDesktop
);
57 BOOL WINAPI
WlxCreateUserDesktop(HANDLE hWlx
, HANDLE hToken
, DWORD Flags
, PWSTR pszDesktopName
, PWLX_DESKTOP
* ppDesktop
);
58 int WINAPI
WlxChangePasswordNotifyEx(HANDLE hWlx
, PWLX_MPR_NOTIFY_INFO pMprInfo
, DWORD dwChangeInfo
, PWSTR ProviderName
, PVOID Reserved
);
59 BOOL WINAPI
WlxCloseUserDesktop(HANDLE hWlx
, PWLX_DESKTOP pDesktop
, HANDLE hToken
);
60 BOOL WINAPI
WlxSetOption(HANDLE hWlx
, DWORD Option
, ULONG_PTR Value
, ULONG_PTR
* OldValue
);
61 BOOL WINAPI
WlxGetOption(HANDLE hWlx
, DWORD Option
, ULONG_PTR
* Value
);
62 VOID WINAPI
WlxWin31Migrate(HANDLE hWlx
);
63 BOOL WINAPI
WlxQueryClientCredentials(PWLX_CLIENT_CREDENTIALS_INFO_V1_0 pCred
);
64 BOOL WINAPI
WlxQueryInetConnectorCredentials(PWLX_CLIENT_CREDENTIALS_INFO_V1_0 pCred
);
65 DWORD WINAPI
WlxQueryConsoleSwitchCredentials(PWLX_CONSOLESWITCH_CREDENTIALS_INFO_V1_0 pCred
);
66 BOOL WINAPI
WlxQueryTsLogonCredentials(PWLX_CLIENT_CREDENTIALS_INFO_V2_0 pCred
);
67 BOOL WINAPI
WlxDisconnect(void);
68 DWORD WINAPI
WlxQueryTerminalServicesData(HANDLE hWlx
, PWLX_TERMINAL_SERVICES_DATA pTSData
, WCHAR
* UserName
, WCHAR
* Domain
);
70 typedef BOOL (WINAPI
* PFWLXNEGOTIATE
) (DWORD
, DWORD
*);
71 typedef BOOL (WINAPI
* PFWLXINITIALIZE
) (LPWSTR
, HANDLE
, PVOID
, PVOID
, PVOID
*);
72 typedef VOID (WINAPI
* PFWLXDISPLAYSASNOTICE
) (PVOID
);
73 typedef int (WINAPI
* PFWLXLOGGEDOUTSAS
) (PVOID
, DWORD
, PLUID
, PSID
, PDWORD
,
74 PHANDLE
, PWLX_MPR_NOTIFY_INFO
,
76 typedef BOOL (WINAPI
* PFWLXACTIVATEUSERSHELL
) (PVOID
, PWSTR
, PWSTR
, PVOID
);
77 typedef int (WINAPI
* PFWLXLOGGEDONSAS
) (PVOID
, DWORD
, PVOID
);
78 typedef VOID (WINAPI
* PFWLXDISPLAYLOCKEDNOTICE
) (PVOID
);
79 typedef int (WINAPI
* PFWLXWKSTALOCKEDSAS
) (PVOID
, DWORD
);
80 typedef BOOL (WINAPI
* PFWLXISLOCKOK
) (PVOID
);
81 typedef BOOL (WINAPI
* PFWLXISLOGOFFOK
) (PVOID
);
82 typedef VOID (WINAPI
* PFWLXLOGOFF
) (PVOID
);
83 typedef VOID (WINAPI
* PFWLXSHUTDOWN
) (PVOID
, DWORD
);
87 typedef BOOL (WINAPI
* PFWLXSCREENSAVERNOTIFY
) (PVOID
, BOOL
*);
88 typedef BOOL (WINAPI
* PFWLXSTARTAPPLICATION
) (PVOID
, PWSTR
, PVOID
, PWSTR
);
92 typedef BOOL (WINAPI
* PFWLXNETWORKPROVIDERLOAD
) (PVOID
, PWLX_MPR_NOTIFY_INFO
);
93 typedef BOOL (WINAPI
* PFWLXDISPLAYSTATUSMESSAGE
) (PVOID
, HDESK
, DWORD
, PWSTR
, PWSTR
);
94 typedef BOOL (WINAPI
* PFWLXGETSTATUSMESSAGE
) (PVOID
, DWORD
*, PWSTR
, DWORD
);
95 typedef BOOL (WINAPI
* PFWLXREMOVESTATUSMESSAGE
) (PVOID
);
97 typedef struct _MSGINAFUNCTIONS
99 PFWLXNEGOTIATE WlxNegotiate
;
100 PFWLXINITIALIZE WlxInitialize
;
101 PFWLXDISPLAYSASNOTICE WlxDisplaySASNotice
;
102 PFWLXLOGGEDOUTSAS WlxLoggedOutSAS
;
103 PFWLXACTIVATEUSERSHELL WlxActivateUserShell
;
104 PFWLXLOGGEDONSAS WlxLoggedOnSAS
;
105 PFWLXDISPLAYLOCKEDNOTICE WlxDisplayLockedNotice
;
106 PFWLXWKSTALOCKEDSAS WlxWkstaLockedSAS
;
107 PFWLXISLOCKOK WlxIsLockOk
;
108 PFWLXISLOGOFFOK WlxIsLogoffOk
;
109 PFWLXLOGOFF WlxLogoff
;
110 PFWLXSHUTDOWN WlxShutdown
;
112 PFWLXSCREENSAVERNOTIFY WlxScreenSaverNotify
;
113 PFWLXSTARTAPPLICATION WlxStartApplication
;
115 PFWLXNETWORKPROVIDERLOAD WlxNetworkProviderLoad
;
116 PFWLXDISPLAYSTATUSMESSAGE WlxDisplayStatusMessage
;
117 PFWLXGETSTATUSMESSAGE WlxGetStatusMessage
;
118 PFWLXREMOVESTATUSMESSAGE WlxRemoveStatusMessage
;
119 } MSGINAFUNCTIONS
, *PMSGINAFUNCTIONS
;
121 typedef struct _MSGINAINSTANCE
123 HMODULE hDllInstance
;
124 MSGINAFUNCTIONS Functions
;
127 } MSGINAINSTANCE
, *PMSGINAINSTANCE
;
129 typedef struct _WLSESSION
131 MSGINAINSTANCE MsGina
;
137 HWINSTA InteractiveWindowStation
;
138 LPWSTR InteractiveWindowStationName
;
139 HDESK ApplicationDesktop
;
140 HDESK WinlogonDesktop
;
141 HDESK ScreenSaverDesktop
;
143 } WLSESSION
, *PWLSESSION
;
145 extern HINSTANCE hAppInstance
;
146 extern PWLSESSION WLSession
;
149 InitializeSAS(PWLSESSION Session
);
151 DispatchSAS(PWLSESSION Session
, DWORD dwSasType
);
153 #define LOGON_INITIALIZING 1
155 #define LOGON_SHOWINGLOGON 3
157 #define LOGON_SHUTDOWN 9
159 #define WLX_SHUTTINGDOWN(Status) \
160 (((Status) == WLX_SAS_ACTION_SHUTDOWN) || \
161 ((Status) == WLX_SAS_ACTION_SHUTDOWN_POWER_OFF) || \
162 ((Status) == WLX_SAS_ACTION_SHUTDOWN_REBOOT) \
165 #define WLX_SUSPENDING(Status) \
166 (((Status) == WLX_SAS_ACTION_SHUTDOWN_SLEEP) || \
167 ((Status) == WLX_SAS_ACTION_SHUTDOWN_SLEEP2) || \
168 ((Status) == WLX_SAS_ACTION_SHUTDOWN_HIBERNATE) \
171 #define RemoveStatusMessage(Session) \
172 Session->MsGina.Functions.WlxRemoveStatusMessage(Session->MsGina.Context);
173 #define DisplaySASNotice(Session) \
174 Session->MsGina.Functions.WlxDisplaySASNotice(Session->MsGina.Context);
178 UpdatePerUserSystemParameters(DWORD dwUnknown
,
181 #endif /* __WINLOGON_MAIN_H__ */