А>Как Win API аппликации узнать о том, что компьютер собрался выключаться или перезагружаться?
Если есть окно — ловите сообщение WM_QUERYENDSESSION (предварительное) или WM_ENDSESSION (финальное).
Если консольное приложение — установите обработчик через SetConsoleCtrlHandler().
Если служба — установите обработчик через RegisterServiceCtrlHandler().
Если драйвер — установите обработчик через IoRegisterShutdownNotification().