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:
Erstellen und Registrieren von Kontexten:
Festlegen von Kontexten:
Abfragen von Kontexten:
Abrufen und Verweisen auf Kontexte:
Freigeben und Löschen von Kontexten: