ACPI shutdown event and machine idle/console state
On Windows world, what make ACPI shutdown confusing is that the executed action really depends on the current machine idle/console/login state. In other words, an ACPI shutdown event issued when someone is logged (and working) on the machine behave differently that the same event issued when nobody is logged in, or when the machine enters its deep idle (ie: screensaver and/or monitor standby) state.
Please note that I run all tests using KVM as hypervisor. Maybe other hypervisors behave differently in how they communicate the ACPI shudown event. I tested both default and customized Windows configuration (as described below).
I've identified the following machine states, from deep idle to actively used:
- console OFF long idle: login screensaver is showing (XP/Win2003) or virtual monitor is in standby mode (Win7/2008/2012)
- console OFF: the virtual console is not connected (ie: no raw console window is opened)
- console ON: the virtual console is connected (ie: you see the login window), but no user is logged in
- console login: a user is logged in via the virtual console
- terminal server login: a user is logged in via terminal server / RDP
- session locked: the user locked down its session