Внятного ответа не нашол Есть хорошая функция "ShutdownBlockReasonCreate" но только для Vista, можно ли сделать что-то подобное для XP?
Идея была в том чтоб прервать завершение работы на время сохранения программой данных (вернув true на сообщение "WM_QUERYENDSESSION"), затем продолжить функцией "ExitWindowsEx", но проблема в том что "WM_QUERYENDSESSION" не сообщяет чего хотел-ли пользователь завершения работы или перезагрузки, и судя по всему простого способы опеределить это нету. Жаль