ReactOS Fundraising Campaign 2012
 
€ 4,410 / € 30,000

Information | Donate

Home | Info | Community | Development | myReactOS | Contact Us

  1. Home
  2. Community
  3. Development
  4. myReactOS
  5. Fundraiser 2012

  1. Main Page
  2. Alphabetical List
  3. Data Structures
  4. Directories
  5. File List
  6. Data Fields
  7. Globals
  8. Related Pages

ReactOS Development > Doxygen

winlogon.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 doxygen 1.7.6.1

ReactOS is a registered trademark or a trademark of ReactOS Foundation in the United States and other countries.