アプリケーションは、ネットワーク ドライブ上のファイルに同時にアクセスしようとするときにフリーズWindows

この記事では、アプリケーションがネットワーク ドライブ上の同じファイルにアクセスしようとするときにアプリケーションがフリーズする問題に対する回避策をWindows。

適用対象:  Windows 10 - すべてのエディション
元の KB 番号:   4039810

現象

次のような状況で問題が発生します。

  • サーバー上に共有フォルダーを作成し、そのフォルダーにファイルを追加します。
  • 7 を実行しているクライアントWindows 10、Windows 8.1、Windows共有フォルダーをネットワーク ドライブとしてマウントします。
  • アプリケーションに関連付けられているファイル システム ミニフィルター ドライバーを含むサード パーティ製のセキュリティ ソフトウェアをインストールします。
  • ミニフィルターは、%SystemRoot% パス (C ドライブなど) を保持するローカル ドライブと、作成した共有フォルダーのネットワーク ドライブの両方に接続されます。
  • ミニフィルターは、ネットワーク ドライブ内のファイル名を含むメッセージを (FltSendMessage 関数を使用して) アプリケーションに送信します。
  • アプリケーションは、受信したファイル名を使用してファイルを開きます。
  • ミニフィルターに関連付けされていない同じコンピューター上の別のアプリケーションは、ネットワーク ドライブ上の同じファイルを同時に開きます。

このシナリオでは、両方のアプリケーションがフリーズします。

原因

この問題は、キャッシュ ドライバー (Windows Client-Side) によって保持されるリソース ロックがCsc.sys。 この問題が発生した場合、Csc.sysファイルのリソース ロックを取得し、その上にあるドライバーをドライバー スタックで要求してファイルを開きます。 これにより、ファイルにアクセスしようとするすべてのアプリケーションが待機します。 これにより、ミニフィルターのスレッドは、関連付けられたアプリケーションが応答するのを待機します。

回避策

この問題が既に発生している場合は、クライアントを再起動します。

この問題を回避するには、ローカル グループ ポリシー エディター (gpedit.msc) を使用してオフライン ファイルを無効にします。 これを行うには、[コンピューター構成管理用テンプレート ネットワーク オフライン ファイル] の [オフライン ファイルの使用を許可または禁止する] 機能グループ ポリシー設定 \ \ を \ 使用します

注意

オフライン ファイルを使用 する必要がある場合 は、回避策はありません。

状態

Microsoft は、この記事の冒頭に記載されている Microsoft 製品の問題を確認しました。

詳細情報

一般に、ファイル システムへの呼び出し間でロックを保持する方法は悪い考えです。 この理由は、次の開発者ブログ記事に記載されています。
ミニフィルターでの IO の発行: パート 1 - FltCreateFile

「現象」セクションの説明に従って、複数のドライブに接続されているミニフィルターを識別するには、管理コマンド プロンプトで次のコマンドを実行します。

fltmc instances -v C:

fltmc instances -v \Device\Mup