Windowsでは,システムにシャットダウン要求があると,最初にアプリケーション,次にサービス,そしてマネージャの順でシャットダウン処理が行われる。シャットダウン中は安全に終了するための様々な処理が行われており,データ/システムを保護するためには正しい操作が不可欠である。
パソコン初心者がよくする失敗に,パソコン作業の終了後,いきなり電源を切ってしまうものがある。そのような行為が目の前で行われれば,私たちはあわてて「そんなことをするとパソコンが壊れるよ」などと忠告することになる。
Windowsマシンを正しくシャットダウンしないと,次回の起動画面で「今度からは正しくシャットダウンするように」と警告され,時にはディスクの検査などで起動まで長く待たされることになる。このため,何となくそうすべきだと知っている人は多いかもしれないが,それがなぜなのかまでを正確に知っている人はあまりいないだろう。この「パソコンはシャットダウン操作によって終了しなければならない」とする根拠は,いったいどこにあるのか。電源ケーブルをいきなり抜いたら本当にパソコンは壊れるのだろうか(図1)。
API呼び出しでシャットダウンが始まる
Windowsがシャットダウン処理を行うときには「ExitWindowEx関数」と呼ばれるシステムAPI(Application Programming Interface)が呼び出される。この関数が呼び出されると,Windowsはアプリケーション,サービス,マネージャの順で実行を終了し,システムをシャットダウンしようとする(図2)。

Windowsの場合,システムをシャットダウンするには適切なユーザー権限が必要になる。このため,実際のシャットダウン処理が始まる前に,ExitWindowEx関数を呼び出したユーザーにシステムをシャットダウンする権限があるかどうかを確認する。権限がなければ関数の実行は失敗し,シャットダウンは行われない。また,同じマシンにログオンしているユーザーがほかにいるかどうかも確認される。ほかのユーザーが存在する場合は,そのユーザーのデータが失われる可能性がある旨をダイアログで通知する(図3)。
