1 /* 2 * WinWlx.h 3 * 4 * WinLogon eXtension 5 * 6 * Contributors: 7 * Created by Thomas Weidenmueller <w3seek@users.sourceforge.net> 8 * 9 * THIS SOFTWARE IS NOT COPYRIGHTED 10 * 11 * This source code is offered for use in the public domain. You may 12 * use, modify or distribute it freely. 13 * 14 * This code is distributed in the hope that it will be useful but 15 * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY 16 * DISCLAIMED. This includes but is not limited to warranties of 17 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 18 * 19 */ 20 21 #ifndef __WINWLX_H 22 #define __WINWLX_H 23 24 #ifdef __cplusplus 25 extern "C" { 26 #endif 27 28 #define WLX_VERSION_1_0 0x00010000 29 #define WLX_VERSION_1_1 0x00010001 30 #define WLX_VERSION_1_2 0x00010002 31 #define WLX_VERSION_1_3 0x00010003 32 #define WLX_VERSION_1_4 0x00010004 33 #define WLX_CURRENT_VERSION (WLX_VERSION_1_4) 34 35 #define WLX_SAS_TYPE_TIMEOUT 0x0000 36 #define WLX_SAS_TYPE_CTRL_ALT_DEL 0x0001 37 #define WLX_SAS_TYPE_SCRNSVR_TIMEOUT 0x0002 38 #define WLX_SAS_TYPE_SCRNSVR_ACTIVITY 0x0003 39 #define WLX_SAS_TYPE_USER_LOGOFF 0x0004 40 #define WLX_SAS_TYPE_SC_INSERT 0x0005 41 #define WLX_SAS_TYPE_SC_REMOVE 0x0006 42 #define WLX_SAS_TYPE_AUTHENTICATED 0x0007 43 #define WLX_SAS_TYPE_SC_FIRST_READER_ARRIVED 0x0008 44 #define WLX_SAS_TYPE_SC_LAST_READER_REMOVED 0x0009 45 #define WLX_SAS_TYPE_SWITCHUSER 0x000A 46 #define WLX_SAS_TYPE_MAX_MSFT_VALUE 0x007F 47 48 #define WLX_LOGON_OPT_NO_PROFILE 0x0001 49 50 #define WLX_PROFILE_TYPE_V1_0 0x0001 51 #define WLX_PROFILE_TYPE_V2_0 0x0002 /* Default */ 52 53 #define WLX_SAS_ACTION_LOGON 0x0001 54 #define WLX_SAS_ACTION_NONE 0x0002 55 #define WLX_SAS_ACTION_LOCK_WKSTA 0x0003 56 #define WLX_SAS_ACTION_LOGOFF 0x0004 57 #define WLX_SAS_ACTION_SHUTDOWN 0x0005 58 #define WLX_SAS_ACTION_PWD_CHANGED 0x0006 59 #define WLX_SAS_ACTION_TASKLIST 0x0007 60 #define WLX_SAS_ACTION_UNLOCK_WKSTA 0x0008 61 #define WLX_SAS_ACTION_FORCE_LOGOFF 0x0009 62 #define WLX_SAS_ACTION_SHUTDOWN_POWER_OFF 0x000A 63 #define WLX_SAS_ACTION_SHUTDOWN_REBOOT 0x000B 64 #define WLX_SAS_ACTION_SHUTDOWN_SLEEP 0x000C 65 #define WLX_SAS_ACTION_SHUTDOWN_SLEEP2 0x000D 66 #define WLX_SAS_ACTION_SHUTDOWN_HIBERNATE 0x000E 67 #define WLX_SAS_ACTION_RECONNECTED 0x000F 68 #define WLX_SAS_ACTION_DELAYED_FORCE_LOGOFF 0x0010 69 #define WLX_SAS_ACTION_SWITCH_CONSOLE 0x0011 70 71 #define WLX_WM_SAS (WM_USER + 0x0259) 72 73 #define WLX_DLG_SAS 0x0065 74 #define WLX_DLG_INPUT_TIMEOUT 0x0066 /* Input (keys, ...) timed out */ 75 #define WLX_DLG_SCREEN_SAVER_TIMEOUT 0x0067 /* Screen saver activated */ 76 #define WLX_DLG_USER_LOGOFF 0x0068 /* User logged off */ 77 78 #define WLX_DIRECTORY_LENGTH 0x0100 79 80 #define WLX_CREDENTIAL_TYPE_V1_0 0x0001 81 #define WLX_CREDENTIAL_TYPE_V2_0 0x0002 82 83 #define WLX_CONSOLESWITCHCREDENTIAL_TYPE_V1_0 0x0001 84 85 #define STATUSMSG_OPTION_NOANIMATION 0x0001 86 #define STATUSMSG_OPTION_SETFOREGROUND 0x0002 87 88 typedef struct _WLX_CLIENT_CREDENTIALS_INFO { 89 DWORD dwType; 90 PWSTR pszUserName; 91 PWSTR pszDomain; 92 PWSTR pszPassword; 93 BOOL fPromptForPassword; 94 } WLX_CLIENT_CREDENTIALS_INFO_V1_0, *PWLX_CLIENT_CREDENTIALS_INFO_V1_0; 95 96 typedef struct _WLX_CLIENT_CREDENTIALS_INFO_2_0 { 97 DWORD dwType; 98 PWSTR pszUserName; 99 PWSTR pszDomain; 100 PWSTR pszPassword; 101 BOOL fPromptForPassword; 102 BOOL fDisconnectOnLogonFailure; 103 } WLX_CLIENT_CREDENTIALS_INFO_V2_0, *PWLX_CLIENT_CREDENTIALS_INFO_V2_0; 104 105 typedef struct _WLX_CONSOLESWITCH_CREDENTIALS_INFO { 106 DWORD dwType; 107 HANDLE UserToken; 108 LUID LogonId; 109 QUOTA_LIMITS Quotas; 110 PWSTR UserName; 111 PWSTR Domain; 112 LARGE_INTEGER LogonTime; 113 BOOL SmartCardLogon; 114 ULONG ProfileLength; 115 DWORD MessageType; 116 USHORT LogonCount; 117 USHORT BadPasswordCount; 118 LARGE_INTEGER ProfileLogonTime; 119 LARGE_INTEGER LogoffTime; 120 LARGE_INTEGER KickOffTime; 121 LARGE_INTEGER PasswordLastSet; 122 LARGE_INTEGER PasswordCanChange; 123 LARGE_INTEGER PasswordMustChange; 124 PWSTR LogonScript; 125 PWSTR HomeDirectory; 126 PWSTR FullName; 127 PWSTR ProfilePath; 128 PWSTR HomeDirectoryDrive; 129 PWSTR LogonServer; 130 ULONG UserFlags; 131 ULONG PrivateDataLen; 132 PBYTE PrivateData; 133 } WLX_CONSOLESWITCH_CREDENTIALS_INFO_V1_0, *PWLX_CONSOLESWITCH_CREDENTIALS_INFO_V1_0; 134 135 typedef struct _WLX_MPR_NOTIFY_INFO { 136 PWSTR pszUserName; 137 PWSTR pszDomain; 138 PWSTR pszPassword; 139 PWSTR pszOldPassword; 140 } WLX_MPR_NOTIFY_INFO, *PWLX_MPR_NOTIFY_INFO; 141 142 typedef struct _WLX_PROFILE_V1_0 { 143 DWORD dwType; 144 PWSTR pszProfile; 145 } WLX_PROFILE_V1_0, *PWLX_PROFILE_V1_0; 146 147 typedef struct _WLX_PROFILE_V2_0 { 148 DWORD dwType; 149 PWSTR pszProfile; 150 PWSTR pszPolicy; 151 PWSTR pszNetworkDefaultUserProfile; 152 PWSTR pszServerName; 153 PWSTR pszEnvironment; 154 } WLX_PROFILE_V2_0, *PWLX_PROFILE_V2_0; 155 156 typedef struct _WLX_SC_NOTIFICATION_INFO { 157 PWSTR pszCard; 158 PWSTR pszReader; 159 PWSTR pszContainer; 160 PWSTR pszCryptoProvider; 161 } WLX_SC_NOTIFICATION_INFO, *PWLX_SC_NOTIFICATION_INFO; 162 163 typedef struct _WLX_TERMINAL_SERVICES_DATA { 164 WCHAR ProfilePath[WLX_DIRECTORY_LENGTH + 1]; 165 WCHAR HomeDir[WLX_DIRECTORY_LENGTH + 1]; 166 WCHAR HomeDirDrive[4]; 167 } WLX_TERMINAL_SERVICES_DATA, *PWLX_TERMINAL_SERVICES_DATA; 168 169 /* GINA Version 1.0 */ 170 171 BOOL 172 WINAPI 173 WlxActivateUserShell( 174 _In_ PVOID pWlxContext, 175 _In_ PWSTR pszDesktopName, 176 _In_ PWSTR pszMprLogonScript, 177 _In_ PVOID pEnvironment); 178 179 VOID 180 WINAPI 181 WlxDisplayLockedNotice( 182 _In_ PVOID pWlxContext); 183 184 VOID 185 WINAPI 186 WlxDisplaySASNotice( 187 _In_ PVOID pWlxContext); 188 189 BOOL 190 WINAPI 191 WlxInitialize( 192 _In_ LPWSTR lpWinsta, 193 _In_ HANDLE hWlx, 194 _In_ PVOID pvReserved, 195 _In_ PVOID pWinlogonFunctions, 196 _Out_ PVOID *pWlxContext); 197 198 BOOL 199 WINAPI 200 WlxIsLockOk( 201 _In_ PVOID pWlxContext); 202 203 BOOL 204 WINAPI 205 WlxIsLogoffOk( 206 _In_ PVOID pWlxContext); 207 208 INT 209 WINAPI 210 WlxLoggedOnSAS( 211 _In_ PVOID pWlxContext, 212 _In_ DWORD dwSasType, 213 _In_ PVOID pReserved); 214 215 INT 216 WINAPI 217 WlxLoggedOutSAS( 218 _In_ PVOID pWlxContext, 219 _In_ DWORD dwSasType, 220 _Out_ PLUID pAuthenticationId, 221 _Inout_ PSID pLogonSid, 222 _Out_ PDWORD pdwOptions, 223 _Out_ PHANDLE phToken, 224 _Out_ PWLX_MPR_NOTIFY_INFO pNprNotifyInfo, 225 _Out_ PVOID *pProfile); 226 227 VOID 228 WINAPI 229 WlxLogoff( 230 _In_ PVOID pWlxContext); 231 232 BOOL 233 WINAPI 234 WlxNegotiate( 235 _In_ DWORD dwWinlogonVersion, 236 _Out_ PDWORD pdwDllVersion); 237 238 VOID 239 WINAPI 240 WlxShutdown( 241 _In_ PVOID pWlxContext, 242 _In_ DWORD ShutdownType); 243 244 INT 245 WINAPI 246 WlxWkstaLockedSAS( 247 _In_ PVOID pWlxContext, 248 _In_ DWORD dwSasType); 249 250 /* GINA Version 1.1 */ 251 252 BOOL 253 WINAPI 254 WlxScreenSaverNotify( 255 _In_ PVOID pWlxContext, 256 _Inout_ BOOL *pSecure); 257 258 BOOL 259 WINAPI 260 WlxStartApplication( 261 _In_ PVOID pWlxContext, 262 _In_ PWSTR pszDesktopName, 263 _In_ PVOID pEnvironment, 264 _In_ PWSTR pszCmdLine); 265 266 /* GINA Version 1.3 */ 267 268 BOOL 269 WINAPI 270 WlxDisplayStatusMessage( 271 _In_ PVOID pWlxContext, 272 _In_ HDESK hDesktop, 273 _In_ DWORD dwOptions, 274 _In_ PWSTR pTitle, 275 _In_ PWSTR pMessage); 276 277 BOOL 278 WINAPI 279 WlxGetStatusMessage( 280 _In_ PVOID pWlxContext, 281 _Out_ DWORD *pdwOptions, 282 _Out_ PWSTR pMessage, 283 _In_ DWORD dwBufferSize); 284 285 BOOL 286 WINAPI 287 WlxNetworkProviderLoad( 288 _In_ PVOID pWlxContext, 289 _Out_ PWLX_MPR_NOTIFY_INFO pNprNotifyInfo); 290 291 BOOL 292 WINAPI 293 WlxRemoveStatusMessage( 294 _In_ PVOID pWlxContext); 295 296 /* GINA Version 1.4 */ 297 298 VOID 299 WINAPI 300 WlxDisconnectNotify( 301 _In_ PVOID pWlxContext); 302 303 BOOL 304 WINAPI 305 WlxGetConsoleSwitchCredentials( 306 _In_ PVOID pWlxContext, 307 _Out_ PVOID pCredInfo); 308 309 VOID 310 WINAPI 311 WlxReconnectNotify( 312 _In_ PVOID pWlxContext); 313 314 /* Services that Winlogon provides */ 315 316 #define WLX_DESKTOP_NAME 0x0001 /* Name present */ 317 #define WLX_DESKTOP_HANDLE 0x0002 /* Handle present */ 318 319 #define WLX_CREATE_INSTANCE_ONLY 0x0001 320 #define WLX_CREATE_USER 0x0002 321 322 #define WLX_OPTION_USE_CTRL_ALT_DEL 0x0001 323 #define WLX_OPTION_CONTEXT_POINTER 0x0002 324 #define WLX_OPTION_USE_SMART_CARD 0x0003 325 #define WLX_OPTION_FORCE_LOGOFF_TIME 0x0004 326 #define WLX_OPTION_IGNORE_AUTO_LOGON 0x0008 327 #define WLX_OPTION_NO_SWITCH_ON_SAS 0x0009 328 329 #define WLX_OPTION_SMART_CARD_PRESENT 0x00010001 330 #define WLX_OPTION_SMART_CARD_INFO 0x00010002 331 #define WLX_OPTION_DISPATCH_TABLE_SIZE 0x00010003 332 333 typedef struct _WLX_DESKTOP { 334 DWORD Size; 335 DWORD Flags; 336 HDESK hDesktop; 337 PWSTR pszDesktopName; 338 } WLX_DESKTOP, *PWLX_DESKTOP; 339 340 typedef INT 341 (WINAPI *PWLX_ASSIGN_SHELL_PROTECTION)( 342 _In_ HANDLE hWlx, 343 _In_ HANDLE hToken, 344 _In_ HANDLE hProcess, 345 _In_ HANDLE hThread); 346 347 typedef INT 348 (WINAPI *PWLX_CHANGE_PASSWORD_NOTIFY)( 349 _In_ HANDLE hWlx, 350 _In_ PWLX_MPR_NOTIFY_INFO pMprInfo, 351 _In_ DWORD dwChangeInfo); 352 353 typedef INT 354 (WINAPI *PWLX_CHANGE_PASSWORD_NOTIFY_EX)( 355 _In_ HANDLE hWlx, 356 _In_ PWLX_MPR_NOTIFY_INFO pMprInfo, 357 _In_ DWORD dwChangeInfo, 358 _In_ PWSTR ProviderName, 359 _In_ PVOID Reserved); 360 361 typedef BOOL 362 (WINAPI *PWLX_CLOSE_USER_DESKTOP)( 363 _In_ HANDLE hWlx, 364 _In_ PWLX_DESKTOP pDesktop, 365 _In_ HANDLE hToken); 366 367 typedef BOOL 368 (WINAPI *PWLX_CREATE_USER_DESKTOP)( 369 _In_ HANDLE hWlx, 370 _In_ HANDLE hToken, 371 _In_ DWORD Flags, 372 _In_ PWSTR pszDesktopName, 373 _Out_ PWLX_DESKTOP *ppDesktop); 374 375 typedef INT 376 (WINAPI *PWLX_DIALOG_BOX)( 377 _In_ HANDLE hWlx, 378 _In_ HANDLE hInst, 379 _In_ LPWSTR lpszTemplate, 380 _In_ HWND hwndOwner, 381 _In_ DLGPROC dlgprc); 382 383 typedef INT 384 (WINAPI *PWLX_DIALOG_BOX_INDIRECT)( 385 _In_ HANDLE hWlx, 386 _In_ HANDLE hInst, 387 _In_ LPCDLGTEMPLATE hDialogTemplate, 388 _In_ HWND hwndOwner, 389 _In_ DLGPROC dlgprc); 390 391 typedef INT 392 (WINAPI *PWLX_DIALOG_BOX_INDIRECT_PARAM)( 393 _In_ HANDLE hWlx, 394 _In_ HANDLE hInst, 395 _In_ LPCDLGTEMPLATE hDialogTemplate, 396 _In_ HWND hwndOwner, 397 _In_ DLGPROC dlgprc, 398 _In_ LPARAM dwInitParam); 399 400 typedef INT 401 (WINAPI *PWLX_DIALOG_BOX_PARAM)( 402 _In_ HANDLE hWlx, 403 _In_ HANDLE hInst, 404 _In_ LPWSTR lpszTemplate, 405 _In_ HWND hwndOwner, 406 _In_ DLGPROC dlgprc, 407 _In_ LPARAM dwInitParam); 408 409 typedef BOOL 410 (WINAPI *PWLX_DISCONNECT)(VOID); 411 412 typedef BOOL 413 (WINAPI *PWLX_GET_OPTION)( 414 _In_ HANDLE hWlx, 415 _In_ DWORD Option, 416 _Out_ ULONG_PTR *Value); 417 418 typedef BOOL 419 (WINAPI *PWLX_GET_SOURCE_DESKTOP)( 420 _In_ HANDLE hWlx, 421 _Out_ PWLX_DESKTOP *ppDesktop); 422 423 typedef INT 424 (WINAPI *PWLX_MESSAGE_BOX)( 425 _In_ HANDLE hWlx, 426 _In_ HWND hwndOwner, 427 _In_ LPWSTR lpszText, 428 _In_ LPWSTR lpszTitle, 429 _In_ UINT fuStyle); 430 431 typedef BOOL 432 (WINAPI *PWLX_QUERY_CLIENT_CREDENTIALS)( 433 _Out_ PWLX_CLIENT_CREDENTIALS_INFO_V1_0 pCred); 434 435 typedef DWORD 436 (WINAPI *PWLX_QUERY_CONSOLESWITCH_CREDENTIALS)( 437 _Out_ PWLX_CONSOLESWITCH_CREDENTIALS_INFO_V1_0 pCred); 438 439 typedef BOOL 440 (WINAPI *PWLX_QUERY_IC_CREDENTIALS)( 441 _Out_ PWLX_CLIENT_CREDENTIALS_INFO_V1_0 pCred); 442 443 typedef DWORD 444 (WINAPI *PWLX_QUERY_TERMINAL_SERVICES_DATA)( 445 _In_ HANDLE hWlx, 446 _Out_ PWLX_TERMINAL_SERVICES_DATA pTSData, 447 _In_ WCHAR *UserName, 448 _In_ WCHAR *Domain); 449 450 typedef BOOL 451 (WINAPI *PWLX_QUERY_TS_LOGON_CREDENTIALS)( 452 _Out_ PWLX_CLIENT_CREDENTIALS_INFO_V2_0 pCred); 453 454 typedef VOID 455 (WINAPI *PWLX_SAS_NOTIFY)( 456 _In_ HANDLE hWlx, 457 _In_ DWORD dwSasType); 458 459 typedef VOID 460 (WINAPI *PWLX_SET_CONTEXT_POINTER)( 461 _In_ HANDLE hWlx, 462 _In_ PVOID pWlxContext); 463 464 typedef BOOL 465 (WINAPI *PWLX_SET_OPTION)( 466 _In_ HANDLE hWlx, 467 _In_ DWORD Option, 468 _In_ ULONG_PTR Value, 469 _Out_ ULONG_PTR *OldValue); 470 471 typedef BOOL 472 (WINAPI *PWLX_SET_RETURN_DESKTOP)( 473 _In_ HANDLE hWlx, 474 _In_ PWLX_DESKTOP pDesktop); 475 476 typedef BOOL 477 (WINAPI *PWLX_SET_TIMEOUT)( 478 _In_ HANDLE hWlx, 479 _In_ DWORD Timeout); 480 481 typedef INT 482 (WINAPI *PWLX_SWITCH_DESKTOP_TO_USER)( 483 _In_ HANDLE hWlx); 484 485 typedef INT 486 (WINAPI *PWLX_SWITCH_DESKTOP_TO_WINLOGON)( 487 _In_ HANDLE hWlx); 488 489 typedef VOID 490 (WINAPI *PWLX_USE_CTRL_ALT_DEL)( 491 _In_ HANDLE hWlx); 492 493 typedef VOID 494 (WINAPI *PWLX_WIN31_MIGRATE)( 495 _In_ HANDLE hWlx); 496 497 /* Function dispatch tables */ 498 499 typedef struct _WLX_DISPATCH_VERSION_1_0 { 500 PWLX_USE_CTRL_ALT_DEL WlxUseCtrlAltDel; 501 PWLX_SET_CONTEXT_POINTER WlxSetContextPointer; 502 PWLX_SAS_NOTIFY WlxSasNotify; 503 PWLX_SET_TIMEOUT WlxSetTimeout; 504 PWLX_ASSIGN_SHELL_PROTECTION WlxAssignShellProtection; 505 PWLX_MESSAGE_BOX WlxMessageBox; 506 PWLX_DIALOG_BOX WlxDialogBox; 507 PWLX_DIALOG_BOX_PARAM WlxDialogBoxParam; 508 PWLX_DIALOG_BOX_INDIRECT WlxDialogBoxIndirect; 509 PWLX_DIALOG_BOX_INDIRECT_PARAM WlxDialogBoxIndirectParam; 510 PWLX_SWITCH_DESKTOP_TO_USER WlxSwitchDesktopToUser; 511 PWLX_SWITCH_DESKTOP_TO_WINLOGON WlxSwitchDesktopToWinlogon; 512 PWLX_CHANGE_PASSWORD_NOTIFY WlxChangePasswordNotify; 513 } WLX_DISPATCH_VERSION_1_0, *PWLX_DISPATCH_VERSION_1_0; 514 515 typedef struct _WLX_DISPATCH_VERSION_1_1 { 516 PWLX_USE_CTRL_ALT_DEL WlxUseCtrlAltDel; 517 PWLX_SET_CONTEXT_POINTER WlxSetContextPointer; 518 PWLX_SAS_NOTIFY WlxSasNotify; 519 PWLX_SET_TIMEOUT WlxSetTimeout; 520 PWLX_ASSIGN_SHELL_PROTECTION WlxAssignShellProtection; 521 PWLX_MESSAGE_BOX WlxMessageBox; 522 PWLX_DIALOG_BOX WlxDialogBox; 523 PWLX_DIALOG_BOX_PARAM WlxDialogBoxParam; 524 PWLX_DIALOG_BOX_INDIRECT WlxDialogBoxIndirect; 525 PWLX_DIALOG_BOX_INDIRECT_PARAM WlxDialogBoxIndirectParam; 526 PWLX_SWITCH_DESKTOP_TO_USER WlxSwitchDesktopToUser; 527 PWLX_SWITCH_DESKTOP_TO_WINLOGON WlxSwitchDesktopToWinlogon; 528 PWLX_CHANGE_PASSWORD_NOTIFY WlxChangePasswordNotify; 529 PWLX_GET_SOURCE_DESKTOP WlxGetSourceDesktop; 530 PWLX_SET_RETURN_DESKTOP WlxSetReturnDesktop; 531 PWLX_CREATE_USER_DESKTOP WlxCreateUserDesktop; 532 PWLX_CHANGE_PASSWORD_NOTIFY_EX WlxChangePasswordNotifyEx; 533 } WLX_DISPATCH_VERSION_1_1, *PWLX_DISPATCH_VERSION_1_1; 534 535 typedef struct _WLX_DISPATCH_VERSION_1_2 { 536 PWLX_USE_CTRL_ALT_DEL WlxUseCtrlAltDel; 537 PWLX_SET_CONTEXT_POINTER WlxSetContextPointer; 538 PWLX_SAS_NOTIFY WlxSasNotify; 539 PWLX_SET_TIMEOUT WlxSetTimeout; 540 PWLX_ASSIGN_SHELL_PROTECTION WlxAssignShellProtection; 541 PWLX_MESSAGE_BOX WlxMessageBox; 542 PWLX_DIALOG_BOX WlxDialogBox; 543 PWLX_DIALOG_BOX_PARAM WlxDialogBoxParam; 544 PWLX_DIALOG_BOX_INDIRECT WlxDialogBoxIndirect; 545 PWLX_DIALOG_BOX_INDIRECT_PARAM WlxDialogBoxIndirectParam; 546 PWLX_SWITCH_DESKTOP_TO_USER WlxSwitchDesktopToUser; 547 PWLX_SWITCH_DESKTOP_TO_WINLOGON WlxSwitchDesktopToWinlogon; 548 PWLX_CHANGE_PASSWORD_NOTIFY WlxChangePasswordNotify; 549 PWLX_GET_SOURCE_DESKTOP WlxGetSourceDesktop; 550 PWLX_SET_RETURN_DESKTOP WlxSetReturnDesktop; 551 PWLX_CREATE_USER_DESKTOP WlxCreateUserDesktop; 552 PWLX_CHANGE_PASSWORD_NOTIFY_EX WlxChangePasswordNotifyEx; 553 PWLX_CLOSE_USER_DESKTOP WlxCloseUserDesktop; 554 } WLX_DISPATCH_VERSION_1_2, *PWLX_DISPATCH_VERSION_1_2; 555 556 typedef struct _WLX_DISPATCH_VERSION_1_3 { 557 PWLX_USE_CTRL_ALT_DEL WlxUseCtrlAltDel; 558 PWLX_SET_CONTEXT_POINTER WlxSetContextPointer; 559 PWLX_SAS_NOTIFY WlxSasNotify; 560 PWLX_SET_TIMEOUT WlxSetTimeout; 561 PWLX_ASSIGN_SHELL_PROTECTION WlxAssignShellProtection; 562 PWLX_MESSAGE_BOX WlxMessageBox; 563 PWLX_DIALOG_BOX WlxDialogBox; 564 PWLX_DIALOG_BOX_PARAM WlxDialogBoxParam; 565 PWLX_DIALOG_BOX_INDIRECT WlxDialogBoxIndirect; 566 PWLX_DIALOG_BOX_INDIRECT_PARAM WlxDialogBoxIndirectParam; 567 PWLX_SWITCH_DESKTOP_TO_USER WlxSwitchDesktopToUser; 568 PWLX_SWITCH_DESKTOP_TO_WINLOGON WlxSwitchDesktopToWinlogon; 569 PWLX_CHANGE_PASSWORD_NOTIFY WlxChangePasswordNotify; 570 PWLX_GET_SOURCE_DESKTOP WlxGetSourceDesktop; 571 PWLX_SET_RETURN_DESKTOP WlxSetReturnDesktop; 572 PWLX_CREATE_USER_DESKTOP WlxCreateUserDesktop; 573 PWLX_CHANGE_PASSWORD_NOTIFY_EX WlxChangePasswordNotifyEx; 574 PWLX_CLOSE_USER_DESKTOP WlxCloseUserDesktop; 575 PWLX_SET_OPTION WlxSetOption; 576 PWLX_GET_OPTION WlxGetOption; 577 PWLX_WIN31_MIGRATE WlxWin31Migrate; 578 PWLX_QUERY_CLIENT_CREDENTIALS WlxQueryClientCredentials; 579 PWLX_QUERY_IC_CREDENTIALS WlxQueryInetConnectorCredentials; 580 PWLX_DISCONNECT WlxDisconnect; 581 PWLX_QUERY_TERMINAL_SERVICES_DATA WlxQueryTerminalServicesData; 582 } WLX_DISPATCH_VERSION_1_3, *PWLX_DISPATCH_VERSION_1_3; 583 584 typedef struct _WLX_DISPATCH_VERSION_1_4 { 585 PWLX_USE_CTRL_ALT_DEL WlxUseCtrlAltDel; 586 PWLX_SET_CONTEXT_POINTER WlxSetContextPointer; 587 PWLX_SAS_NOTIFY WlxSasNotify; 588 PWLX_SET_TIMEOUT WlxSetTimeout; 589 PWLX_ASSIGN_SHELL_PROTECTION WlxAssignShellProtection; 590 PWLX_MESSAGE_BOX WlxMessageBox; 591 PWLX_DIALOG_BOX WlxDialogBox; 592 PWLX_DIALOG_BOX_PARAM WlxDialogBoxParam; 593 PWLX_DIALOG_BOX_INDIRECT WlxDialogBoxIndirect; 594 PWLX_DIALOG_BOX_INDIRECT_PARAM WlxDialogBoxIndirectParam; 595 PWLX_SWITCH_DESKTOP_TO_USER WlxSwitchDesktopToUser; 596 PWLX_SWITCH_DESKTOP_TO_WINLOGON WlxSwitchDesktopToWinlogon; 597 PWLX_CHANGE_PASSWORD_NOTIFY WlxChangePasswordNotify; 598 PWLX_GET_SOURCE_DESKTOP WlxGetSourceDesktop; 599 PWLX_SET_RETURN_DESKTOP WlxSetReturnDesktop; 600 PWLX_CREATE_USER_DESKTOP WlxCreateUserDesktop; 601 PWLX_CHANGE_PASSWORD_NOTIFY_EX WlxChangePasswordNotifyEx; 602 PWLX_CLOSE_USER_DESKTOP WlxCloseUserDesktop; 603 PWLX_SET_OPTION WlxSetOption; 604 PWLX_GET_OPTION WlxGetOption; 605 PWLX_WIN31_MIGRATE WlxWin31Migrate; 606 PWLX_QUERY_CLIENT_CREDENTIALS WlxQueryClientCredentials; 607 PWLX_QUERY_IC_CREDENTIALS WlxQueryInetConnectorCredentials; 608 PWLX_DISCONNECT WlxDisconnect; 609 PWLX_QUERY_TERMINAL_SERVICES_DATA WlxQueryTerminalServicesData; 610 PWLX_QUERY_CONSOLESWITCH_CREDENTIALS WlxQueryConsoleSwitchCredentials; 611 PWLX_QUERY_TS_LOGON_CREDENTIALS WlxQueryTsLogonCredentials; 612 } WLX_DISPATCH_VERSION_1_4, *PWLX_DISPATCH_VERSION_1_4; 613 614 /* Non-GINA notification DLLs */ 615 616 typedef DWORD 617 (CALLBACK *PFNMSGECALLBACK)( 618 _In_ BOOL bVerbose, 619 _In_ LPWSTR lpMessage); 620 621 typedef struct _WLX_NOTIFICATION_INFO { 622 ULONG Size; 623 ULONG Flags; 624 PWSTR UserName; 625 PWSTR Domain; 626 PWSTR WindowStation; 627 HANDLE hToken; 628 HDESK hDesktop; 629 PFNMSGECALLBACK pStatusCallback; 630 } WLX_NOTIFICATION_INFO, *PWLX_NOTIFICATION_INFO; 631 632 #ifdef __cplusplus 633 } 634 #endif 635 636 #endif /*__WINWLX_H */ 637