FlushFileBuffers-Funktion (fileapi.h)
Leert die Puffer einer angegebenen Datei und bewirkt, dass alle Pufferdaten in eine Datei geschrieben werden.
Syntax
BOOL FlushFileBuffers(
[in] HANDLE hFile
);
Parameter
[in] hFile
Ein Handle für die geöffnete Datei.
Das Dateihandle muss über das GENERIC_WRITE-Zugriffsrecht verfügen. Weitere Informationen finden Sie unter Dateisicherheit und Zugriffsrechte.
Wenn hFile ein Handle für ein Kommunikationsgerät ist, löscht die Funktion nur den Übertragungspuffer.
Wenn hFile ein Handle für das Serverende einer Named Pipe ist, wird die Funktion erst zurückgegeben, wenn der Client alle gepufferten Daten aus der Pipe gelesen hat.
Rückgabewert
Wenn die Funktion erfolgreich ist, ist der Rückgabewert ungleich Null.
Wenn die Funktion fehlerhaft ist, ist der Rückgabewert null. Um erweiterte Fehlerinformationen zu erhalten, rufen Sie GetLastError auf.
Die Funktion schlägt fehl, wenn hFile ein Handle für die Konsolenausgabe ist. Das liegt daran, dass die Konsolenausgabe nicht gepuffert wird. Die Funktion gibt FALSE zurück, und GetLastError gibt ERROR_INVALID_HANDLE zurück.
Hinweise
In der Regel schreiben die Funktionen WriteFile und WriteFileEx Daten in einen internen Puffer, den das Betriebssystem regelmäßig auf einen Datenträger oder eine Kommunikationspipe schreibt. Die FlushFileBuffers-Funktion schreibt alle gepufferten Informationen für eine angegebene Datei auf das Gerät oder die Pipe.
Aufgrund von Datenträgerzwischenspeicherungsinteraktionen innerhalb des Systems kann die FlushFileBuffers-Funktion ineffizient sein, wenn sie nach jedem Schreibvorgang auf ein Datenträgerlaufwerk verwendet wird, wenn viele Schreibvorgänge separat ausgeführt werden. Wenn eine Anwendung mehrere Schreibvorgänge auf den Datenträger ausführt und außerdem sicherstellen muss, dass wichtige Daten auf persistente Medien geschrieben werden, sollte die Anwendung nicht gepufferte E/A-Vorgänge verwenden, anstatt häufig FlushFileBuffers aufzurufen. Um eine Datei für nicht gepufferte E/A-Vorgänge zu öffnen, rufen Sie die CreateFile-Funktion mit den flags FILE_FLAG_NO_BUFFERING und FILE_FLAG_WRITE_THROUGH auf. Dadurch wird verhindert, dass der Dateiinhalt zwischengespeichert wird, und die Metadaten werden mit jedem Schreibvorgang auf den Datenträger geleert. Weitere Informationen finden Sie unter CreateFile.
Um alle geöffneten Dateien auf einem Volume zu löschen, rufen Sie FlushFileBuffers mit einem Handle für das Volume auf. Der Aufrufer muss über Administratorrechte verfügen. Weitere Informationen finden Sie unter Ausführen mit speziellen Berechtigungen.
Beim Öffnen eines Volumes mit CreateFile sollte die lpFileName-Zeichenfolge die folgende Form aufweisen: \.\x: oder \?\Volume{GUID}. Verwenden Sie keinen nachgestellten umgekehrten Schrägstrich im Volumenamen, da dieser das Stammverzeichnis eines Laufwerks angibt.
Unter Windows 8 und Windows Server 2012 wird diese Funktion von den folgenden Technologien unterstützt.
Technologie | Unterstützt |
---|---|
SMB 3.0-Protokoll (Server Message Block) | Ja |
SMB 3.0 Transparent Failover (TFO) | Ja |
SMB 3.0 mit Dateifreigaben mit horizontaler Skalierung (SO) | Ja |
Dateisystem mit freigegebenen Clustervolumes (CsvFS) | Ja |
Robustes Dateisystem (Resilient File System, ReFS) | Ja |
Beispiele
Ein Beispiel finden Sie unter Multithreaded Pipe Server.
Anforderungen
Unterstützte Mindestversion (Client) | Windows XP [Desktop-Apps | UWP-Apps] |
Unterstützte Mindestversion (Server) | Windows Server 2003 [Desktop-Apps | UWP-Apps] |
Zielplattform | Windows |
Kopfzeile | fileapi.h (Einschließen von Windows.h) |
Bibliothek | Kernel32.lib |
DLL | Kernel32.dll |
Siehe auch
Feedback
https://aka.ms/ContentUserFeedback.
Bald verfügbar: Im Laufe des Jahres 2024 werden wir GitHub-Issues stufenweise als Feedbackmechanismus für Inhalte abbauen und durch ein neues Feedbacksystem ersetzen. Weitere Informationen finden Sie unterFeedback senden und anzeigen für