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__
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
);
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
,
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
);
77 typedef BOOL (WINAPI
* PFWLXSCREENSAVERNOTIFY
) (PVOID
, BOOL
*);
78 typedef BOOL (WINAPI
* PFWLXSTARTAPPLICATION
) (PVOID
, PWSTR
, PVOID
, PWSTR
);
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
);
87 typedef struct _MSGINAFUNCTIONS
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
;
102 PFWLXSCREENSAVERNOTIFY WlxScreenSaverNotify
;
103 PFWLXSTARTAPPLICATION WlxStartApplication
;
105 PFWLXNETWORKPROVIDERLOAD WlxNetworkProviderLoad
;
106 PFWLXDISPLAYSTATUSMESSAGE WlxDisplayStatusMessage
;
107 PFWLXGETSTATUSMESSAGE WlxGetStatusMessage
;
108 PFWLXREMOVESTATUSMESSAGE WlxRemoveStatusMessage
;
109 } MSGINAFUNCTIONS
, *PMSGINAFUNCTIONS
;
111 typedef struct _MSGINAINSTANCE
113 HMODULE hDllInstance
;
114 MSGINAFUNCTIONS Functions
;
117 } MSGINAINSTANCE
, *PMSGINAINSTANCE
;
119 typedef struct _WLSESSION
121 MSGINAINSTANCE MsGina
;
127 HWINSTA InteractiveWindowStation
;
128 LPWSTR InteractiveWindowStationName
;
129 HDESK ApplicationDesktop
;
130 HDESK WinlogonDesktop
;
131 HDESK ScreenSaverDesktop
;
133 } WLSESSION
, *PWLSESSION
;
135 extern HINSTANCE hAppInstance
;
136 extern PWLSESSION WLSession
;
139 InitializeSAS(PWLSESSION Session
);
141 DispatchSAS(PWLSESSION Session
, DWORD dwSasType
);
143 #define LOGON_INITIALIZING 1
145 #define LOGON_SHOWINGLOGON 3
147 #define LOGON_SHUTDOWN 9
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) \
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) \
161 #define RemoveStatusMessage(Session) \
162 Session->MsGina.Functions.WlxRemoveStatusMessage(Session->MsGina.Context);
163 #define DisplaySASNotice(Session) \
164 Session->MsGina.Functions.WlxDisplaySASNotice(Session->MsGina.Context);
168 UpdatePerUserSystemParameters(DWORD dwUnknown
,
171 #endif /* __WINLOGON_MAIN_H__ */