Koexistenz mit anderen Dateisystemfiltertreibern

Eines der tückischsten Probleme, die von einem Dateisystemfiltertreiber ordnungsgemäß behandelt werden müssen, ist die Koexistenz mit anderen Filtertreibern. Beim Erstellen eines Dateisystemfiltertreibers für die Koexistenz mit anderen Dateisystemfiltertreibern empfiehlt es sich, die folgenden Probleme zu berücksichtigen:

  • Filtertreiber müssen das Vorhandensein anderer Filtertreiber in ihren Vorgängen berücksichtigen. Alle vom Filtertreiber ausgeführten Vorgänge sollten robust genug sein, um einen zusätzlichen Filtertreiber mit der gleichen oder einer anderen Technik zu überstehen.

  • Filtertreiber können das Verhalten anderer Filter beeinflussen, indem sie das Basisverhalten des Systems ändern.

  • Wenn die Anzahl der Filtertreiber erhöht wird, erhöht sich der Verbrauch knapper Ressourcen, insbesondere des Stapelspeichers. Dateisystemfiltertreiber müssen versuchen, ihre Nutzung solcher knappen Ressourcen zu minimieren. Andernfalls können böswillige Benutzeranwendungen solche Schwächen ausnutzen, um das System zu einem Ausfall zu führen. Entwickler sollten besonders vorsichtig bei Abschluss- und Fehlerpfaden sein.

  • Filtertreiber sollten in dem, was sie an den niedrigeren Treiber senden (Filtertreiber oder Dateisystem), vorsichtig sein und liberal sein, was sie akzeptieren. Wenn möglich, sollte der Filtertreiber versuchen, sicherzustellen, dass die Vorgänge, die er an den zugrunde liegenden Treiber sendet, einfach und nicht kompliziert sind (führen Sie z. B. keine Umbenennungsvorgänge bei Erstellungsvorgängen aus).

  • Filtertreiber müssen beim Sperren vorsichtig sein. Sperren dürfen niemals über Dateisystemaufrufe hinweg gehalten werden. Verschiedene Komponenten des Systems treffen sehr präzise und explizite Annahmen über die Sperrreihenfolge und Funktionen, die blockieren können und nicht. Dies zu stören, indem eine weitere Sperrebene hinzugefügt wird, kann leicht zu Deadlocks führen. E/A, die von Srv.sys stammt, deckt diese Probleme besonders schnell auf, aber sie können auch bei normalen Belastungstests beobachtet werden.

Es ist unbedingt erforderlich, dass jeder Dateisystemfiltertreiberentwickler nicht nur so entwerfen und implementieren, dass er sauber mit anderen Filtertreibern vorhanden ist, sondern auch den Filtertreiber mit anderen Filtertreibern testen, um sicherzustellen, dass der Treiber keine Sicherheitsprobleme innerhalb des Systems verursacht.