プレースホルダーの処理

プレースホルダーを実装するミニフィルターのガイダンス

プレースホルダーを使用するすべての仮想化実装では、これらのプレースホルダー に FILE_ATTRIBUTE_RECALL_ON_DATA_ACCESS ファイル属性を設定する必要があります。 この属性は、次のことを示します。

  • 所有するミニフィルターの下からこのようなファイルを読み取る場合、0 が返される可能性があります。
  • 所有するミニフィルターの上からこのようなファイルを読み取る場合、データを提供する追加コストがかかります。

ミニフィルターは、データ全体をローカルで使用できるようになったら、プレースホルダーからこの属性を削除できます。

プレースホルダーを実装するすべてのミニフィルターは「HSM 読み込み順序グループ」に含まれている必要があります。

すべてのミニフィルターのガイダンス

フィルターは、属性が設定されているファイルの HSM 読み込み順序グループの下にあるフィルター インスタンスからのターゲットの読み取り/書き込みを発行 FILE_ATTRIBUTE_RECALL_ON_DATA_ACCESS 必要はありません。 この状況により、ファイル データが破損する可能性があります。 ミニフィルター開発者は、スタックの先頭に IO 要求を発行してこの状況を回避しようとする可能性がありますが、このような要求はデッドロックにつながる可能性があります。

フィルターでは、HSM 読み込み順序グループの上から FILE_ATTRIBUTE_RECALL_ON_DATA_ACCESS 属性が設定されているプレースホルダー ファイルに対する読み取りと書き込みも発行しないでください。 このような読み取りまたは書き込みにより、ユーザー アプリケーションがファイル データを要求していない場合、不要なハイドレーションが発生します。

ミニフィルターは、傍受属性のみのオープン時に読み取り/書き込みを発行しないでください。 このような読み取り/書き込みが原因でデッドロックが発生する可能性があります。特定の実装では、属性のみのオープンがデータ アクセス操作に変換されるとは限りません。 さらに、このような読み取り/書き込みでは、前述の 2 つの状況を回避できるように、FILE_ATTRIBUTE_RECALL_ON_DATA_ACCESS のミニフィルターチェックの目的を無効にします。

したがって、すべてのミニフィルターで、FILE_ATTRIBUTE_RECALL_ON_DATA_ACCESS 設定されているファイルに対して読み取り/書き込みを発行しないことをお勧めします。