
- •Структура оконного приложения и обработка сообщений.
- •Цель работы
- •Указания по подготовке к выполнению лабораторной работы
- •Обзор темы работы
- •Структура оконного приложения
- •Задания к лабораторной работе
- •Содержание отчета к лабораторной работе
- •Контрольные вопросы.
- •Многозадачность и многопоточность
- •Цель работы
- •Указания по подготовке к выполнению лабораторной работы
- •Обзор темы работы
- •Обобщенный алгоритм доступа к критическому ресурсу с использованием объектов синхронизации
- •Практические аспекты
- •Задания на лабораторную работу
- •Контрольные вопросы и задания
- •Управление распределением памяти (win api)
- •Цель работы
- •Указания по подготовке к выполнению лабораторной работы
- •Обзор темы работы
- •Порядок выполнения работы.
- •Задания к выполнению.
- •Содержание отчета
- •Контрольные вопросы и задания
- •Управление файлами
- •Цель работы
- •Указания по подготовке к выполнению лабораторной работы
- •Обзор темы работы
Управление файлами
Цель работы
Ознакомление с функциональными возможностями системы управления фалами современных операционных систем, получение практических навыков по составлению, написанию и отладке программ, выполняющих операции с файлами.
Указания по подготовке к выполнению лабораторной работы
Система управления файлами одна из основных составляющих операционных систем. При подготовке к лабораторной работе необходимо ознакомится с теоретическим описанием файловых систем FAT,NTFS. Внимательно проработать вопросы доступа к файлам в операционной системеWindowsиз пользовательских приложений.
При подготовке к работе необходимо изучить конспект лекций по указанной теме, методические указания, а также документацию к выбранной среде разработки программного обеспечения по работе с системой управления файлами.
Обзор темы работы
Основными операциями с файлами являются: создание, открытие, чтение, запись, удаление и др. В ряде случаев возникает необходимость параллельного доступа к файловым объектам из различных потоков выполнения. В этом случае возникает необходимость синхронизации действий потоков.
Прежде чем файл будет использоваться его необходимо открыть или создать. Создать (открыть) файл можно системным вызовом 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.
Синтаксис: