25-30 / 26Файловая система NTFS. Доступ к данным
..docWindows предоставляет прикладным программам API-функцию CreateFile, которая может использоваться как для создания нового файла, так и для открытия существующего. В любом случае эта функция создает в системной памяти объект типа «открытый файл», именно потому название функции начинается со слова «Create».
Параметры этой функции многочисленны и дают достаточно хорошее представление о возможностях работы с файлами в Windows.
-
Имя
-
Режим доступа..
-
Режим разделения. Он может включать в себя разрешение другим процессам читать файл, записывать данные в файл, удалять файл или любую комбинацию этих разрешений, в том числе, разумеется, и отсутствие всех разрешений.
-
Атрибуты защиты.
-
Режим создания. Определяет действия функции в случаях, когда файл с заданным именем уже существует и когда не существует. Определены следующие режимы.
-
CREATE_NEW – Создается новый файл. Если файл уже существует, выдается ошибка.
-
CREATE_ALWAYS – Создается новый файл в любом случае, даже если файл с таким именем уже существует.
-
OPEN_EXISTING – Открывается существующий файл. Выдает ошибку, если файл не существует.
-
OPEN_ALWAYS – Если файл существует, то он открывается, если не существует – создается новый файл.
-
TRUNCATE_EXISTING – Открывается существующий файл, но все его содержимое удаляется. Если файл не существует, выдается ошибка.
-
Большой набор атрибутов и флагов.
К атрибутам файла относятся все те, которые Windows унаследовала от MS-DOS (только для чтения, скрытый, системный, архивный), а также атрибут «сжатый» (т.е. файл, создаваемый в NTFS, будет храниться в сжатом виде.
Флаги функции предоставляют, в частности, следующие возможности:
-
при операциях записи немедленно выполнять запись на диск (очищать кэш-буфера файла);
-
вообще исключить использование кэша для данного файла, всегда записывать и читать секторы данных непосредственно с диска;
-
указать системе желательность оптимальной буферизации для последовательного доступа или, наоборот, для произвольного доступа;
-
открыть файл для выполнения асинхронных операций;
-
указать системе, что файл должен быть автоматически удален сразу же, как только он будет закрыт.
Функция CreateFile возвращает хэндл открытого файла. Этот хэндл может затем использоваться при обращении к функциям чтения, записи, перемещения указателя, очистки буферов, блокирования фрагментов, закрытия фала и др.