Freigeben über


FltFlushBuffers2-Funktion (fltkernel.h)

Ein Minifiltertreiber ruft FltFlushBuffers2 auf, um eine Leerungsanforderung für eine bestimmte Datei an das Dateisystem zu senden.

Syntax

NTSTATUS FLTAPI FltFlushBuffers2(
  PFLT_INSTANCE      Instance,
  PFILE_OBJECT       FileObject,
  ULONG              FlushType,
  PFLT_CALLBACK_DATA CallbackData
);

Parameter

Instance

[in] Undurchsichtiger instance Zeiger für den aufrufenden Minifiltertreiber instance. Dieser Parameter ist erforderlich und darf nicht NULL sein.

FileObject

[in] Dateiobjektzeiger für die Datei oder das Volume, das geleert werden soll. Dieser Parameter ist erforderlich und darf nicht NULL sein.

FlushType

[in] Gibt den Typ der Leerung an, die das Dateisystem für die Datei ausführen soll. FlushType kann einer der folgenden Sein:

FlushType-Vorgangswert BESCHREIBUNG
0 Wenn FileObject für eine Datei ist, werden sowohl die Dateidaten als auch die Metadaten im Dateicache geschrieben, und der zugrunde liegende Speicher wird synchronisiert, um den Cache zu leeren. Wenn FileObject für ein Volume ist, bewirkt das Dateisystem, dass sowohl die Dateidaten als auch die Metadaten für alle geänderten Dateien auf dem Volume geschrieben werden, und der zugrunde liegende Speicher wird synchronisiert, um den Cache zu leeren. Dieser Vorgang entspricht FltFlushBuffers.
FLT_FLUSH_TYPE_FLUSH_AND_PURGE Identisch mit 0 (FltFlushBuffers), mit der Ausnahme, dass der Cache nach Abschluss des Leerens ebenfalls gelöscht wird.
FLT_FLUSH_TYPE_FILE_DATA_ONLY Wenn sich die Datei in einem NTFS-Dateisystem befindet, werden nur Dateidaten im Dateicache geschrieben. Es werden keine Metadaten geschrieben, und der zugrunde liegende Speicher wird nicht synchronisiert, um den Cache zu leeren. Dieses Flag ist ungültig, wenn FileObject für ein Volume gilt.
FLT_FLUSH_TYPE_NO_SYNC Wenn sich die Datei in einem NTFS-Dateisystem befindet, werden Dateidaten und Metadaten im Dateicache geschrieben. Der zugrunde liegende Speicher wird nicht synchronisiert, um den Cache zu leeren. Dieses Flag ist ungültig, wenn FileObject für ein Volume gilt.
FLT_FLUSH_TYPE_DATA_SYNC_ONLY Wenn sich die Datei in einem NTFS-Dateisystem befindet, werden Dateidaten im Dateicache geschrieben. Es werden keine Metadaten geschrieben. Der zugrunde liegende Speicher wird synchronisiert, um den Cache zu leeren. Dieses Flag ist ungültig, wenn FileObject für ein Volume oder Verzeichnis gilt.

CallbackData

[in/optional] Zeiger auf optionale FLT_CALLBACK_DATA Struktur, die verwendet wird, um die IRP-Erweiterung des Aufrufers weiterzuverbreiten. Siehe FltPropagateIrpExtension.

Rückgabewert

FltFlushBuffers2 gibt STATUS_SUCCESS oder einen geeigneten NTSTATUS-Wert zurück, z. B. einen der folgenden:

Rückgabecode Beschreibung
STATUS_MEDIA_WRITE_PROTECTED Die Datei befindet sich auf einem schreibgeschützten Volume. Dies ist ein Fehlercode.
STATUS_VOLUME_DISMOUNTED Die Datei befindet sich auf einem Volume, das derzeit nicht eingebunden ist. Dies ist ein Fehlercode.

Hinweise

Ein Minifiltertreiber kann FltFlushBuffers2 aufrufen, um eine IRP_MJ_FLUSH_BUFFERS-Anforderung an das Dateisystem für eine bestimmte Datei auszusetzen. Der Leerungsvorgang ist synchron und wird an die instance unter der angegebenen Instanz ausgegeben.

Wenn sich die Datei in einem NTFS-Dateisystem befindet, kann der Minifilter den Typ der Leerung über den FlushType-Parameter steuern.

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Windows 10, Version 1903
Kopfzeile fltkernel.h

Weitere Informationen

FltFlushBuffers

FltPropagateIrpExtension

IRP_MJ_FLUSH_BUFFERS