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

CreateFile

Dateiverwaltungsfunktionen

WriteFile

WriteFileEx