Я полагаю, что когда Windows закрывается, она отправляет WM_QueryEndSession всем приложениям. Чтобы симулировать завершение работы Windows, вы можете создать небольшое приложение, которое просто отправляет PostMessage с этим сообщением в ваше приложение, и посмотреть, что произойдет. Windows может отправлять больше сообщений, чем это, чтобы фактически закрыть ваше приложение (например, WM_CLOSE), но всякий раз, когда ваше приложение получает сообщение «WM_QueryEndSession», это означает, что ваше приложение собирается извлечь ковер из-под него.