Home | Info | Community | Development | myReactOS | Contact Us
ReactOS Development > Doxygenwinlogon.h
Go to the documentation of this file.
00001 /* 00002 * ReactOS kernel 00003 * Copyright (C) 2003 ReactOS Team 00004 * 00005 * This program is free software; you can redistribute it and/or modify 00006 * it under the terms of the GNU General Public License as published by 00007 * the Free Software Foundation; either version 2 of the License, or 00008 * (at your option) any later version. 00009 * 00010 * This program is distributed in the hope that it will be useful, 00011 * but WITHOUT ANY WARRANTY; without even the implied warranty of 00012 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 00013 * GNU General Public License for more details. 00014 * 00015 * You should have received a copy of the GNU General Public License along 00016 * with this program; if not, write to the Free Software Foundation, Inc., 00017 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. 00018 */ 00019 /* COPYRIGHT: See COPYING in the top level directory 00020 * PROJECT: ReactOS winlogon 00021 * FILE: subsys/system/winlogon/winlogon.h 00022 * PURPOSE: Winlogon 00023 * PROGRAMMER: 00024 */ 00025 00026 #ifndef __WINLOGON_MAIN_H__ 00027 #define __WINLOGON_MAIN_H__ 00028 00029 #define USE_GETLASTINPUTINFO 00030 00031 #define WIN32_NO_STATUS 00032 #include <stdio.h> 00033 #include <windows.h> 00034 #include <userenv.h> 00035 #include <winwlx.h> 00036 #include <cmfuncs.h> 00037 #include <rtlfuncs.h> 00038 #include <exfuncs.h> 00039 #include <setypes.h> 00040 #include <sefuncs.h> 00041 #include <ntsecapi.h> 00042 #include <accctrl.h> 00043 #include <aclapi.h> 00044 #include <strsafe.h> 00045 00046 #include <reactos/undocuser.h> 00047 #include <reactos/winlogon.h> 00048 00049 #include "setup.h" 00050 #include "resource.h" 00051 00052 typedef BOOL (WINAPI * PFWLXNEGOTIATE) (DWORD, DWORD *); 00053 typedef BOOL (WINAPI * PFWLXINITIALIZE) (LPWSTR, HANDLE, PVOID, PVOID, PVOID *); 00054 typedef VOID (WINAPI * PFWLXDISPLAYSASNOTICE) (PVOID); 00055 typedef int (WINAPI * PFWLXLOGGEDOUTSAS) (PVOID, DWORD, PLUID, PSID, PDWORD, 00056 PHANDLE, PWLX_MPR_NOTIFY_INFO, 00057 PVOID *); 00058 typedef BOOL (WINAPI * PFWLXACTIVATEUSERSHELL) (PVOID, PWSTR, PWSTR, PVOID); 00059 typedef int (WINAPI * PFWLXLOGGEDONSAS) (PVOID, DWORD, PVOID); 00060 typedef VOID (WINAPI * PFWLXDISPLAYLOCKEDNOTICE) (PVOID); 00061 typedef int (WINAPI * PFWLXWKSTALOCKEDSAS) (PVOID, DWORD); 00062 typedef BOOL (WINAPI * PFWLXISLOCKOK) (PVOID); 00063 typedef BOOL (WINAPI * PFWLXISLOGOFFOK) (PVOID); 00064 typedef VOID (WINAPI * PFWLXLOGOFF) (PVOID); 00065 typedef VOID (WINAPI * PFWLXSHUTDOWN) (PVOID, DWORD); 00066 00067 /* version 1.1 */ 00068 00069 typedef BOOL (WINAPI * PFWLXSCREENSAVERNOTIFY) (PVOID, BOOL *); 00070 typedef BOOL (WINAPI * PFWLXSTARTAPPLICATION) (PVOID, PWSTR, PVOID, PWSTR); 00071 00072 /* version 1.3 */ 00073 00074 typedef BOOL (WINAPI * PFWLXNETWORKPROVIDERLOAD) (PVOID, PWLX_MPR_NOTIFY_INFO); 00075 typedef BOOL (WINAPI * PFWLXDISPLAYSTATUSMESSAGE) (PVOID, HDESK, DWORD, PWSTR, PWSTR); 00076 typedef BOOL (WINAPI * PFWLXGETSTATUSMESSAGE) (PVOID, DWORD *, PWSTR, DWORD); 00077 typedef BOOL (WINAPI * PFWLXREMOVESTATUSMESSAGE) (PVOID); 00078 00079 typedef struct _GINAFUNCTIONS 00080 { 00081 /* Functions always available for a valid GINA */ 00082 PFWLXNEGOTIATE WlxNegotiate; /* optional */ 00083 PFWLXINITIALIZE WlxInitialize; 00084 00085 /* Functions available if WlxVersion >= WLX_VERSION_1_0 (MS Windows 3.5.0) */ 00086 PFWLXDISPLAYSASNOTICE WlxDisplaySASNotice; 00087 PFWLXLOGGEDOUTSAS WlxLoggedOutSAS; 00088 PFWLXACTIVATEUSERSHELL WlxActivateUserShell; 00089 PFWLXLOGGEDONSAS WlxLoggedOnSAS; 00090 PFWLXDISPLAYLOCKEDNOTICE WlxDisplayLockedNotice; 00091 PFWLXWKSTALOCKEDSAS WlxWkstaLockedSAS; 00092 PFWLXISLOCKOK WlxIsLockOk; 00093 PFWLXISLOGOFFOK WlxIsLogoffOk; 00094 PFWLXLOGOFF WlxLogoff; 00095 PFWLXSHUTDOWN WlxShutdown; 00096 00097 /* Functions available if WlxVersion >= WLX_VERSION_1_1 (MS Windows 3.5.1) */ 00098 PFWLXSCREENSAVERNOTIFY WlxScreenSaverNotify; /* optional */ 00099 PFWLXSTARTAPPLICATION WlxStartApplication; /* optional */ 00100 00101 /* Functions available if WlxVersion >= WLX_VERSION_1_2 (MS Windows NT 4.0) */ 00102 00103 /* Functions available if WlxVersion >= WLX_VERSION_1_3 (MS Windows 2000) */ 00104 PFWLXNETWORKPROVIDERLOAD WlxNetworkProviderLoad; /* not called ATM */ 00105 PFWLXDISPLAYSTATUSMESSAGE WlxDisplayStatusMessage; 00106 PFWLXGETSTATUSMESSAGE WlxGetStatusMessage; /* doesn't need to be called */ 00107 PFWLXREMOVESTATUSMESSAGE WlxRemoveStatusMessage; 00108 00109 /* Functions available if WlxVersion >= WLX_VERSION_1_4 (MS Windows XP) */ 00110 } GINAFUNCTIONS, *PGINAFUNCTIONS; 00111 00112 typedef struct _GINAINSTANCE 00113 { 00114 HMODULE hDllInstance; 00115 GINAFUNCTIONS Functions; 00116 PVOID Context; 00117 DWORD Version; 00118 BOOL UseCtrlAltDelete; 00119 } GINAINSTANCE, *PGINAINSTANCE; 00120 00121 /* FIXME: put in an enum */ 00122 /* See http://msdn.microsoft.com/library/default.asp?url=/library/en-us/secauthn/security/winlogon_states.asp */ 00123 #define WKSTA_IS_LOGGED_OFF 0 00124 #define WKSTA_IS_LOGGED_ON 1 00125 #define WKSTA_IS_LOCKED 2 00126 00127 #define LockWorkstation(Session) 00128 #define UnlockWorkstation(Session) 00129 00130 typedef struct _WLSESSION 00131 { 00132 GINAINSTANCE Gina; 00133 DWORD SASAction; 00134 BOOL SuppressStatus; 00135 BOOL TaskManHotkey; 00136 HWND SASWindow; 00137 HWINSTA InteractiveWindowStation; 00138 LPWSTR InteractiveWindowStationName; 00139 HDESK ApplicationDesktop; 00140 HDESK WinlogonDesktop; 00141 HDESK ScreenSaverDesktop; 00142 LUID LogonId; 00143 HANDLE UserToken; 00144 HANDLE hProfileInfo; 00145 DWORD LogonStatus; 00146 DWORD DialogTimeout; /* Timeout for dialog boxes, in seconds */ 00147 00148 /* Screen-saver informations */ 00149 #ifndef USE_GETLASTINPUTINFO 00150 HHOOK KeyboardHook; 00151 HHOOK MouseHook; 00152 #endif 00153 HANDLE hEndOfScreenSaverThread; 00154 HANDLE hScreenSaverParametersChanged; 00155 HANDLE hUserActivity; 00156 HANDLE hEndOfScreenSaver; 00157 #ifndef USE_GETLASTINPUTINFO 00158 DWORD LastActivity; 00159 #endif 00160 00161 /* Logon informations */ 00162 DWORD Options; 00163 WLX_MPR_NOTIFY_INFO MprNotifyInfo; 00164 WLX_PROFILE_V2_0 *Profile; 00165 } WLSESSION, *PWLSESSION; 00166 00167 extern HINSTANCE hAppInstance; 00168 extern PWLSESSION WLSession; 00169 00170 #define WLX_SHUTTINGDOWN(Status) \ 00171 (((Status) == WLX_SAS_ACTION_SHUTDOWN) || \ 00172 ((Status) == WLX_SAS_ACTION_SHUTDOWN_POWER_OFF) || \ 00173 ((Status) == WLX_SAS_ACTION_SHUTDOWN_REBOOT) \ 00174 ) 00175 00176 #define WLX_SUSPENDING(Status) \ 00177 (((Status) == WLX_SAS_ACTION_SHUTDOWN_SLEEP) || \ 00178 ((Status) == WLX_SAS_ACTION_SHUTDOWN_SLEEP2) || \ 00179 ((Status) == WLX_SAS_ACTION_SHUTDOWN_HIBERNATE) \ 00180 ) 00181 00182 /* environment.c */ 00183 BOOL 00184 CreateUserEnvironment(IN PWLSESSION Session); 00185 00186 /* sas.c */ 00187 BOOL 00188 SetDefaultLanguage( 00189 IN BOOL UserProfile); 00190 00191 BOOL 00192 InitializeSAS( 00193 IN OUT PWLSESSION Session); 00194 00195 /* screensaver.c */ 00196 BOOL 00197 InitializeScreenSaver( 00198 IN OUT PWLSESSION Session); 00199 00200 VOID 00201 StartScreenSaver( 00202 IN PWLSESSION Session); 00203 00204 /* winlogon.c */ 00205 00206 BOOL 00207 PlaySoundRoutine( 00208 IN LPCWSTR FileName, 00209 IN UINT Logon, 00210 IN UINT Flags); 00211 00212 BOOL 00213 DisplayStatusMessage( 00214 IN PWLSESSION Session, 00215 IN HDESK hDesktop, 00216 IN UINT ResourceId); 00217 00218 BOOL 00219 RemoveStatusMessage( 00220 IN PWLSESSION Session); 00221 00222 /* wlx.c */ 00223 BOOL 00224 GinaInit( 00225 IN OUT PWLSESSION Session); 00226 BOOL 00227 CreateWindowStationAndDesktops( 00228 IN OUT PWLSESSION Session); 00229 00230 NTSTATUS 00231 HandleShutdown( 00232 IN OUT PWLSESSION Session, 00233 IN DWORD wlxAction); 00234 00235 VOID WINAPI WlxUseCtrlAltDel(HANDLE hWlx); 00236 VOID WINAPI WlxSetContextPointer(HANDLE hWlx, PVOID pWlxContext); 00237 VOID WINAPI WlxSasNotify(HANDLE hWlx, DWORD dwSasType); 00238 BOOL WINAPI WlxSetTimeout(HANDLE hWlx, DWORD Timeout); 00239 int WINAPI WlxAssignShellProtection(HANDLE hWlx, HANDLE hToken, HANDLE hProcess, HANDLE hThread); 00240 int WINAPI WlxMessageBox(HANDLE hWlx, HWND hwndOwner, LPWSTR lpszText, LPWSTR lpszTitle, UINT fuStyle); 00241 int WINAPI WlxDialogBox(HANDLE hWlx, HANDLE hInst, LPWSTR lpszTemplate, HWND hwndOwner, DLGPROC dlgprc); 00242 int WINAPI WlxDialogBoxParam(HANDLE hWlx, HANDLE hInst, LPWSTR lpszTemplate, HWND hwndOwner, DLGPROC dlgprc, LPARAM dwInitParam); 00243 int WINAPI WlxDialogBoxIndirect(HANDLE hWlx, HANDLE hInst, LPCDLGTEMPLATE hDialogTemplate, HWND hwndOwner, DLGPROC dlgprc); 00244 int WINAPI WlxDialogBoxIndirectParam(HANDLE hWlx, HANDLE hInst, LPCDLGTEMPLATE hDialogTemplate, HWND hwndOwner, DLGPROC dlgprc, LPARAM dwInitParam); 00245 int WINAPI WlxSwitchDesktopToUser(HANDLE hWlx); 00246 int WINAPI WlxSwitchDesktopToWinlogon(HANDLE hWlx); 00247 int WINAPI WlxChangePasswordNotify(HANDLE hWlx, PWLX_MPR_NOTIFY_INFO pMprInfo, DWORD dwChangeInfo); 00248 BOOL WINAPI WlxGetSourceDesktop(HANDLE hWlx, PWLX_DESKTOP* ppDesktop); 00249 BOOL WINAPI WlxSetReturnDesktop(HANDLE hWlx, PWLX_DESKTOP pDesktop); 00250 BOOL WINAPI WlxCreateUserDesktop(HANDLE hWlx, HANDLE hToken, DWORD Flags, PWSTR pszDesktopName, PWLX_DESKTOP* ppDesktop); 00251 int WINAPI WlxChangePasswordNotifyEx(HANDLE hWlx, PWLX_MPR_NOTIFY_INFO pMprInfo, DWORD dwChangeInfo, PWSTR ProviderName, PVOID Reserved); 00252 BOOL WINAPI WlxCloseUserDesktop(HANDLE hWlx, PWLX_DESKTOP pDesktop, HANDLE hToken); 00253 BOOL WINAPI WlxSetOption(HANDLE hWlx, DWORD Option, ULONG_PTR Value, ULONG_PTR* OldValue); 00254 BOOL WINAPI WlxGetOption(HANDLE hWlx, DWORD Option, ULONG_PTR* Value); 00255 VOID WINAPI WlxWin31Migrate(HANDLE hWlx); 00256 BOOL WINAPI WlxQueryClientCredentials(PWLX_CLIENT_CREDENTIALS_INFO_V1_0 pCred); 00257 BOOL WINAPI WlxQueryInetConnectorCredentials(PWLX_CLIENT_CREDENTIALS_INFO_V1_0 pCred); 00258 DWORD WINAPI WlxQueryConsoleSwitchCredentials(PWLX_CONSOLESWITCH_CREDENTIALS_INFO_V1_0 pCred); 00259 BOOL WINAPI WlxQueryTsLogonCredentials(PWLX_CLIENT_CREDENTIALS_INFO_V2_0 pCred); 00260 BOOL WINAPI WlxDisconnect(VOID); 00261 DWORD WINAPI WlxQueryTerminalServicesData(HANDLE hWlx, PWLX_TERMINAL_SERVICES_DATA pTSData, WCHAR* UserName, WCHAR* Domain); 00262 00263 #endif /* __WINLOGON_MAIN_H__ */ 00264 00265 /* EOF */ Generated on Mon May 28 2012 04:18:36 for ReactOS by
1.7.6.1
|