Freigeben über


IRP_MJ_FLUSH_BUFFERS (FS- und Filtertreiber)

Sendebedingungen

Der E/A-Manager, andere Betriebssystemkomponenten und andere Kernelmodustreiber senden IRP_MJ_FLUSH_BUFFERS Anforderungen, wenn gepufferte Daten auf den Datenträger geleert werden müssen. Sie kann beispielsweise gesendet werden, wenn eine Anwendung im Benutzermodus eine Win32-Funktion wie FlushFileBuffers aufgerufen hat. (Bei Dateisystemtreibern und Dateisystemfiltertreibern ist der Aufruf von CcFlushCache dem Senden eines IRP vorzuziehen.)

Alle Dateisystem- und Filtertreiber, die interne Puffer für Daten verwalten, müssen diese IRP verarbeiten, damit Änderungen an Dateidaten oder Metadaten über das Herunterfahren des Systems hinweg beibehalten werden können.

Vorgang: Dateisystemtreiber

Der Dateisystemtreiber sollte alle wichtigen Daten oder Metadaten, die dem Dateiobjekt zugeordnet sind, auf den Datenträger leeren und die IRP abschließen. Weitere Informationen zum Umgang mit diesem IRP finden Sie im FASTFAT-Beispiel.

Vorgang: Legacy-Dateisystemfiltertreiber

Der Filtertreiber sollte alle wichtigen Daten oder Metadaten, die dem Dateiobjekt zugeordnet sind, auf den Datenträger leeren und diesen IRP an den nächstniedrigen Treiber im Stapel übergeben.

Parameter

Ein Dateisystem oder Filtertreiber ruft IoGetCurrentIrpStackLocation mit dem angegebenen IRP auf, um einen Zeiger auf den eigenen Stapelspeicherort im IRP abzurufen, der in der folgenden Liste als IrpSp angezeigt wird. (Die IRP wird als Irp angezeigt.) Der Treiber kann die Informationen, die in den folgenden Elementen des IRP und des IRP-Stapelspeicherorts festgelegt sind, bei der Verarbeitung einer Leerungspufferanforderung verwenden:

  • DeviceObject ist ein Zeiger auf das Zielgerätobjekt.

  • Irp->IoStatus verweist auf eine IO_STATUS_BLOCK-Struktur, die den endgültigen Abschluss status und Informationen zum angeforderten Vorgang empfängt.

  • IrpSp->FileObject verweist auf das Dateiobjekt, das DeviceObject zugeordnet ist.

    Der Parameter IrpSp-FileObject> enthält einen Zeiger auf das RelatedFileObject-Feld, das auch eine FILE_OBJECT-Struktur ist. Das Feld RelatedFileObject der FILE_OBJECT-Struktur ist während der Verarbeitung von IRP_MJ_FLUSH_BUFFERS ungültig und sollte nicht verwendet werden.

  • IrpSp->MajorFunction ist auf IRP_MJ_FLUSH_BUFFERS festgelegt.

Weitere Informationen

CcFlushCache

IO_STACK_LOCATION

IO_STATUS_BLOCK

IoGetCurrentIrpStackLocation

IRP

IRP_MJ_FLUSH_BUFFERS (WDK-Kernelreferenz)