Fonction FlushFileBuffers (fileapi.h)

Vide les tampons d’un fichier spécifié et écrit toutes les données en mémoire tampon dans un fichier.

Syntaxe

BOOL FlushFileBuffers(
  [in] HANDLE hFile
);

Paramètres

[in] hFile

Handle du fichier ouvert.

Le handle de fichier doit avoir le droit d’accès GENERIC_WRITE . Pour plus d’informations, consultez Sécurité des fichiers et droits d’accès.

Si hFile est un handle pour un appareil de communication, la fonction vide uniquement la mémoire tampon de transmission.

Si hFile est un handle vers l’extrémité du serveur d’un canal nommé, la fonction ne retourne pas tant que le client n’a pas lu toutes les données mises en mémoire tampon à partir du canal.

Valeur retournée

Si la fonction réussit, la valeur de retour est différente de zéro.

Si la fonction échoue, la valeur de retour est égale à zéro. Pour obtenir des informations détaillées sur l’erreur, appelez GetLastError.

La fonction échoue si hFile est un handle de la sortie de la console. Cela est dû au fait que la sortie de la console n’est pas mise en mémoire tampon. La fonction retourne FALSE et GetLastError retourne ERROR_INVALID_HANDLE.

Notes

En règle générale, les fonctions WriteFile et WriteFileEx écrivent des données dans une mémoire tampon interne que le système d’exploitation écrit régulièrement sur un disque ou un canal de communication. La fonction FlushFileBuffers écrit toutes les informations mises en mémoire tampon pour un fichier spécifié dans l’appareil ou le canal.

En raison des interactions de mise en cache de disque au sein du système, la fonction FlushFileBuffers peut être inefficace lorsqu’elle est utilisée après chaque écriture sur un périphérique de lecteur de disque lorsque de nombreuses écritures sont effectuées séparément. Si une application effectue plusieurs écritures sur le disque et doit également s’assurer que les données critiques sont écrites sur un support persistant, l’application doit utiliser des E/S sans débogage au lieu d’appeler fréquemment FlushFileBuffers. Pour ouvrir un fichier d’E/S sans débogage, appelez la fonction CreateFile avec les indicateurs FILE_FLAG_NO_BUFFERING et FILE_FLAG_WRITE_THROUGH . Cela empêche le contenu du fichier d’être mis en cache et vide les métadonnées sur le disque à chaque écriture. Pour plus d’informations, consultez CreateFile.

Pour vider tous les fichiers ouverts sur un volume, appelez FlushFileBuffers avec un handle sur le volume. L’appelant doit disposer de privilèges d’administration. Pour plus d’informations, consultez Exécution avec des privilèges spéciaux.

Lors de l’ouverture d’un volume avec CreateFile, la chaîne lpFileName doit avoir la forme suivante : \.\x: ou \?\Volume{GUID}. N’utilisez pas de barre oblique inverse de fin dans le nom du volume, car cela indique le répertoire racine d’un lecteur.

Dans Windows 8 et Windows Server 2012, cette fonction est prise en charge par les technologies suivantes.

Technologie Prise en charge
Protocole Server Message Block (SMB) 3.0 Oui
Basculement transparent SMB 3.0 (TFO) Oui
SMB 3.0 avec partages de fichiers avec montée en puissance parallèle (SO) Oui
Système de fichiers du volume partagé de cluster (CsvFS) Oui
Système de fichiers résilient (ReFS) Oui
 

Exemples

Pour obtenir un exemple, consultez Multithreaded Pipe Server.

Spécifications

   
Client minimal pris en charge Windows XP [applications de bureau | applications UWP]
Serveur minimal pris en charge Windows Server 2003 [applications de bureau | applications UWP]
Plateforme cible Windows
En-tête fileapi.h (inclure Windows.h)
Bibliothèque Kernel32.lib
DLL Kernel32.dll

Voir aussi

CreateFile

Fonctions de gestion des fichiers

WriteFile

WriteFileEx