Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
3_СПОС_курсач_2009.doc
Скачиваний:
2
Добавлен:
09.11.2018
Размер:
208.9 Кб
Скачать

Реализация функциональности

Для запуска функции асинхронного чтения из файла ReadFile, необходимо предварительно подготовить несколько переменных, а именно: hFile, inBuffer, nBytesToRead, hEvent1, gOverLapped. А теперь о каждой из них по порядку.

hFile= CreateFile(fileName, // Открываемый файл

GENERIC_READ, // Открываем для чтения

FILE_SHARE_READ, // Для совместного чтения

NULL, // Защита по умолчанию

OPEN_EXISTING, // Только существующий файл

FILE_FLAG_OVERLAPPED, // в асинхронном режиме

NULL); // Атрибутов шаблона нет

Прототип этой функции выглядит следующим образом:

HANDLE CreateFile(

LPCTSTR lpFileName, // имя файла

DWORD dwDesiredAccess, // режим доступа

DWORD dwShareMode, // совместный доступ

LPSECURITY_ATTRIBUTES lpSecurityAttributes, // SD (дескр. защиты)

DWORD dwCreationDisposition, // как действовать

DWORD dwFlagsAndAttributes, // атрибуты файла

HANDLE hTemplateFile // дескр.шаблона файла

);

Параметры

lpFileName

[in] Указатель на символьную строку с нулем в конце, устанавливающую имя объекта, который создается или открываться.

dwDesiredAccess

[in] Тип доступа к объекту (чтение, запись или то и другое).

lpSecurityAttributes

[in] Указатель на структуру SECURITY_ATTRIBUTES, которая устанавливает может ли возвращенный дескриптор быть унаследован дочерними процессами. Если lpSecurityAttributes имеет значение ПУСТО (NULL), дескриптор не может быть унаследован.

dwShareMode

[in] Режим совместного доступа (чтение, запись, оба или никакого действия). Может принимать следующие значения:

Значение

Предназначение

FILE_SHARE_DELETE

Разрешает последующие операции открытия объекта, которые требуют доступа к его удалению. В противном случае, другие процессы не смогут открыть объект, если они потребуют доступа к удалению.

FILE_SHARE_READ

Разрешает последующие операции открытия объекта, которые требуют доступа для чтения. В противном случае, другие процессы не смогут открыть объект, если они потребуют доступа для чтения.

FILE_SHARE_WRITE

Разрешает последующие операции открытия объекта, которые требуют доступа для записи. В противном случае, другие процессы не смогут открыть объект, если они потребуют доступа для записи.

dwCreationDisposition

[in] Выполняемые действия с файлами, которые существуют и выполняемые действия с файлами, которые не существуют. Подробную информацию об этом параметре см. в разделе Замечаний. Этот параметр должен быть одним из нижеперечисленных значений:

Значение

Предназначение

CREATE_NEW

Создает новый файл. Функция завершается ошибкой, если заданный файл уже существует.

CREATE_ALWAYS

Создает новый файл. Если файл существует, функция переписывает файл, сбрасывает существующие атрибуты и объединяет, заданные параметром dwFlagsAndAttributes атрибуты файла и флажки, с FILE_ATTRIBUTE_ARCHIVE, но не устанавливает дескриптор безопасности заданный структурой SECURITY_ATTRIBUTES.

OPEN_EXISTING

Открывает файл. Функция завершается ошибкой, если файл не существует.

OPEN_ALWAYS

Открывает файл, если таковой существует. Если файл не существует, функция создает файл, как будто бы dwCreationDisposition имел значение CREATE_NEW.

TRUNCATE_EXISTING

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

dwFlagsAndAttributes

[in] Атрибуты и флажки файла. Подробный список возможных значений см.[2]

hTemplateFile

[in] Дескриптор файла шаблона с правом доступа GENERIC_READ. Файл шаблона предоставляет атрибуты файла и дополнительные атрибуты для создающегося файла. Этот параметр должен быть ПУСТО (NULL).