Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
спиос-методичка-часть2.doc
Скачиваний:
15
Добавлен:
13.04.2015
Размер:
266.75 Кб
Скачать
  1. Управление файлами

    1. Цель работы

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

    1. Указания по подготовке к выполнению лабораторной работы

Система управления файлами одна из основных составляющих операционных систем. При подготовке к лабораторной работе необходимо ознакомится с теоретическим описанием файловых систем FAT,NTFS. Внимательно проработать вопросы доступа к файлам в операционной системеWindowsиз пользовательских приложений.

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

    1. Обзор темы работы

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

Прежде чем файл будет использоваться его необходимо открыть или создать. Создать (открыть) файл можно системным вызовом 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 .4), может устанавливаться как комбинация по ИЛИ.

Таблица4.4 – Допустимые режимы разделения доступа

Значение

Описание

0

0x00000000

Только создавший (открывший) процесс может получить доступ к файлу.

FILE_SHARE_DELETE

0x00000004

Разрешает открытие файла с целью удаления процессом отличным от процесса открывшего файл.

FILE_SHARE_READ

0x00000001

Разрешает открытие файла с целью чтения процессом отличным от процесса открывшего файл.

FILE_SHARE_WRITE

0x00000002

Разрешает открытие файла с целью записи процессом отличным от процесса открывшего файл.

lpSecurityAttributes [in, optional]Адрес структуры типаSECURITY_ATTRIBUTES, которая определяет атрибуты защиты. Этот параметр может быть NULL.

dwCreationDisposition [in]Действие с файлом при его существовании или отсутствии.

Таблица 4.5 – Допустимые действия с файлом

Значение

Описание

CREATE_ALWAYS

2

Создает новый файл (всегда). Если файл существует и возможна запись, то он перезаписывается, функция завершается успехом и в последнюю ошибку записывается кодERROR_ALREADY_EXISTS (183).

CREATE_NEW

1

Создает новый файл, если он не существует. В противном случае вызов проваливается и в последнюю ошибку записывается код ERROR_ALREADY_EXISTS (183).

OPEN_ALWAYS

4

Открывает существующий файл (всегда). Если файл существует, то он открывается, функция завершается успехом и в последнюю ошибку записывается код ERROR_ALREADY_EXISTS(183). Если файл не существует, то он создается.

OPEN_EXISTING

3

Открывает существующий файл, только если файл существует. В противном случае вызов проваливается и в последнюю ошибку записывается код ERROR_FILE_NOT_FOUND(2).

dwFlagsAndAttributes [in] Флаги и атрибуты файла. Атрибуты зависят от используемой файловой системы. В большинстве случаев достаточно указатьFILE_ATTRIBUTE_NORMAL. Атрибуты могут быть в любой комбинации по ИЛИ с флагами. Флаги определяют расширение операций ввода-вывода с файлом, такие как: режим кеширования, синхронный асинхронный ввод-вывод и др. Для асинхронного доступа к файлу должен быть установлен флагFILE_FLAG_OVERLAPPED.

hTemplateFile [in, optional] Дескриптор временного файла. Данный параметр может бытьNULL.

Возвращаемое значение дескриптор файла, устройства, именованного канала или почтового слота. Если вызов провален, то возвращаемое значение INVALID_HANDLE_VALUE.

Запись в файл осуществляется системным вызовом WriteFile.

Синтаксис: