1 /** 2 * This file has no copyright assigned and is placed in the Public Domain. 3 * This file is part of the mingw-w64 runtime package. 4 * No warranty is given; refer to the file DISCLAIMER.PD within this package. 5 */ 6 #ifndef _WINWLX_ 7 #define _WINWLX_ 8 9 #define WLX_VERSION_1_0 (0X00010000) 10 #define WLX_VERSION_1_1 (0X00010001) 11 #define WLX_VERSION_1_2 (0X00010002) 12 #define WLX_VERSION_1_3 (0X00010003) 13 #define WLX_VERSION_1_4 (0X00010004) 14 #define WLX_CURRENT_VERSION (WLX_VERSION_1_4) 15 16 #define WLX_SAS_TYPE_TIMEOUT (0) 17 #define WLX_SAS_TYPE_CTRL_ALT_DEL (1) 18 #define WLX_SAS_TYPE_SCRNSVR_TIMEOUT (2) 19 #define WLX_SAS_TYPE_SCRNSVR_ACTIVITY (3) 20 #define WLX_SAS_TYPE_USER_LOGOFF (4) 21 #define WLX_SAS_TYPE_SC_INSERT (5) 22 #define WLX_SAS_TYPE_SC_REMOVE (6) 23 #define WLX_SAS_TYPE_AUTHENTICATED (7) 24 #define WLX_SAS_TYPE_SC_FIRST_READER_ARRIVED (8) 25 #define WLX_SAS_TYPE_SC_LAST_READER_REMOVED (9) 26 #define WLX_SAS_TYPE_SWITCHUSER (10) 27 #define WLX_SAS_TYPE_MAX_MSFT_VALUE (127) 28 29 typedef struct _WLX_SC_NOTIFICATION_INFO { 30 PWSTR pszCard; 31 PWSTR pszReader; 32 PWSTR pszContainer; 33 PWSTR pszCryptoProvider; 34 } WLX_SC_NOTIFICATION_INFO,*PWLX_SC_NOTIFICATION_INFO; 35 36 #define WLX_LOGON_OPT_NO_PROFILE (0x00000001) 37 38 #define WLX_PROFILE_TYPE_V1_0 (1) 39 #define WLX_PROFILE_TYPE_V2_0 (2) 40 41 #define WLX_SAS_ACTION_LOGON (1) 42 #define WLX_SAS_ACTION_NONE (2) 43 #define WLX_SAS_ACTION_LOCK_WKSTA (3) 44 #define WLX_SAS_ACTION_LOGOFF (4) 45 #define WLX_SAS_ACTION_SHUTDOWN (5) 46 #define WLX_SAS_ACTION_PWD_CHANGED (6) 47 #define WLX_SAS_ACTION_TASKLIST (7) 48 #define WLX_SAS_ACTION_UNLOCK_WKSTA (8) 49 #define WLX_SAS_ACTION_FORCE_LOGOFF (9) 50 #define WLX_SAS_ACTION_SHUTDOWN_POWER_OFF (10) 51 #define WLX_SAS_ACTION_SHUTDOWN_REBOOT (11) 52 #define WLX_SAS_ACTION_SHUTDOWN_SLEEP (12) 53 #define WLX_SAS_ACTION_SHUTDOWN_SLEEP2 (13) 54 #define WLX_SAS_ACTION_SHUTDOWN_HIBERNATE (14) 55 #define WLX_SAS_ACTION_RECONNECTED (15) 56 #define WLX_SAS_ACTION_DELAYED_FORCE_LOGOFF (16) 57 #define WLX_SAS_ACTION_SWITCH_CONSOLE (17) 58 59 #define WLX_WM_SAS (WM_USER + 601) 60 61 #define WLX_DLG_SAS 101 62 #define WLX_DLG_INPUT_TIMEOUT 102 63 #define WLX_DLG_SCREEN_SAVER_TIMEOUT 103 64 #define WLX_DLG_USER_LOGOFF 104 65 66 typedef struct _WLX_PROFILE_V1_0 { 67 DWORD dwType; 68 PWSTR pszProfile; 69 } WLX_PROFILE_V1_0,*PWLX_PROFILE_V1_0; 70 71 typedef struct _WLX_PROFILE_V2_0 { 72 DWORD dwType; 73 PWSTR pszProfile; 74 PWSTR pszPolicy; 75 PWSTR pszNetworkDefaultUserProfile; 76 PWSTR pszServerName; 77 PWSTR pszEnvironment; 78 } WLX_PROFILE_V2_0,*PWLX_PROFILE_V2_0; 79 80 typedef struct _WLX_MPR_NOTIFY_INFO { 81 PWSTR pszUserName; 82 PWSTR pszDomain; 83 PWSTR pszPassword; 84 PWSTR pszOldPassword; 85 } WLX_MPR_NOTIFY_INFO,*PWLX_MPR_NOTIFY_INFO; 86 87 #define WLX_DIRECTORY_LENGTH 256 88 89 typedef struct _WLX_TERMINAL_SERVICES_DATA { 90 WCHAR ProfilePath[WLX_DIRECTORY_LENGTH + 1]; 91 WCHAR HomeDir[WLX_DIRECTORY_LENGTH + 1]; 92 WCHAR HomeDirDrive[4]; 93 } WLX_TERMINAL_SERVICES_DATA,*PWLX_TERMINAL_SERVICES_DATA; 94 95 #define WLX_CREDENTIAL_TYPE_V1_0 (1) 96 #define WLX_CREDENTIAL_TYPE_V2_0 (2) 97 98 typedef struct _WLX_CLIENT_CREDENTIALS_INFO { 99 DWORD dwType; 100 PWSTR pszUserName; 101 PWSTR pszDomain; 102 PWSTR pszPassword; 103 WINBOOL fPromptForPassword; 104 } WLX_CLIENT_CREDENTIALS_INFO_V1_0,*PWLX_CLIENT_CREDENTIALS_INFO_V1_0; 105 106 typedef struct _WLX_CLIENT_CREDENTIALS_INFO_2_0 { 107 DWORD dwType; 108 PWSTR pszUserName; 109 PWSTR pszDomain; 110 PWSTR pszPassword; 111 WINBOOL fPromptForPassword; 112 WINBOOL fDisconnectOnLogonFailure; 113 } WLX_CLIENT_CREDENTIALS_INFO_V2_0,*PWLX_CLIENT_CREDENTIALS_INFO_V2_0; 114 115 #define WLX_CONSOLESWITCHCREDENTIAL_TYPE_V1_0 (1) 116 117 typedef struct _WLX_CONSOLESWITCH_CREDENTIALS_INFO { 118 DWORD dwType; 119 HANDLE UserToken; 120 LUID LogonId; 121 QUOTA_LIMITS Quotas; 122 PWSTR UserName; 123 PWSTR Domain; 124 LARGE_INTEGER LogonTime; 125 WINBOOL SmartCardLogon; 126 ULONG ProfileLength; 127 DWORD MessageType; 128 USHORT LogonCount; 129 USHORT BadPasswordCount; 130 LARGE_INTEGER ProfileLogonTime; 131 LARGE_INTEGER LogoffTime; 132 LARGE_INTEGER KickOffTime; 133 LARGE_INTEGER PasswordLastSet; 134 LARGE_INTEGER PasswordCanChange; 135 LARGE_INTEGER PasswordMustChange; 136 PWSTR LogonScript; 137 PWSTR HomeDirectory; 138 PWSTR FullName; 139 PWSTR ProfilePath; 140 PWSTR HomeDirectoryDrive; 141 PWSTR LogonServer; 142 ULONG UserFlags; 143 ULONG PrivateDataLen; 144 PBYTE PrivateData; 145 } WLX_CONSOLESWITCH_CREDENTIALS_INFO_V1_0,*PWLX_CONSOLESWITCH_CREDENTIALS_INFO_V1_0; 146 147 WINBOOL WINAPI WlxNegotiate(DWORD dwWinlogonVersion,PDWORD pdwDllVersion); 148 WINBOOL WINAPI WlxInitialize(LPWSTR lpWinsta,HANDLE hWlx,PVOID pvReserved,PVOID pWinlogonFunctions,PVOID *pWlxContext); 149 VOID WINAPI WlxDisplaySASNotice(PVOID pWlxContext); 150 int WINAPI WlxLoggedOutSAS(PVOID pWlxContext,DWORD dwSasType,PLUID pAuthenticationId,PSID pLogonSid,PDWORD pdwOptions,PHANDLE phToken,PWLX_MPR_NOTIFY_INFO pNprNotifyInfo,PVOID *pProfile); 151 WINBOOL WINAPI WlxActivateUserShell(PVOID pWlxContext,PWSTR pszDesktopName,PWSTR pszMprLogonScript,PVOID pEnvironment); 152 int WINAPI WlxLoggedOnSAS(PVOID pWlxContext,DWORD dwSasType,PVOID pReserved); 153 VOID WINAPI WlxDisplayLockedNotice(PVOID pWlxContext); 154 int WINAPI WlxWkstaLockedSAS(PVOID pWlxContext,DWORD dwSasType); 155 WINBOOL WINAPI WlxIsLockOk(PVOID pWlxContext); 156 WINBOOL WINAPI WlxIsLogoffOk(PVOID pWlxContext); 157 VOID WINAPI WlxLogoff(PVOID pWlxContext); 158 VOID WINAPI WlxShutdown(PVOID pWlxContext,DWORD ShutdownType); 159 WINBOOL WINAPI WlxScreenSaverNotify(PVOID pWlxContext,WINBOOL *pSecure); 160 WINBOOL WINAPI WlxStartApplication(PVOID pWlxContext,PWSTR pszDesktopName,PVOID pEnvironment,PWSTR pszCmdLine); 161 WINBOOL WINAPI WlxNetworkProviderLoad(PVOID pWlxContext,PWLX_MPR_NOTIFY_INFO pNprNotifyInfo); 162 163 #define STATUSMSG_OPTION_NOANIMATION 0x00000001 164 #define STATUSMSG_OPTION_SETFOREGROUND 0x00000002 165 166 WINBOOL WINAPI WlxDisplayStatusMessage(PVOID pWlxContext,HDESK hDesktop,DWORD dwOptions,PWSTR pTitle,PWSTR pMessage); 167 WINBOOL WINAPI WlxGetStatusMessage(PVOID pWlxContext,DWORD *pdwOptions,PWSTR pMessage,DWORD dwBufferSize); 168 WINBOOL WINAPI WlxRemoveStatusMessage(PVOID pWlxContext); 169 WINBOOL WINAPI WlxGetConsoleSwitchCredentials (PVOID pWlxContext,PVOID pCredInfo); 170 VOID WINAPI WlxReconnectNotify (PVOID pWlxContext); 171 VOID WINAPI WlxDisconnectNotify (PVOID pWlxContext); 172 173 typedef struct _WLX_DESKTOP { 174 DWORD Size; 175 DWORD Flags; 176 HDESK hDesktop; 177 PWSTR pszDesktopName; 178 } WLX_DESKTOP,*PWLX_DESKTOP; 179 180 #define WLX_DESKTOP_NAME 0x00000001 181 #define WLX_DESKTOP_HANDLE 0x00000002 182 183 typedef VOID (WINAPI *PWLX_USE_CTRL_ALT_DEL)(HANDLE hWlx); 184 typedef VOID (WINAPI *PWLX_SET_CONTEXT_POINTER)(HANDLE hWlx,PVOID pWlxContext); 185 typedef VOID (WINAPI *PWLX_SAS_NOTIFY)(HANDLE hWlx,DWORD dwSasType); 186 typedef WINBOOL (WINAPI *PWLX_SET_TIMEOUT)(HANDLE hWlx,DWORD Timeout); 187 typedef int (WINAPI *PWLX_ASSIGN_SHELL_PROTECTION)(HANDLE hWlx,HANDLE hToken,HANDLE hProcess,HANDLE hThread); 188 typedef int (WINAPI *PWLX_MESSAGE_BOX)(HANDLE hWlx,HWND hwndOwner,LPWSTR lpszText,LPWSTR lpszTitle,UINT fuStyle); 189 typedef int (WINAPI *PWLX_DIALOG_BOX)(HANDLE hWlx,HANDLE hInst,LPWSTR lpszTemplate,HWND hwndOwner,DLGPROC dlgprc); 190 typedef int (WINAPI *PWLX_DIALOG_BOX_INDIRECT)(HANDLE hWlx,HANDLE hInst,LPCDLGTEMPLATE hDialogTemplate,HWND hwndOwner,DLGPROC dlgprc); 191 typedef int (WINAPI *PWLX_DIALOG_BOX_PARAM)(HANDLE hWlx,HANDLE hInst,LPWSTR lpszTemplate,HWND hwndOwner,DLGPROC dlgprc,LPARAM dwInitParam); 192 typedef int (WINAPI *PWLX_DIALOG_BOX_INDIRECT_PARAM)(HANDLE hWlx,HANDLE hInst,LPCDLGTEMPLATE hDialogTemplate,HWND hwndOwner,DLGPROC dlgprc,LPARAM dwInitParam); 193 typedef int (WINAPI *PWLX_SWITCH_DESKTOP_TO_USER)(HANDLE hWlx); 194 typedef int (WINAPI *PWLX_SWITCH_DESKTOP_TO_WINLOGON)(HANDLE hWlx); 195 typedef int (WINAPI *PWLX_CHANGE_PASSWORD_NOTIFY)(HANDLE hWlx,PWLX_MPR_NOTIFY_INFO pMprInfo,DWORD dwChangeInfo); 196 typedef WINBOOL (WINAPI *PWLX_GET_SOURCE_DESKTOP)(HANDLE hWlx,PWLX_DESKTOP *ppDesktop); 197 typedef WINBOOL (WINAPI *PWLX_SET_RETURN_DESKTOP)(HANDLE hWlx,PWLX_DESKTOP pDesktop); 198 typedef WINBOOL (WINAPI *PWLX_CREATE_USER_DESKTOP)(HANDLE hWlx,HANDLE hToken,DWORD Flags,PWSTR pszDesktopName,PWLX_DESKTOP *ppDesktop); 199 200 #define WLX_CREATE_INSTANCE_ONLY 0x00000001 201 #define WLX_CREATE_USER 0x00000002 202 203 typedef int (WINAPI *PWLX_CHANGE_PASSWORD_NOTIFY_EX)(HANDLE hWlx,PWLX_MPR_NOTIFY_INFO pMprInfo,DWORD dwChangeInfo,PWSTR ProviderName,PVOID Reserved); 204 typedef WINBOOL (WINAPI *PWLX_CLOSE_USER_DESKTOP)(HANDLE hWlx,PWLX_DESKTOP pDesktop,HANDLE hToken); 205 typedef WINBOOL (WINAPI *PWLX_SET_OPTION)(HANDLE hWlx,DWORD Option,ULONG_PTR Value,ULONG_PTR *OldValue); 206 typedef WINBOOL (WINAPI *PWLX_GET_OPTION)(HANDLE hWlx,DWORD Option,ULONG_PTR *Value); 207 typedef VOID (WINAPI *PWLX_WIN31_MIGRATE)(HANDLE hWlx); 208 typedef WINBOOL (WINAPI *PWLX_QUERY_CLIENT_CREDENTIALS)(PWLX_CLIENT_CREDENTIALS_INFO_V1_0 pCred); 209 typedef WINBOOL (WINAPI *PWLX_QUERY_IC_CREDENTIALS)(PWLX_CLIENT_CREDENTIALS_INFO_V1_0 pCred); 210 typedef WINBOOL (WINAPI *PWLX_QUERY_TS_LOGON_CREDENTIALS)(PWLX_CLIENT_CREDENTIALS_INFO_V2_0 pCred); 211 typedef WINBOOL (WINAPI *PWLX_DISCONNECT)(); 212 typedef DWORD (WINAPI *PWLX_QUERY_TERMINAL_SERVICES_DATA)(HANDLE hWlx,PWLX_TERMINAL_SERVICES_DATA pTSData,WCHAR *UserName,WCHAR *Domain); 213 typedef DWORD (WINAPI *PWLX_QUERY_CONSOLESWITCH_CREDENTIALS)(PWLX_CONSOLESWITCH_CREDENTIALS_INFO_V1_0 pCred); 214 215 #define WLX_OPTION_USE_CTRL_ALT_DEL 0x00000001 216 #define WLX_OPTION_CONTEXT_POINTER 0x00000002 217 #define WLX_OPTION_USE_SMART_CARD 0x00000003 218 #define WLX_OPTION_FORCE_LOGOFF_TIME 0x00000004 219 #define WLX_OPTION_IGNORE_AUTO_LOGON 0x00000008 220 #define WLX_OPTION_NO_SWITCH_ON_SAS 0x00000009 221 222 #define WLX_OPTION_SMART_CARD_PRESENT 0x00010001 223 #define WLX_OPTION_SMART_CARD_INFO 0x00010002 224 #define WLX_OPTION_DISPATCH_TABLE_SIZE 0x00010003 225 226 typedef struct _WLX_DISPATCH_VERSION_1_0 { 227 PWLX_USE_CTRL_ALT_DEL WlxUseCtrlAltDel; 228 PWLX_SET_CONTEXT_POINTER WlxSetContextPointer; 229 PWLX_SAS_NOTIFY WlxSasNotify; 230 PWLX_SET_TIMEOUT WlxSetTimeout; 231 PWLX_ASSIGN_SHELL_PROTECTION WlxAssignShellProtection; 232 PWLX_MESSAGE_BOX WlxMessageBox; 233 PWLX_DIALOG_BOX WlxDialogBox; 234 PWLX_DIALOG_BOX_PARAM WlxDialogBoxParam; 235 PWLX_DIALOG_BOX_INDIRECT WlxDialogBoxIndirect; 236 PWLX_DIALOG_BOX_INDIRECT_PARAM WlxDialogBoxIndirectParam; 237 PWLX_SWITCH_DESKTOP_TO_USER WlxSwitchDesktopToUser; 238 PWLX_SWITCH_DESKTOP_TO_WINLOGON WlxSwitchDesktopToWinlogon; 239 PWLX_CHANGE_PASSWORD_NOTIFY WlxChangePasswordNotify; 240 } WLX_DISPATCH_VERSION_1_0,*PWLX_DISPATCH_VERSION_1_0; 241 242 typedef struct _WLX_DISPATCH_VERSION_1_1 { 243 PWLX_USE_CTRL_ALT_DEL WlxUseCtrlAltDel; 244 PWLX_SET_CONTEXT_POINTER WlxSetContextPointer; 245 PWLX_SAS_NOTIFY WlxSasNotify; 246 PWLX_SET_TIMEOUT WlxSetTimeout; 247 PWLX_ASSIGN_SHELL_PROTECTION WlxAssignShellProtection; 248 PWLX_MESSAGE_BOX WlxMessageBox; 249 PWLX_DIALOG_BOX WlxDialogBox; 250 PWLX_DIALOG_BOX_PARAM WlxDialogBoxParam; 251 PWLX_DIALOG_BOX_INDIRECT WlxDialogBoxIndirect; 252 PWLX_DIALOG_BOX_INDIRECT_PARAM WlxDialogBoxIndirectParam; 253 PWLX_SWITCH_DESKTOP_TO_USER WlxSwitchDesktopToUser; 254 PWLX_SWITCH_DESKTOP_TO_WINLOGON WlxSwitchDesktopToWinlogon; 255 PWLX_CHANGE_PASSWORD_NOTIFY WlxChangePasswordNotify; 256 PWLX_GET_SOURCE_DESKTOP WlxGetSourceDesktop; 257 PWLX_SET_RETURN_DESKTOP WlxSetReturnDesktop; 258 PWLX_CREATE_USER_DESKTOP WlxCreateUserDesktop; 259 PWLX_CHANGE_PASSWORD_NOTIFY_EX WlxChangePasswordNotifyEx; 260 } WLX_DISPATCH_VERSION_1_1,*PWLX_DISPATCH_VERSION_1_1; 261 262 typedef struct _WLX_DISPATCH_VERSION_1_2 { 263 PWLX_USE_CTRL_ALT_DEL WlxUseCtrlAltDel; 264 PWLX_SET_CONTEXT_POINTER WlxSetContextPointer; 265 PWLX_SAS_NOTIFY WlxSasNotify; 266 PWLX_SET_TIMEOUT WlxSetTimeout; 267 PWLX_ASSIGN_SHELL_PROTECTION WlxAssignShellProtection; 268 PWLX_MESSAGE_BOX WlxMessageBox; 269 PWLX_DIALOG_BOX WlxDialogBox; 270 PWLX_DIALOG_BOX_PARAM WlxDialogBoxParam; 271 PWLX_DIALOG_BOX_INDIRECT WlxDialogBoxIndirect; 272 PWLX_DIALOG_BOX_INDIRECT_PARAM WlxDialogBoxIndirectParam; 273 PWLX_SWITCH_DESKTOP_TO_USER WlxSwitchDesktopToUser; 274 PWLX_SWITCH_DESKTOP_TO_WINLOGON WlxSwitchDesktopToWinlogon; 275 PWLX_CHANGE_PASSWORD_NOTIFY WlxChangePasswordNotify; 276 PWLX_GET_SOURCE_DESKTOP WlxGetSourceDesktop; 277 PWLX_SET_RETURN_DESKTOP WlxSetReturnDesktop; 278 PWLX_CREATE_USER_DESKTOP WlxCreateUserDesktop; 279 PWLX_CHANGE_PASSWORD_NOTIFY_EX WlxChangePasswordNotifyEx; 280 PWLX_CLOSE_USER_DESKTOP WlxCloseUserDesktop; 281 } WLX_DISPATCH_VERSION_1_2,*PWLX_DISPATCH_VERSION_1_2; 282 283 typedef struct _WLX_DISPATCH_VERSION_1_3 { 284 PWLX_USE_CTRL_ALT_DEL WlxUseCtrlAltDel; 285 PWLX_SET_CONTEXT_POINTER WlxSetContextPointer; 286 PWLX_SAS_NOTIFY WlxSasNotify; 287 PWLX_SET_TIMEOUT WlxSetTimeout; 288 PWLX_ASSIGN_SHELL_PROTECTION WlxAssignShellProtection; 289 PWLX_MESSAGE_BOX WlxMessageBox; 290 PWLX_DIALOG_BOX WlxDialogBox; 291 PWLX_DIALOG_BOX_PARAM WlxDialogBoxParam; 292 PWLX_DIALOG_BOX_INDIRECT WlxDialogBoxIndirect; 293 PWLX_DIALOG_BOX_INDIRECT_PARAM WlxDialogBoxIndirectParam; 294 PWLX_SWITCH_DESKTOP_TO_USER WlxSwitchDesktopToUser; 295 PWLX_SWITCH_DESKTOP_TO_WINLOGON WlxSwitchDesktopToWinlogon; 296 PWLX_CHANGE_PASSWORD_NOTIFY WlxChangePasswordNotify; 297 PWLX_GET_SOURCE_DESKTOP WlxGetSourceDesktop; 298 PWLX_SET_RETURN_DESKTOP WlxSetReturnDesktop; 299 PWLX_CREATE_USER_DESKTOP WlxCreateUserDesktop; 300 PWLX_CHANGE_PASSWORD_NOTIFY_EX WlxChangePasswordNotifyEx; 301 PWLX_CLOSE_USER_DESKTOP WlxCloseUserDesktop; 302 PWLX_SET_OPTION WlxSetOption; 303 PWLX_GET_OPTION WlxGetOption; 304 PWLX_WIN31_MIGRATE WlxWin31Migrate; 305 PWLX_QUERY_CLIENT_CREDENTIALS WlxQueryClientCredentials; 306 PWLX_QUERY_IC_CREDENTIALS WlxQueryInetConnectorCredentials; 307 PWLX_DISCONNECT WlxDisconnect; 308 PWLX_QUERY_TERMINAL_SERVICES_DATA WlxQueryTerminalServicesData; 309 } WLX_DISPATCH_VERSION_1_3,*PWLX_DISPATCH_VERSION_1_3; 310 311 typedef struct _WLX_DISPATCH_VERSION_1_4 { 312 PWLX_USE_CTRL_ALT_DEL WlxUseCtrlAltDel; 313 PWLX_SET_CONTEXT_POINTER WlxSetContextPointer; 314 PWLX_SAS_NOTIFY WlxSasNotify; 315 PWLX_SET_TIMEOUT WlxSetTimeout; 316 PWLX_ASSIGN_SHELL_PROTECTION WlxAssignShellProtection; 317 PWLX_MESSAGE_BOX WlxMessageBox; 318 PWLX_DIALOG_BOX WlxDialogBox; 319 PWLX_DIALOG_BOX_PARAM WlxDialogBoxParam; 320 PWLX_DIALOG_BOX_INDIRECT WlxDialogBoxIndirect; 321 PWLX_DIALOG_BOX_INDIRECT_PARAM WlxDialogBoxIndirectParam; 322 PWLX_SWITCH_DESKTOP_TO_USER WlxSwitchDesktopToUser; 323 PWLX_SWITCH_DESKTOP_TO_WINLOGON WlxSwitchDesktopToWinlogon; 324 PWLX_CHANGE_PASSWORD_NOTIFY WlxChangePasswordNotify; 325 PWLX_GET_SOURCE_DESKTOP WlxGetSourceDesktop; 326 PWLX_SET_RETURN_DESKTOP WlxSetReturnDesktop; 327 PWLX_CREATE_USER_DESKTOP WlxCreateUserDesktop; 328 PWLX_CHANGE_PASSWORD_NOTIFY_EX WlxChangePasswordNotifyEx; 329 PWLX_CLOSE_USER_DESKTOP WlxCloseUserDesktop; 330 PWLX_SET_OPTION WlxSetOption; 331 PWLX_GET_OPTION WlxGetOption; 332 PWLX_WIN31_MIGRATE WlxWin31Migrate; 333 PWLX_QUERY_CLIENT_CREDENTIALS WlxQueryClientCredentials; 334 PWLX_QUERY_IC_CREDENTIALS WlxQueryInetConnectorCredentials; 335 PWLX_DISCONNECT WlxDisconnect; 336 PWLX_QUERY_TERMINAL_SERVICES_DATA WlxQueryTerminalServicesData; 337 PWLX_QUERY_CONSOLESWITCH_CREDENTIALS WlxQueryConsoleSwitchCredentials; 338 PWLX_QUERY_TS_LOGON_CREDENTIALS WlxQueryTsLogonCredentials; 339 } WLX_DISPATCH_VERSION_1_4,*PWLX_DISPATCH_VERSION_1_4; 340 341 typedef DWORD (*PFNMSGECALLBACK)(WINBOOL bVerbose,LPWSTR lpMessage); 342 343 typedef struct _WLX_NOTIFICATION_INFO { 344 ULONG Size; 345 ULONG Flags; 346 PWSTR UserName; 347 PWSTR Domain; 348 PWSTR WindowStation; 349 HANDLE hToken; 350 HDESK hDesktop; 351 PFNMSGECALLBACK pStatusCallback; 352 } WLX_NOTIFICATION_INFO,*PWLX_NOTIFICATION_INFO; 353 #endif 354