Изменения завершения работы для Windows Vista

В следующей таблице перечислены различия между завершением работы в Windows Vista и Windows XP.

Особенность Windows XP Windows Vista
Блокировка завершения работы Приложения могут отложить реагирование на WM_QUERYENDSESSION в течение 5 секунд, а система позволяет пользователю завершить работу приложения. Приложения, возвращающие TRUE, в ответ на WM_QUERYENDSESSION могут отложить реагирование на WM_ENDSESSION в течение 5 секунд, а система позволяет пользователю завершить работу приложения. Приложения могут отложить реагирование на WM_QUERYENDSESSION в течение 5 секунд, а система позволяет пользователю продолжить или отменить завершение работы. Приложения, возвращающие TRUE, в ответ на WM_QUERYENDSESSION могут отложить реагирование на WM_ENDSESSION в течение 5 секунд, а система позволяет пользователю продолжить или отменить завершение работы.
Отмена завершения работы Если приложение возвращает FALSE в ответ на WM_QUERYENDSESSION, завершение работы в большинстве случаев отменяется. Однако пользовательский интерфейс не отображается, поэтому пользователь может не знать, что завершение работы отменено. Если приложение возвращает FALSE в ответ на WM_QUERYENDSESSION, оно по-прежнему отображается в пользовательском интерфейсе завершения работы. Обратите внимание, что система не разрешает консольным приложениям или приложениям без видимого окна отменять завершение работы. Эти приложения автоматически завершаются, если они не отвечают на WM_QUERYENDSESSION или WM_ENDSESSION в течение 5 секунд или возвращают false в ответ на WM_QUERYENDSESSION.
Пользовательский интерфейс завершения работы Система отображает диалоговое окно для каждого приложения, блокирующего завершение работы. Если пользователь нажимает кнопку End Now, приложение завершается. Если пользователь нажимает кнопку отмены отмены, завершение работы будет отменено и приложение продолжает работать. В системе отображается полноэкранный пользовательский интерфейс, который определяет все приложения, блокирующие завершение работы, и их причины (если они зарегистрировали причину, используя ShutdownBlockReasonCreate).

 

Рекомендации

  • Приложения не должны блокировать завершение работы. Отвечайте на WM_QUERYENDSESSION как можно быстрее и откладывайте действия очистки до обработки сообщения WM_ENDSESSION.
  • Приложения, которые должны блокировать завершение работы, должны использовать новую функцию ShutdownBlockReasonCreate для регистрации строки, объясняющей причину для пользователя. Пользователь может решить, следует ли продолжить или отменить завершение работы.
  • Приложения не могут полагаться на возможность блокировки завершения работы.