System のイベントログに Microsoft-Windows-FilterManager:3 のエラーが記録される

こんにちは。 Windows テクノロジー サポートの松田です。

Windows 7 や Windows Server 2008 R2 にて System のイベント ログに以下の
ようなイベント ログが記録されることがあります。

-------------------------------
ログの名前:         System
ソース:           Microsoft-Windows-FilterManager
日付:            2011/XX/XX X:XX:XX
イベント ID:       3
タスクのカテゴリ:      なし
レベル:           エラー
キーワード:        
ユーザー:          SYSTEM
コンピューター:       XXXXXXX
説明:
フィルター マネージャーがボリューム '\Device\HarddiskVolumeXX' に接続できませんでした。
このボリュームは、再起動するまでフィルターリングできません。
最終状態は 0xc03a001c です。
-------------------------------

イベント ログに記録されている 0xc03a001c は STATUS_VHD_INVALID_STATE であり
VHD が無効な状態であることを意味しています。
このイベントは、VHD を取り外したものの、引き続き VHD にアクセスを試みた
プロセスがあり、そのアクセスが失敗 (取り外し済みなため当然失敗します) した
ことをフィルター マネージャーが検知していることを示しています。

このイベントが記録される状況として、以下のような状況が報告されています。
   - Windows Server バックアップを実行した場合
   - DetachVirtualDisk() 関数を利用して VHD を取り外した場合
   - 管理ツールや Diskpart.exe を利用して VHD を取り外した場合

Windows Server バックアップもデータのバックアップを実施する際に VHD を
内部で作成して処理を行うため、いずれの場合も VHD を取り外した際に
記録されることがわかります。

アクセスしたプロセスは、以下の方法で確認することができます。

-- 該当プロセスの特定方法 --
1. 該当のイベントログを開き、[詳細] タブを選択します。
2. "XML" で表示を選択します。
3. "Execution ProcessID" に記録されている PID を記録します。
4. コマンドプロンプトを起動して以下のコマンドを実行します。
> tasklist /SVC
5. 手順 3 で確認した PID を保持するプロセスを特定します。

この手順を使うことで、取り外した VHD にアクセスを行っているプロセスを
特定することができます。

なお、現在までには、以下のプロセスやサービスが、原因として報告されています。
   - Windows Search サービス (Windows 7 で既定で有効)
   - ウィルス対策ソフト
   - その他の常駐のシステム監視ソフト

Windows Search では、該当ボリュームへのインデックスができなくなりますが、
すでに取り外されている領域であるため、Windows Search サービス自体への
影響はありませんので、イベントログ自体を無視していただいても問題はありません。

また、どうしても気になるという場合は、以下の手順で Windows Search サービスを
停止する方法もあります。

-- Windows Search の停止手順 --
1. [スタート] - [管理ツール] - [サービス] を選択します。
2. [Windows Search] を右クリックし、[停止] を選択します。

なお、Windows Server バックアップの実行時や、きちんと VHD を取り外した
際にもエラーとしてイベントに出力されてしまうので、本動作は好ましくない
動作として、開発部門にフィードバックされていますが、今のところの
回避策としてはイベント自体を無視していただくか、アクセスするプロセスや
サービス自体を止める必要があります。

Windows Search 以外のソフトウェアやサービスについては、それぞれの
製品の作成元にエラーが発生することによる影響を問い合わせていただく
必要があるので、ご注意ください。