Функция 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 |
Нет |
|
Замечания по платформе |
Не имеется |