mirror of
https://github.com/ApfelTeeSaft/reactos.git
synced 2026-09-03 12:23:25 +00:00
- The `LogonHandler` notification should be invoked only once for a given logon operation. It is invoked in `HandleLogon()` after access to the window station (and desktop) is allowed for the user logging in. And so, it must not be invoked elsewhere, when no user is logged in (or a logon failure happened), like after a call to `WlxDisplaySASNotice()`... - Invoke the `StartShellHandler` notification **before** starting the shell, and the `PostShellHandler` notification **after** the shell started. - Invoke the `LogoffHandler` notification on the application desktop, just after having terminated all the user's programs, and before switching back to Winlogon's desktop. - Add and show the 'Logging off' status message. - When performing the following actions: `WLX_SAS_ACTION_LOGOFF`, `WLX_SAS_ACTION_FORCE_LOGOFF`, as well as: `WLX_SAS_ACTION_SHUTDOWN`, `WLX_SAS_ACTION_SHUTDOWN_POWER_OFF`, `WLX_SAS_ACTION_SHUTDOWN_REBOOT`, ensure that Winlogon is in a correct LogonState for doing the logoff sequence. ---- Test results for Winlogon notifications, after fix: - `Asynchronous: FALSE, Impersonation: FALSE` ``` WLEventStartup: 30 tests executed (0 marked as todo, 1 failure), 0 skipped. WLEventLogon: 32 tests executed (0 marked as todo, 1 failure), 0 skipped. WLEventStartShell: 32 tests executed (0 marked as todo, 1 failure), 0 skipped. WLEventPostShell: 32 tests executed (0 marked as todo, 1 failure), 0 skipped. WLEventLock: 32 tests executed (0 marked as todo, 1 failure), 0 skipped. WLEventUnlock: 32 tests executed (0 marked as todo, 1 failure), 0 skipped. WLEventStartScreenSaver: 32 tests executed (0 marked as todo, 6 failures), 0 skipped. WLEventStopScreenSaver: 32 tests executed (0 marked as todo, 5 failures), 0 skipped. WLEventLogoff: 32 tests executed (0 marked as todo, 1 failure), 0 skipped. WLEventShutdown: 31 tests executed (0 marked as todo, 3 failures), 0 skipped. ``` - `Asynchronous: FALSE, Impersonation: TRUE` ``` WLEventStartup: 30 tests executed (0 marked as todo, 1 failure), 0 skipped. WLEventLogon: 33 tests executed (0 marked as todo, 3 failures), 0 skipped. WLEventStartShell: 33 tests executed (0 marked as todo, 3 failures), 0 skipped. WLEventPostShell: 33 tests executed (0 marked as todo, 3 failures), 0 skipped. WLEventLock: 33 tests executed (0 marked as todo, 3 failures), 0 skipped. WLEventUnlock: 33 tests executed (0 marked as todo, 3 failures), 0 skipped. WLEventStartScreenSaver: 34 tests executed (0 marked as todo, 3 failures), 0 skipped. WLEventStopScreenSaver: 34 tests executed (0 marked as todo, 2 failures), 0 skipped. WLEventLogoff: 34 tests executed (0 marked as todo, 1 failure), 0 skipped. WLEventShutdown: 31 tests executed (0 marked as todo, 3 failures), 0 skipped. ```