Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Treiber können die folgenden Verteilerroutinen enthalten:
-
IRP_MJ_CLEANUP gibt an, dass das letzte Handle für ein Dateiobjekt, das dem Zielgerätobjekt zugeordnet ist, geschlossen wird. Ausstehende E/A-Anforderungen für das Dateiobjekt sind möglicherweise noch vorhanden. Treiber können eine DispatchCleanup-Routine implementieren, um Bereinigungen durchzuführen, die nicht für ein bestimmtes Dateihandle spezifisch sind. Treiber können auch ihre DispatchClose-Routine für denselben Zweck verwenden.
DispatchQueryInformation, DispatchSetInformation
Einige Treiber auf höchster Ebene müssen möglicherweise IRP_MJ_QUERY_INFORMATION und IRP_MJ_SET_INFORMATION IRPs verarbeiten. Solche Anforderungen deuten darauf hin, dass eine Anwendung im Benutzermodus, eine Kernelmoduskomponente oder ein Treiber Informationen über die Länge des Dateiobjekts angefordert hat (das Geräteobjekt des Treibers darstellt), für das der Benutzermodusanforderunger über ein Handle verfügt, oder dass der Benutzermodusanforderunger versucht, ein Ende der Datei für dieses Dateiobjekt festzulegen.
Parallele Klassen- und serielle Gerätetreiber behandeln diese Anforderungen, indem sie die FILE_STANDARD_INFORMATION oder FILE_POSITION_INFORMATION Länge oder Position auf Null festlegen. Andere Gerätetreiber auf höchster Ebene sollten diese Anforderungen unterstützen, insbesondere, wenn ein Benutzermodusanwendungs- oder Kernelmodustreiber C-Laufzeitfunktionen aufrufen kann, um das Dateiobjekt zu bearbeiten. Dateisystemtreiber müssen diese Anforderungen vollständiger unterstützen als diese Gerätetreiber auf höchster Ebene.
-
Ein Treiber, der Daten in einem Gerät zwischenspeichert oder Daten intern im vom Treiber zugewiesenen Speicher zwischenspeichert, erhält möglicherweise IRP_MJ_FLUSH_BUFFERS. Der Empfang dieser Anforderung gibt an, dass der Treiber seine gepufferten Daten schreiben oder die zwischengespeicherten Daten auf das Gerät leeren oder gepufferte oder zwischengespeicherte Daten verwerfen soll, die vom Gerät gelesen wurden.
Beispielsweise unterstützen die Systemtastatur- und Mausklassentreiber, die interne Ringpuffer für Eingabedaten von ihren Geräten haben, die Flush-Anforderung. Treiber von Massenspeichergeräten und darüber gelagerte Treiber unterstützen diese Anforderung ebenfalls.
-
Jeder Treiber, der wahrscheinlich aufgerufen wird, bevor das System heruntergefahren wird, muss IRP_MJ_SHUTDOWN verarbeiten. Die DispatchShutdown-Routine sollte die vom Treiber festgelegte Bereinigung durchführen, bevor der Energiemanager ein System Set-Power-IRP sendet, um das System herunterzufahren. Ein Treiber kann IoRegisterShutdownNotification oder IoRegisterLastChanceShutdownNotification aufrufen, um sich für die Benachrichtigung zum Herunterfahren zu registrieren.
Treiber für Massenspeichergeräte und zwischengeschaltete Treiber können sich auf einen Dateisystemtreiber der höchsten Ebene verlassen, um ihnen Herunterfahren-IRPs zu senden, bevor das System heruntergefahren wird. Das heißt, die FSD ist dafür verantwortlich, sicherzustellen, dass alle zwischengespeicherten Dateidaten auf Peripheriegeräte geschrieben werden, indem zugrunde liegende Treiber aufgerufen werden, um Daten aus ihren Gerätecaches oder Puffern (falls vorhanden) zu leeren, usw. bevor das System heruntergefahren wird.
Der Treiber eines Massenspeichergeräts, das Daten intern zwischenspeichert, muss DispatchShutdown - und DispatchFlushBuffers-Routinen bereitstellen. Wenn ein Massenspeichertreiber Daten im Arbeitsspeicher puffert, das Gerät jedoch keinen internen Cache aufweist, muss er auch DispatchShutdown - und DispatchFlushBuffers-Routinen bereitstellen.
Jeder zwischengeschaltete Treiber über einem Treiber, der IRP_MJ_FLUSH_BUFFERS und IRP_MJ_SHUTDOWN Anforderungen verarbeitet, stellt außerdem DispatchShutdown - und DispatchFlushBuffers-Routinen bereit.