У меня есть приложение win32, которое порождает несколько длительных процессов.
В основном процессе (который создает пользовательский интерфейс и порождает рабочие процессы) я обрабатываю WM_QUERYENDSESSION
, чтобы заблокировать завершение работы в случае, если мое приложениеделать что-то критическое, что может привести к повреждению данных.Проблема заключается в том, что даже до того, как основной процесс получает WM_QUERYENDSESSION
, Windows убивает дочерний процесс (который не имеет специальной обработки WM_QUERYENDSESSION
), оставляя приложение в недопустимом состоянии.
Каков правильный способобрабатывать WM_QUERYENDSESSION
в этом случае?Нужно ли обрабатывать сообщение в каждом дочернем процессе и каким-либо образом координировать завершение работы всех процессов, или есть ли способ сообщить Windows, что дочерние процессы не должны быть закрыты при завершении работы, и вместо этого главный процесс будет отвечать за их очистку?