Windows Vista のシャットダウンの変更

次の表は、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 を返す場合、自動的に終了します。
ユーザー インターフェイスのシャットダウン シャットダウンをブロックしているアプリケーションごとにダイアログ ボックスが表示されます。 ユーザーが [ 今すぐ終了 ] ボタンをクリックすると、アプリケーションは終了します。 ユーザーが [キャンセル ] ボタンをクリックすると、シャットダウンが取り消され、アプリケーションの実行が続行されます。 システムには、シャットダウンをブロックしているすべてのアプリケーションとその理由 ( ShutdownBlockReasonCreate を使用して理由が登録されている場合) を識別する全画面表示 UI が表示されます。

 

ベスト プラクティス

  • アプリケーションはシャットダウンをブロックしないでください。 WM_QUERYENDSESSIONにできるだけ早く対応し、WM_ENDSESSION メッセージを処理するまでクリーンアップ アクティビティを延期します。
  • シャットダウンをブロックする必要があるアプリケーションでは、新しい ShutdownBlockReasonCreate 関数を使用して、ユーザーに理由を説明する文字列を登録する必要があります。 ユーザーは、シャットダウンを続行するか取り消すかを決定できます。
  • アプリケーションは、シャットダウンをブロックできることに依存できません。