Windowsでは,システムにシャットダウン要求があると,最初にアプリケーション,次にサービス,そしてマネージャの順でシャットダウン処理が行われる。シャットダウン中は安全に終了するための様々な処理が行われており,データ/システムを保護するためには正しい操作が不可欠である。

 パソコン初心者がよくする失敗に,パソコン作業の終了後,いきなり電源を切ってしまうものがある。そのような行為が目の前で行われれば,私たちはあわてて「そんなことをするとパソコンが壊れるよ」などと忠告することになる。

 Windowsマシンを正しくシャットダウンしないと,次回の起動画面で「今度からは正しくシャットダウンするように」と警告され,時にはディスクの検査などで起動まで長く待たされることになる。このため,何となくそうすべきだと知っている人は多いかもしれないが,それがなぜなのかまでを正確に知っている人はあまりいないだろう。この「パソコンはシャットダウン操作によって終了しなければならない」とする根拠は,いったいどこにあるのか。電源ケーブルをいきなり抜いたら本当にパソコンは壊れるのだろうか(図1)。

図1●シャットダウンせずに電源を切ったらWindowsマシンは壊れる?<br>冷蔵庫やテレビなどの家電製品は,動作中にいきなり電源を切っても壊れることはない。なぜWindowsパソコンの電源をいきなり切ってしまってはいけないのだろうか。
図1●シャットダウンせずに電源を切ったらWindowsマシンは壊れる?
冷蔵庫やテレビなどの家電製品は,動作中にいきなり電源を切っても壊れることはない。なぜWindowsパソコンの電源をいきなり切ってしまってはいけないのだろうか。
[画像のクリックで拡大表示]

API呼び出しでシャットダウンが始まる

 Windowsがシャットダウン処理を行うときには「ExitWindowEx関数」と呼ばれるシステムAPI(Application Programming Interface)が呼び出される。この関数が呼び出されると,Windowsはアプリケーション,サービス,マネージャの順で実行を終了し,システムをシャットダウンしようとする(図2)。

図2●Windowsがシャットダウンするまで
図2●Windowsがシャットダウンするまで
Windowsのシャットダウンは3つのステップを経て処理される。まずユーザーとの対話処理などを行っている「アプリケーション」を終了し,次にバックグラウンドなどで動作する「サービス」を終了する。最後にWindows OSの根幹部分である各種の「マネージャ」を終了する。

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

図3●複数ユーザーで同じマシンを使用中にシャットダウンする
図3●複数ユーザーで同じマシンを使用中にシャットダウンする
シャットダウンしようとしたとき,他のユーザーが同じマシンを使用しているとこのダイアログが表示される。