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.) |