Асинхронный файловый ввод/вывод в операционной системе WINDOWS, страница 4

Флаг

Значение

FILE_FLAG_WRITE_THROUGH

Приказывает Windows осуществлять немедленную запись данных на диск. Система может по-прежнему кэшировать операции записи, однако она будет стараться немедленно записывать данные на диск, избегая задержек

FILE_FLAG_NO_BUFFERING

Приказывает системе открыть файл без использования кэширования или буферизации. В комбинации с флагом FILE_FLAG_OVERLAPPED это дает максимальную производительность при асинхронном вводе/выводе, так как осуществление ввода/вывода не зависит от функционирования менеджера памяти, работа которого обычно синхронизируется. Вместе с тем некоторые операции ввода/вывода могут потребовать больше времени для своего завершения, так как данные не сохраняются в кэше. Чтобы работать с файлами, открытыми в режиме FILE_FLAG_NO_BUFFERING, приложение должно удовлетворять определенным требованиям. В частности, жесткие требования предъявляются к начальному смещению, размеру блока и адресу буферов хранения данных

FILE_FLAG_RANDOM_ACCESS

Оповещает систему о том, что доступ к файлу осуществляется случайным образом. Система может использовать это обстоятельство для оптимизации кэширования файла

FILE_FLAG_SEQUENTIAL_SCAN

Оповещает систему о том, что доступ к файлу осуществляется последовательно от начала к концу файла. Система может использовать это обстоятельство для оптимизации кэширования файла. Если в этом режиме указатель доступа к файлу переместить в случайное место файла, операция чтения/записи будет выполнена корректно, однако при этом кэш не будет использован наиболее оптимальным образом

FILE_FLAG_OVERLAPPED

Приказывает системе инициализировать объект для перекрывающегося ввода/вывода (см. текст)

FILE_FLAG_DELETE_ON_CLOSE

Приказывает системе уничтожить файл сразу же после того, как все его дескрипторы будут закрыты. Обратите внимание, что закрыть необходимо не только дескриптор, который был получен с использованием флага FILE_FLAG_DELETE_ON_CLOSE, но и все остальные дескрипторы файла. Если при открытии файла в этом режиме не был использован режим FILE_SHARE_DELETE, все последующие запросы на открытие файла будут отвергнуты

FILE_FLAG_BACKUP_SEMANTICS

Указывает на то, что файл предназначен для операций резервного копирования или восстановления из резервной копии. Операционная система разрешает вызывающему процессу любой доступ к файлу при условии, что вызывающий процесс обладает привилегиями SE_BACKU_PNAME и SE_RESTORE_NAME

FILE_FLAG_POSIX_SEMANTICS

Доступ к файлу осуществляется в соответствии с правилами POSIX, При этом разрешатся использовать несколько различных файлов, имена которых отличаются только регистром букв. Такие файлы разрешается создавать только в системах, поддерживающих подобную схему именования файлов. Этот флаг следует использовать с большой осторожностью, так как файлы, созданные с его использованием, могут оказаться недоступными для приложений DOS и Windows

FILE_FLAG_OPEN_REPARSE_POINT

Подавляет поведение, свойственное для точек грамматического разбора (reparse points) файловой системы NTFS. Когда файл открывается, вызывающему процессу возвращается его дескриптор вне зависимости от того, работоспособен ли фильтр, контролирующий точку грамматического разбора, или нет. Этот флаг не может использоваться совместно с флагом CREATE_ALWAYS

FILE_FLAG_OPEN_NO_RECALL

Информирует систему о том, что вызывающее приложение запрашивает данные, хранящиеся в файле, однако файл может продолжать оставаться на удаленном носителе данных. Этот флаг используется удаленными системами хранения данных или совместно с системой Hierarchical Storage Management