Функция FlushFileBuffers


Функция FlushFileBuffers очищает буфер для указанного файла и заставляет все буферизированные данные быть записанными в этом файле.

Синтаксис

BOOL FlushFileBuffers(
  HANDLE hFile  // дескриптор файла
);

Параметры

hFile

[in] Дескриптор открытого файла. Дескриптор файла должен иметь право доступа GENERIC_WRITE. Для получения дополнительной информации, см. статью Защита файла и права доступа.

Если hFile - дескриптор коммуникационного устройства, функция только сбрасывает буфер передачи.

Если hFile - дескриптор  серверного конца именованного канала, функция не возвращает значения до тех пор, пока клиент не прочитает все буферизированные данные из канала.

Возвращаемые значения

Если функция завершается успешно, возвращаемое значение - не нуль.

Если функция завершается ошибкой, величина возвращаемого значения - нуль. Чтобы получить дополнительные данные об ошибке, вызовите GetLastError.

Windows NT/2000/XP: Функция завершается ошибкой, если параметр hFile - дескриптор консольного вывода данных. Это происходит потому, что консольный вывод данных не буферизируется. Функция возвращает значение ЛОЖЬ (FALSE), а функция  GetLastError возвращает значение ERROR_INVALID_HANDLE.

Windows 95/98/Me: Функция не делает ничего, если hFile - дескриптор консольного вывода данных. Это происходит потому, что консольный вывод данных не буферизируется. Функция возвращает значение ИСТИНА (TRUE), но это ничего не меняет.

Замечания

Функции WriteFile и WriteFileEx обычно записывают данные во внутренний буфер, в который операционная система пишет для диска на обычных основаниях. Функция FlushFileBuffers пишет всю буферизированную информацию для указанного файла на диск.

Чтобы открыть файл для не буферизованного ввода - вывода (I/O), вызовите функцию CreateFile с флажком FILE_FLAG_NO_BUFFERING. Это препятствует содержимому файла быть кэшируемым. Однако, метаданные файла все же могут кэшироваться. Чтобы сбросить метаданные на диск, используйте функцию FlushFileBuffers.

Чтобы сбросить все открытые файлы в томе, вызовите FlushFileBuffers с дескриптором тома. Вызывающая программа должна иметь права доступа администратора. Дополнительную информацию, см. в статье Запуск со специальными привилегиями. При открытии тома при помощи CreateFile, строка lpFileName должна иметь форму \\.\<x>: или \\?\Volume{GUID}. Не используйте замыкающую наклонную черту влево(обратный слэш (\)) в имени тома; это будет обозначать корневой каталог диска.

Код примера

 Пример смотри в статье Сервер многопоточного канала.

Смотри также 

Обзор Управление файламиФункции, для файлового ввода-вывода (I/O), CreateFile, WriteFile, WriteFileEx

Размещение и совместимость FlushFileBuffers

К

Windows XP

Да 

л

Windows 2000 Professional

Да

и

Windows NT Workstation

Да

е

Windows Me

Да

н

Windows 98

Да

т

Windows 95

Да

 
С

Windows Server 2003

Да

е Windows 2000 Server Да
р Windows NT Server Да
в    
е    
р    

Используемая библиотека

Kernel32.lib

Используемая DLL -
 Заголовочный файл  

- объявлено в

Winbase.h

 - включено в

Windows.h

 Unicode

Нет

 Замечания по платформе

Не имеется

 

Назад в оглавление
На главную страницу
На оглавление справки

Hosted by uCoz