Question

Under Windows XP Pro in a networked environment such that Ctrl+Alt+Del gives you the Windows Security prompt, if you hold Ctrl and click shutdown it triggers an Emergency Shutdown.

This appears to turn off the system so fast it doesn't even what for processes to finish, i.e. almost as if you just pulled the power/long-held the power button.

I am wondering by what process Windows achieves such a quick shutdown - is it instructing the BIOS directly via ACPI/APM to power down the system? If so, how could this be achieved programatically in any language?

Was it helpful?

Solution

This can be accomplished on *nix systems by using the system requests feature. Generally this is disabled for security reasons, but you can enable it with root privileges and request power off to the system immediately as follows:

echo 1 > /proc/sys/kernel/sysrq-trigger ;
echo o > /proc/sysrq-trigger

where the letter 'o' means "power off". Other functions are available. https://en.wikipedia.org/wiki/Magic_SysRq_key

OTHER TIPS

The ExitWindowsEx function is the standard shutdown, and even with EWX_FORCE it still closes all programs, services etc... it just does not ask / wait for them to close.

So what's the solution? Use NtShutdownSystem.

That function does the actual shutdown, by flushing the caches, registry etc and then calling the BIOS to power down the machine.

Look here for an usage example:
http://www.codeproject.com/Articles/34194/Performing-emergency-shutdowns

you can use ExitWindowsEx with EWX_POWEROFF and EWX_FORCE flags set...

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top