Partager via


FlushFileBuffers, fonction (fileapi.h)

Vide les mémoires tampons d’un fichier spécifié et provoque l’écriture de toutes les données mises 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 disposer du 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 vers un appareil de communication, la fonction vide uniquement la mémoire tampon de transmission.

Si hFile est un handle vers la fin 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 du canal.

Valeur de retour

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’erreur étendues, 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 FALSEet GetLastError retourne ERROR_INVALID_HANDLE.

Remarques

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 sur un disque ou un canal de communication régulièrement. La fonction FlushFileBuffers écrit toutes les informations mises en mémoire tampon pour un fichier spécifié sur l’appareil ou le canal.

En raison des interactions de mise en cache de disque au sein du système, les FlushFileBuffers fonction peuvent être inefficaces lorsqu’elles sont utilisées 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 dans un média persistant, l’application doit utiliser des E/S non chiffrées au lieu d’appeler fréquemment FlushFileBuffers. Pour ouvrir un fichier pour les E/S non sauvegardées, 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 avec chaque écriture. Pour plus d’informations, consultez CreateFile.

Pour vider tous les fichiers ouverts sur un volume, appelez FlushFileBuffers avec un handle vers 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 être 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 Supporté
Protocole SMB (Server Message Block) 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
Cluster Shared Volume File System (CsvFS) Oui
Système de fichiers résilient (ReFS) Oui
 

Exemples

Pour obtenir un exemple, consultez Multithreaded Pipe Server .

Exigences

Exigence Valeur
client minimum pris en charge Windows XP [applications de bureau | Applications UWP]
serveur minimum pris en charge Windows Server 2003 [applications de bureau | Applications UWP]
plateforme cible Windows
d’en-tête fileapi.h (include Windows.h)
bibliothèque Kernel32.lib
DLL Kernel32.dll

Voir aussi

CreateFile

fonctions de gestion de fichiers

writeFile

writeFileEx