Unterstützen von Minifilterkontexten

Der Filter-Manager bietet Unterstützung, die minifiltertreibern das Zuordnen von Kontexten mit Objekten ermöglicht, um den Zustand über E/A-Vorgänge hinweg beizubehalten. Objekte, die Kontexte aufweisen können, umfassen Dateien, Volumes, Instanzen, Streams, Streamhandles und Transaktionen. Details zur Minifilterimplementierung finden Sie unter Informationen zu Minifilterkontexten.

Dateisysteme von Drittanbietern müssen die FSRTL_ADVANCED_FCB_HEADER-Struktur (anstelle der FSRTL_COMMON_FCB_HEADER-Struktur ) verwenden, um ordnungsgemäß mit Stream- und Stream-Handle-Kontexten zu arbeiten.

Kontexte können aus einem ausgelagerten oder nicht ausgelagerten Pool zugeordnet werden, mit Ausnahme von Volumekontexten, die aus einem nicht ausgelagerten Pool zugeordnet werden müssen.

Kontexte werden automatisch freigegeben, wenn alle ausstehenden Verweise freigegeben wurden. Wenn der Minifiltertreiber eine Rückrufroutine für die Kontextbereinigung definiert, ruft der Filter-Manager die Routine auf, bevor der Kontext freigegeben wird.

Der Filter-Manager kümmert sich um das Löschen von Kontexten, wenn das zugeordnete Objekt gelöscht wird, wenn ein instance getrennt wird und wenn der Minifiltertreiber entladen wird.

Kontexte werden für das Paging von Dateien oder während der folgenden Vorgänge nicht unterstützt:

  • Voroperationsverarbeitung zum Erstellen von Anforderungen

  • Postoperationsverarbeitung für Schließen von Anforderungen

  • Verarbeitung von IRP_MJ_NETWORK_QUERY_OPEN Anforderungen

Im CTX-Beispiel finden Sie ein Beispiel für einen Minifiltertreiber, der Kontexte verwendet.

Filter-Manager-Supportroutinen für die Kontextverwaltung

Der Filter-Manager bietet viele Supportkontextunterstützungsroutinen für Minifilter: