知識マップ: アプリから見たWindowsのシャットダウン ── 終了通知・再起動・電源断を正しく生き延びる

記事「アプリから見たWindowsのシャットダウン ── 終了通知・再起動・電源断を正しく生き延びる」の主張を、概念と関係(エッジ)に分解した知識グラフの全体です。各関係には根拠・確認日・確度が付いています。

シャットダウン通知を受けてから使える時間は原則5秒程度しかないため、その場で全部を保存する設計は破綻します。こまめな自動保存で保存すべき差分を小さくしておくのが前提です。GUIアプリはWM_QUERYENDSESSIONに即座にTRUEを返し、後始末はWM_ENDSESSIONで行います。高速スタートアップが有効な構成のシャットダウンはカーネルを休止させるだけなので、完全にリセットされるのは再起動だけです。サービスはSERVICE_ACCEPT_PRESHUTDOWNのほうが先に通知を受けられますが、既定タイムアウトはWindows 10 Creators Update以降10秒に短縮されています。電源断には通知が一切来ないため、一時ファイルに書き切ってReplaceFileで差し替え、バックアップと起動時検証までを復旧経路として用意します。

Windowsのシャットダウンに耐えるアプリ設計の知識マップサインアウト・シャットダウン・再起動・電源断の違いとハイブリッドシャットダウン、GUIアプリの2段階通知と5秒の猶予、コンソールアプリとサービスの通知経路、再起動後の自動復帰、通知が来ない電源断に耐える書き込み設計を示す図前提とする用いるのは非推奨推奨される対応両立しない用いるのは非推奨用いるのは非推奨前提とするより先に行うべき利用する実装を担う軽減する前提とする軽減するで確認できるWM_QUERYENDSESSIONハイブリッドシャットダウン(高速スタートアップ)UIスレッドのコンテキストShutdownBlockReasonCreate中断すると壊れる処理完全なブートサイクルSetConsoleCtrlHandlerAppDomain.ProcessExitSERVICE_CONTROL_SHUTDOWNSCM(サービス制御マネージャー)SERVICE_ACCEPT_PRESHUTDOWNRegisterApplicationRestartARSO(自動再起動サインオン)ReplaceFile一時ファイル経由の安全な保存パターン不意の電源断・強制停止FlushFileBuffersキャッシュマネージャーPBT_APMPOWERSTATUSCHANGEシャットダウン関連のイベントログ(1074 / 41 / 6008)Windowsイベントログ

概念間の関係(全14件)

図と同じ関係を文章でも列挙します。表示している文と機械可読な意味データ(RDFa)は同じ要素に載っています。確度が「確立した関係」のものは直接の関係として、「条件付きの関係」のものは成立条件つきの言明(rdf:Statement)として表現しています。

主要概念の定義

WM_QUERYENDSESSION
終了してもよいかをアプリケーションに問い合わせる、Restart Managerが送るWindowsメッセージである。
ハイブリッドシャットダウン(高速スタートアップ)
ユーザーセッションはサインアウトするが、カーネルセッションは閉じずに休止ファイルへ保存し、次回起動でそのまま復元する既定のシャットダウン動作。
ShutdownBlockReasonCreate
中断できない処理の開始時に理由文字列を登録し、「このアプリがシャットダウンを妨げています」画面に表示させるAPI。
SetConsoleCtrlHandler
コンソールアプリがCTRL_C/BREAK/CLOSE/LOGOFF/SHUTDOWNの各イベントを受け取るためのハンドラー登録API。
AppDomain.ProcessExit
.NETアプリの終了時に後始末を行うために使われてきたイベント。
SERVICE_CONTROL_SHUTDOWN
シャットダウン処理の中でサービスへ届く制御コード。猶予は既定で約20秒、上限はWaitToKillServiceTimeout。
SERVICE_ACCEPT_PRESHUTDOWN
SERVICE_CONTROL_SHUTDOWNより先に通知を受け取れるサービスの受け入れ宣言。SCMはサービスが停止するかタイムアウトするまで待つ。
RegisterApplicationRestart
アプリが自分自身の再起動用コマンドラインをOSに登録し、Restart Managerによる終了後に再起動させてもらうためのAPI関数である。
ReplaceFile
新ファイルへの保存・元ファイルの退避・リネーム・削除という一連の手順を1つのAPIにまとめた差し替え。元ファイルの作成日時・ACL・代替ストリームも引き継ぐ。
FlushFileBuffers
指定したファイルハンドルのバッファ済みデータとメタデータをデバイスへ書き切るWin32 API。.NETのFileStream.Flush(true)に相当する。
PBT_APMPOWERSTATUSCHANGE
AC電源とバッテリーの切り替わりや残量低下を知らせる電源イベント。
シャットダウン関連のイベントログ(1074 / 41 / 6008)
正常な再起動と予期しない停止を切り分けるためにシステムログへ記録されるイベント。

機械可読データ

このデータセットについて

作成
合同会社小村ソフト
ライセンス
CC BY 4.0 ── 出典(合同会社小村ソフト)とライセンスへのリンクを明示し、改変した場合はその旨を示すことを条件に、再配布・改変を含めて再利用できます
最終確認日
2026-08-22 ── 収録する関係のうち、最後に出典と照合した日

このページはサイトの知識グラフ(_data/knowledge/)から自動生成されています。誤りの指摘はお問い合わせからお願いします。