NtFlushBuffersFileEx-Funktion (ntifs.h)

Die NtFlushBuffersFileEx-Routine sendet eine Flush-Anforderung für eine bestimmte Datei an das Dateisystem. Ein optionales Flag für den Löschvorgang kann festgelegt werden, um zu steuern, wie Dateidaten in den Speicher geschrieben werden.

Syntax

__kernel_entry NTSYSCALLAPI NTSTATUS NtFlushBuffersFileEx(
  [in]  HANDLE           FileHandle,
  [in]  ULONG            Flags,
  [in]  PVOID            Parameters,
  [in]  ULONG            ParametersSize,
  [out] PIO_STATUS_BLOCK IoStatusBlock
);

Parameter

[in] FileHandle

Handle, der von NtCreateFile oder NtOpenFile für die Datei zurückgegeben wird, deren Puffer geleert werden. Dieser Parameter ist erforderlich und darf nicht NULL sein.

[in] Flags

Vorgangsflags werden geleert. Flags können einer der folgenden Werte sein:

Wert Bedeutung
0 (normal) Dateidaten und Metadaten im Dateicache werden geschrieben, und der zugrunde liegende Speicher wird synchronisiert, um den Cache zu leeren. Unterstützte Windows-Dateisysteme: NTFS, ReFS, FAT, exFAT.
FLUSH_FLAGS_FILE_DATA_ONLY Dateidaten im Dateicache werden geschrieben. Es werden keine Metadaten geschrieben, und der zugrunde liegende Speicher wird nicht synchronisiert, um den Cache zu leeren. Dieses Flag ist für Volumehandles ungültig. Unterstützte Windows-Dateisysteme: NTFS, FAT, exFAT.
FLUSH_FLAGS_NO_SYNC Dateidaten und Metadaten im Dateicache werden geschrieben. Der zugrunde liegende Speicher wird nicht synchronisiert, um den Cache zu leeren. Dieses Flag ist für Volumehandles ungültig. Unterstützte Windows-Dateisysteme: NTFS, FAT, exFAT.
FLUSH_FLAGS_FILE_DATA_SYNC_ONLY Daten aus der angegebenen Datei werden aus dem Windows-In-Memory-Cache geschrieben. Nur Metadaten, die für den Datenabruf erforderlich sind, werden geleert (Zeitstempelaktualisierungen werden so weit wie möglich übersprungen). Der zugrunde liegende Speicher wird synchronisiert, um den Cache zu leeren. Dieses Flag ist für Volume- oder Verzeichnishandles ungültig. Unterstützte Windows-Dateisysteme: NTFS.

[in] Parameters

Zeiger auf einen Block mit zusätzlichen Parametern. Dieser Parameter muss derzeit auf NULL festgelegt werden.

[in] ParametersSize

Die Größe des Blocks in Bytes, auf den Parameter verweisen. Dieser Parameter muss derzeit auf 0 festgelegt werden.

[out] IoStatusBlock

Adresse des E/A-status Blocks des Aufrufers. Dieser Parameter ist erforderlich und darf nicht NULL sein.

Rückgabewert

NtFlushBuffersFileEx 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 eingebunden ist. Dies ist ein Fehlercode.
STATUS_ACCESS_DENIED Die Datei hat weder Schreib- noch Anfügezugriff.

Hinweise

Minifiltertreiber sollten FltFlushBuffers2 anstelle von NtFlushBuffersFileEx aufrufen.

Ein Legacy-Dateisystemfiltertreiber kann NtFlushBuffersFileEx aufrufen, um eine IRP_MJ_FLUSH_BUFFERS Anforderung an das Dateisystem für eine bestimmte Datei auszusetzen. Der Löschvorgang ist synchron.

Aufrufer von NtFlushBuffersFileEx müssen unter IRQL = PASSIVE_LEVEL und mit aktivierten speziellen Kernel-APCs ausgeführt werden.

Bei Aufrufen von Kernelmodustreibern können sich die NtXxx - und ZwXxx-Versionen einer Windows Native System Services-Routine anders verhalten, da sie Eingabeparameter verarbeiten und interpretieren. Weitere Informationen zur Beziehung zwischen den Nt Xxx- und ZwXxx-Versionen einer Routine finden Sie unter Verwenden von Nt- und Zw-Versionen der Systemdienstroutinen.

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Windows 8
Zielplattform Universell
Header ntifs.h (include Ntifs.h)
Bibliothek NtosKrnl.lib
DLL NtosKrnl.exe
IRQL PASSIVE_LEVEL (siehe Abschnitt Hinweise.)

Weitere Informationen

FltFlushBuffers2

IRP_MJ_FLUSH_BUFFERS

Verwenden von Nt- und Zw-Versionen der Systemdienstroutinen

NtCreateFile

NtOpenFile