Schreiben von Preoperations- und Postoperation-Rückrufroutinen

In seiner DriverEntry-Routine kann ein Minifiltertreiber bis zu einer Rückrufroutine vor der Operation und bis zu einer Rückrufroutine nach der Operation für jeden Typ von E/A-Vorgängen registrieren, den er filtern muss.

Im Gegensatz zu einem älteren Dateisystemfiltertreiber kann ein Minifiltertreiber auswählen, welche Typen von E/A-Vorgängen gefiltert werden sollen. Ein Minifiltertreiber kann eine Voroperationsrückrufroutine für einen bestimmten E/A-Vorgangstyp registrieren, ohne einen Postoperationsrückruf zu registrieren und umgekehrt. Der Minifiltertreiber empfängt nur die E/A-Vorgänge, für die er eine Preoperation- oder Postoperation-Rückrufroutine registriert hat.

Eine Voraboperationsrückrufroutine ähnelt einer Dispatchroutine im älteren Filtertreibermodell. Wenn der Filter-Manager einen E/A-Vorgang verarbeitet, ruft er die Preoperation-Rückrufroutine jedes Minifiltertreibers im Minifiltertreiber instance Stapel auf, der einen für diesen E/A-Vorgang registriert hat. Der oberste Minifiltertreiber im Stapel , d. h. derjenige, dessen instance die höchste Höhe aufweist, empfängt zuerst den Vorgang. Wenn der Minifiltertreiber die Verarbeitung des Vorgangs beendet, gibt er den Vorgang an den Filter-Manager zurück, der den Vorgang dann an den nächsthöheren Minifiltertreiber übergibt usw. Wenn alle Minifiltertreiber im Minifiltertreiber instance Stapels den E/A-Vorgang verarbeitet haben – es sei denn, ein Minifiltertreiber hat den E/A-Vorgang abgeschlossen – sendet der Filter-Manager den Vorgang an Legacyfilter und das Dateisystem.

Eine Rückrufroutine nach der Operation ähnelt einer Vervollständigungsroutine im Legacy-Filtertreibermodell. Die Abschlussverarbeitung für einen E/A-Vorgang beginnt, wenn der E/A-Manager den Vorgang an das Dateisystem und ältere Filter übergibt, die über registrierte Vervollständigungsroutinen für den Vorgang verfügen. Nachdem diese Vervollständigungsroutinen abgeschlossen sind, führt der Filter-Manager die Vervollständigungsverarbeitung für den Vorgang aus. Der Filter-Manager ruft dann die Rückrufroutine nach der Operation jedes Minifiltertreibers im Minifiltertreiber instance Stapel auf, der einen für diesen E/A-Vorgang registriert hat. Der untere Minifiltertreiber im Stapel , d. h. der Treiber, dessen instance die niedrigste Höhe aufweist, empfängt zuerst den Vorgang. Wenn der Minifiltertreiber die Verarbeitung des Vorgangs abgeschlossen hat, wird er an den Filter-Manager zurückgegeben, der den Vorgang dann an den nächstniedrigsten Minifiltertreiber übergibt usw.

Dieser Abschnitt umfasst Folgendes:

Registrieren von Preoperations- und Postoperation-Rückrufroutinen

Filtern von E/A-Vorgängen in einem Minifiltertreiber

Schreiben von Preoperation-Rückrufroutinen

Schreiben von Postoperation-Rückrufroutinen

Ändern der Parameter für einen E/A-Vorgang

Bestimmen der Puffermethode für einen E/A-Vorgang

Zugreifen auf die Benutzerpuffer für einen E/A-Vorgang