Ask CORE

Microsoft Japan Windows Technology Support

July, 2011

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

     

  • Windows Vista および Windows Server 2008 のプリント サーバーで、TCP 直接接続を使用した RPC 通信を無効化する方法

    ※ 2011/08/04 理解に間違いがあったので修正しました。

    こんにちは、プラットフォームサポートの丸山です。

    今日はネットワーク共有プリンターのトラブルシューティングに役に立つかもしれないお話です。

    ■ Windows Vista 以降では、ネットワーク共有プリンタで使用される RPC 通信の方式が変更されています。

    Windows XP や Windows Server 2003 までのコンピューターでは、ネットワーク共有プリンターを使用した場合のクライアント端末とサーバー端末との間では、名前付きパイプを使用して RPC 通信を行いますが、Windows Vista 以降のコンピュータでは、クライアント端末と、サーバー端末との間の通信方式として、可能であれば TCP 直接接続を使用して RPC 通信を使用するように変更されています。

    この変更により、新しい RPC 通信では、クライアント端末とサーバー端末との間で多数の TCP セッションが作成されるため、多数のクライアントを抱えるネットワーク共有プリンターでは、ネットワーク機器の最大セッション数に達したり、ファイアウォールにブロックされたりして、ネットワーク共有プリンターが正しく動作しない問題が発生することがあります。

    ※たとえば、プリンターとFAX画面で、プリンターのステータスが [準備完了] にならず、[オフライン] と表示されたり、[接続できません] と表示されてしまう状況などがあげられます。

    このようなとき、Windows 7 以降のクライアント端末では、EnableProtocols というレジストリ値を使用して、クライアント側の TCP 直接接続の RPC 通信を無効化することができますが、クライアント端末が Windows Vista や Windows Server 2008 である場合、また、クライアント端末が多く、すべてのクライアント端末でのレジストリ変更が難しいような状況では、以下の手順にて、プリント サーバー側で TCP 直接接続の RPC 通信を無効化してみることをおすすめします。

    ■ TCP 直接接続を使用した RPC 通信の無効化手順

    それでは、具体的な手順です。

    サーバー側のレジストリ設定を変更して、スプーラーサービスを再起動するだけです。

    1.  プリント サーバー上で、レジストリ エディタを起動します。
    2.  次のキーを開きます。
      HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Print
    3.  [編集] メニューから [新規] - [DWORD (32 ビット) 値] を選択します。
    4. DWORD 値の名前として [DisableRpcTcp] を入力します。
    5. [編集] メニューから、[修正] を選択します。
    6. [値のデータ] ボックスに "1" を入力し、[OK] をクリックします。
    7. レジストリ エディターを終了します。
    8. スプーラー サービスを再起動します。※またはコンピューターを再起動します。

     以上で設定は完了です。


    図 : 設定完了後のレジストリエディタの画面

     ■ DisableRpcTcp レジストリ値の変更による影響について

    DisableRpcTcp レジストリ値は、スプーラー サービスで使用されるプロトコルを変更する設定であり、スプーラー サービスと通信を行うアプリケーション以外への影響はありません。

    DisableRpcTcp 値を設定した場合には、TCP 直接接続を使用した RPC 通信を行う代わりに、Windows Server 2003 などで使用されていた従来の名前付きパイプによる RPC 通信が使用されることになります。

    名前付きパイプを使用した RPC 通信を使用すると、RPC の処理にオーバーヘットが発生し、応答待ちが発生するタイミングが多くなりますので、大量の印刷処理を行うプリント サーバーなどでは、パフォーマンスが若干低下するなどの影響が出ることがあります。

    ■ 参考情報

    RPC 通信で使用可能なトランスポートの違いについて説明があります。

    Connection-Oriented RPC Transports
    http://msdn.microsoft.com/en-us/library/cc243784.aspx

    こちらは、EnableProtocols レジストリ値に関する技術情報ご案内です。

    Windows 7 clients may not be able to print to Windows Server 2003 print server
    http://support.microsoft.com/kb/2269469/

    これら情報が、少しでもお役に立てれば幸いです。

    それではまた。