次の方法で共有


他のファイル システム フィルター ドライバーとの共存

ファイル システム フィルター ドライバーで適切に処理する必要がある、最もわかりにくい問題の 1 つは、他のフィルター ドライバーとの共存です。 他のファイル システム フィルター ドライバーと共存するファイル システム フィルター ドライバーを作成するときは、次の問題を考慮することをお勧めします。

  • フィルター ドライバーでは、操作に他のフィルター ドライバーが存在することを考慮する必要があります。 フィルター ドライバーによって実行されるすべての操作は、同じまたは異なる手法を使用する他のフィルター ドライバーがあっても問題ないよう十分堅牢にする必要があります。

  • フィルター ドライバーは、システムの基本動作を変更することで、他のフィルターの動作に影響を与える可能性があります。

  • フィルター ドライバーの数を増やすと、少ないリソース (特にスタック領域) の消費が増えます。 ファイル システム フィルター ドライバーでは、そのような少ないリソースの使用を最小限に抑えるようにする必要があります。 そうしないと、悪意のあるユーザー アプリケーションがこのような弱点を利用してシステムの障害を引き起こす可能性があります。 開発者は、完了パスとエラー パスに特に注意する必要があります。

  • フィルター ドライバーでは、下位のドライバー (フィルター ドライバーまたはファイル システム) に送信する内容を控えめにし、受け入れる内容を自由にする必要があります。 可能な限り、フィルター ドライバーは、基礎のドライバーに送信する操作を単純にし、複雑にならないようにする必要があります (たとえば、作成操作の間は名前変更操作を実行しないようにします)。

  • フィルター ドライバーは、ロックに注意する必要があります。 ファイル システムの異なる呼び出しの間でロックを保持しないようにする必要があります。 システムのさまざまなコンポーネントでは、ロックの順序と、ブロック可能および不可能な機能について、非常に正確で明確な想定が行われています。 別のロック層を追加することでこれを妨げると、簡単にデッドロックが発生する可能性があります。 Srv.sys から行われる I/O では、これらの問題が特に速やかに発生しますが、通常のストレス テストでも確認できます。

ファイル システム フィルター ドライバーの開発者は、他のフィルター ドライバーと問題なく共存するように設計および実装するだけでなく、他のフィルター ドライバーと共にフィルター ドライバーをテストし、ドライバーによってシステム内にセキュリティの問題を発生しないようにすることが不可欠です。