Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Обзор темы работы. Основными операциями с файлами являются: создание, открытие, чтение, запись, удаление и др



Основными операциями с файлами являются: создание, открытие, чтение, запись, удаление и др. В ряде случаев возникает необходимость параллельного доступа к файловым объектам из различных потоков выполнения. В этом случае возникает необходимость синхронизации действий потоков.

Прежде чем файл будет использоваться его необходимо открыть или создать. Создать (открыть) файл можно системным вызовом 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; Прочитано: 163 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.008 с)...