次の表は、Windows Vista と Windows XP でのシャットダウンの違いをまとめたものです。
特徴 | Windows XP | Windows Vista |
---|---|---|
シャットダウンのブロック | アプリケーションは、WM_QUERYENDSESSION への応答を 5 秒間遅らせることができ、システムによってユーザーはアプリケーションを終了できます。 WM_QUERYENDSESSION に応答して TRUE 返すアプリケーションは、WM_ENDSESSION への応答を 5 秒間遅らせる可能性があります。その後、システムはユーザーがアプリケーションを終了できます。 | アプリケーションは、WM_QUERYENDSESSION への応答を 5 秒間遅延させることができます。その後、システムはユーザーがシャットダウンを続行または取り消すことができます。 WM_QUERYENDSESSION に応答して TRUE 返すアプリケーションは、WM_ENDSESSION への応答を 5 秒間遅らせることができ、システムはユーザーがシャットダウンを続行または取り消すことができます。 |
シャットダウンの取り消し | アプリケーションが WM_QUERYENDSESSIONに応答して FALSE を返した場合、ほとんどの場合、シャットダウンは取り消されます。 ただし、UI は表示されないため、ユーザーはシャットダウンが取り消されたことを認識していない可能性があります。 | アプリケーションが WM_QUERYENDSESSIONに応答して FALSE を返した場合は、シャットダウン UI に引き続き表示されます。 システムでは、コンソール アプリケーションや、表示されるウィンドウのないアプリケーションがシャットダウンを取り消すことを許可しないことに注意してください。 これらのアプリケーションは、5 秒以内に WM_QUERYENDSESSION または WM_ENDSESSION に応答しない場合、または WM_QUERYENDSESSIONに応答して FALSE 返された場合に自動的に終了します。 |
ユーザー インターフェイスのシャットダウン | シャットダウンをブロックしているアプリケーションごとにダイアログ ボックスが表示されます。 ユーザーが [今すぐ終了] ボタンをクリックすると、アプリケーションは終了します。 ユーザーが [キャンセル] ボタンをクリックすると、シャットダウンが取り消され、アプリケーションの実行が続行されます。 | システムには、シャットダウンをブロックしているすべてのアプリケーションとその理由を識別する全画面表示 UI が表示されます (shutdownBlockReasonCreateを使用して理由登録されている場合)。 |
ベスト プラクティス
- アプリケーションはシャットダウンをブロックしないでください。 できるだけ早く WM_QUERYENDSESSION に応答し、WM_ENDSESSION メッセージを処理するまでクリーンアップ アクティビティを延期します。
- シャットダウンをブロックする必要があるアプリケーションでは、新しい ShutdownBlockReasonCreate 関数を使用して、ユーザーに理由を説明する文字列を登録する必要があります。 ユーザーは、シャットダウンを続行するかキャンセルするかを決定できます。
- アプリケーションはシャットダウンをブロックできることに依存できません。