![]() |
Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | |
|
Основными операциями с файлами являются: создание, открытие, чтение, запись, удаление и др. В ряде случаев возникает необходимость параллельного доступа к файловым объектам из различных потоков выполнения. В этом случае возникает необходимость синхронизации действий потоков.
Прежде чем файл будет использоваться его необходимо открыть или создать. Создать (открыть) файл можно системным вызовом CreateFile.
Синтаксис:
HANDLE WINAPI CreateFile(
LPCTSTR lpFileName,
DWORD dwDesiredAccess,
DWORD dwShareMode,
LPSECURITY_ATTRIBUTES lpSecurityAttributes,
DWORD dwCreationDisposition,
DWORD dwFlagsAndAttributes,
HANDLE hTemplateFile
);
Параметры:
lpFileName [in] Имя файла или устройства, который будет создан или открыт.
dwDesiredAccess [in] Запрашиваемый режим доступа: чтение (GENERIC_READ), запись (GENERIC_WRITE), чтение-запись (GENERIC_READ | GENERIC_WRITE).
dwShareMode [in] Определяет режим разделения файла между потоками выполнения (таблица 4.1), может устанавливаться как комбинация по ИЛИ.
Таблица 4.1 – Допустимые режимы разделения доступа
Значение | Описание |
0x00000000 | Только создавший (открывший) процесс может получить доступ к файлу. |
FILE_SHARE_DELETE 0x00000004 | Разрешает открытие файла с целью удаления процессом отличным от процесса открывшего файл. |
FILE_SHARE_READ 0x00000001 | Разрешает открытие файла с целью чтения процессом отличным от процесса открывшего файл. |
FILE_SHARE_WRITE 0x00000002 | Разрешает открытие файла с целью записи процессом отличным от процесса открывшего файл. |
lpSecurityAttributes [in, optional] Адрес структуры типа SECURITY_ATTRIBUTES, которая определяет атрибуты защиты. Этот параметр может быть NULL.
dwCreationDisposition [in] Действие с файлом при его существовании или отсутствии.
Таблица 4.2 – Допустимые действия с файлом
Значение | Описание |
CREATE_ALWAYS | Создает новый файл (всегда). Если файл существует и возможна запись, то он перезаписывается, функция завершается успехом и в последнюю ошибку записывается код ERROR_ALREADY_EXISTS (183). |
CREATE_NEW | Создает новый файл, если он не существует. В противном случае вызов проваливается и в последнюю ошибку записывается код ERROR_ALREADY_EXISTS (183). |
OPEN_ALWAYS | Открывает существующий файл (всегда). Если файл существует, то он открывается, функция завершается успехом и в последнюю ошибку записывается код ERROR_ALREADY_EXISTS (183). Если файл не существует, то он создается. |
OPEN_EXISTING | Открывает существующий файл, только если файл существует. В противном случае вызов проваливается и в последнюю ошибку записывается код ERROR_FILE_NOT_FOUND (2). |
dwFlagsAndAttributes [in] Флаги и атрибуты файла. Атрибуты зависят от используемой файловой системы. В большинстве случаев достаточно указать FILE_ATTRIBUTE_NORMAL. Атрибуты могут быть в любой комбинации по ИЛИ с флагами. Флаги определяют расширение операций ввода-вывода с файлом, такие как: режим кеширования, синхронный асинхронный ввод-вывод и др. Для асинхронного доступа к файлу должен быть установлен флаг FILE_FLAG_OVERLAPPED.
hTemplateFile [in, optional] Дескриптор временного файла. Данный параметр может быть NULL.
Возвращаемое значение дескриптор файла, устройства, именованного канала или почтового слота. Если вызов провален, то возвращаемое значение INVALID_HANDLE_VALUE.
Запись в файл осуществляется системным вызовом WriteFile.
Синтаксис:
Дата публикования: 2015-01-13; Прочитано: 173 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!