Ask CORE

Microsoft Japan Windows Technology Support

システムドライブ (C:) 以外 や ページングファイル が非設定ドライブに、サードパーティー製 の Windows サービス の実行ファイルやDLLが存在する場合に、アプリケーションエラーが発生するシナリオについて

Windowsプラットフォームサポートの平井です。 本記事では次の条件がすべて当てはまった場合に、サードパーティー製のWindowsサービスがc0000005(STATUS_ACCESS_VIOLATION)やc0000006(STATUS_IN_PAGE_ERROR)のアプリケーションエラーで異常終了するシナリオについて解説します。尚、この事象はPCのシャットダウン後の次回起動時に発生します。 条件は次の通りです。 条件1:高速スタートアップが有効な場合 条件2:対象のサードパーティー製Windowsサービスの実行ファイルやDLLがデータボリューム(C:以外)に存在する場合 条件3:対象のボリュームにページングファイルが非設定である場合 条件4:対象のドライブにBitLockerの構成がデバイス暗号がオン、保護状態がオフの状態の場合 本事象が発生する理由は次の通りです。 高速スタートアップが有効の場合にPCをシャットダウンした場合、Windowsサービスのプロセスはメモリ上に残った状態で休止状態となります。 この際、BitLockerの構成がデバイス暗号がオン・保護状態がオフの状態である場合、次回起動時にデータボリュームのデータを暗号化するためのキーを初期化する処理が発生し、BitLockerの仕様上ボリュームのディスマウントが必要となります。 ボリュームのディスマウントが発生した結果、メモリ上にマッピングされたWindowsサービスのプロセスの実行ファイルやDLLの情報に不整合が発生し、c0000005(STATUS_ACCESS_VIOLATION)やc0000006(STATUS_IN_PAGE_ERROR)等のアプリケーションエラーで異常終了する状況が発生します。 もし、上述の条件がすべて合致する環境にて、同様の問題を検出された場合、次の対応が必要となります。 対応1:サードパーティー製Windowsサービスの実行ファイルやDLLをシステムドライブ(C:)配下にインストールする Windowsでは既定で、ページングファイルはシステムドライブ配下に保持されます。Windowsはページングファイルが存在するボリュームに対してディスマウントは発行しないため、本事象は発生しません。 対応2:高速スタートアップを無効化する 高速スタートアップが無効の場合にPCをシャットダウンした場合、Windowsサービスのプロセスは完全に停止し、メモリ上にプロセスに紐づく情報は残りません。 対応3:BitLockerをデバイス暗号化/保護状態が共にオンに構成する BitLockerの設定がデバイス暗号化/保護状態が共にオンの場合、データボリュームの暗号化キーを初期化する処理が発生いたしません。このため、ボリュームのディスマウント処理が発生しないため、本事象は発生いたしません。 対応4:ページングファイルをデーターボリュームにも配置する Windowsはページングが有効になったボリュームに対してディスマウント処理を発行しないため、、本事象は発生いたしません。 1.コントロールパネル\システムとセキュリティ\システムから、[システムの詳細設定]を開きます。 2.[システムのプロパティ]>[詳細設定]タブを開き、[パフォーマンス]セクション配下の[設定]を選択します。 3.[仮想メモリ]セクション 配下の、[変更]を選択します。 4.[すべてのドライブのページングファイルのサイズを自動的に管理する]のチェックボックスが有効の場合は、外します。 5.D:ドライブを選択し、[システム管理サイズ]>[設定]を選択し、[OK]を選択します。 6.システムを再起動し、設定を適用します。… Read more