Freigeben über


FltFlushBuffers2-Funktion (fltkernel.h)

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

Syntax

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

Parameter

Instance

[in] Undurchsichtiger Instanzzeiger für die aufrufende Minifiltertreiberinstanz. Dieser Parameter ist erforderlich und kann nicht NULL sein.

FileObject

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

FlushType

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

FlushType-Vorgangswert Beschreibung
0 Wenn FileObject- für eine Datei gilt, 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 vorgesehen ist, bewirkt das Dateisystem sowohl die Dateidaten als auch die Metadaten für alle geänderten Dateien auf dem Volume, 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 auch nach Abschluss des Leerens 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 zum Verteilen der IRP-Erweiterung des Aufrufers verwendet wird. Siehe FltPropagateIrpExtension.

Rückgabewert

FltFlushBuffers2 gibt STATUS_SUCCESS oder einen entsprechenden 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 bereitgestellt wird. Dies ist ein Fehlercode.

Bemerkungen

Ein Minifiltertreiber kann FltFlushBuffers2- aufrufen, um eine IRP_MJ_FLUSH_BUFFERS Anforderung an das Dateisystem für eine bestimmte Datei auszugeben. Der Flush-Vorgang ist synchron und wird an die Instanzen unterhalb der angegebenen Instanceausgegeben.

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

Anforderungen

Anforderung Wert
mindestens unterstützte Client- Windows 10, Version 1903
Header- fltkernel.h

Siehe auch

FltFlushBuffers

FltPropagateIrpExtension

IRP_MJ_FLUSH_BUFFERS