Ввод/вывод файлов. Создание и открытие файлов, страница 2

Система Windows позволяет выполнять асинхронный ввод и вывод в файлы, что дает возможность некоторым функциям ввода/вывода немедленно выполнять возврат после передачи системе запроса ввода/вывода. Асинхронный ввод/вывод позволяет приложению продолжать обработку и перейти к ожиданию завершения ввода/ вывода, когда потребуются его результаты. С асинхронным вводом/выводом связано еще одно понятие — перекрывающийся ввод/вывод. Перекрывающийся ввод/вывод позволяет выполнять в приложении функции ReadFile и WriteFile. Если в приложении намечено выполнять перекрывающийся ввод/вывод в файл, при открытии этого файла должен быть указан флажок FILE_FLAG_OVERLAPPED. Пример использования этого метода приведен в описании функции GetOverlappedResult далее в этой главе.

Совместное использование данных с применением отображения файла

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

Типичным примером совместного использования данных процессами является динамический обмен данными (DDE — dynamic data exchange). В системе Windows 3.x приложения распределяли глобальную память с флажком GMEM_DDESHARE и использовали дескриптор этой памяти. В Windows 98 и Windows 2000 в приложениях следует использовать отображение файла. Для этого не требуется действительно иметь файл, отображенный в память. В приложении при вызове функции CreateFileMapping в качестве дескриптора файла можно указать значение OxFFFFFFFF. При этом произойдет отображение в память представления файла подкачки операционной системы. В примере, приведенном при описании функции MapViewOfFile, подробно проиллюстрирован способ использования отображения файла.

Функции ввода/вывода файлов

В табл. 17.1 приведены функции ввода/вывода файлов. За таблицей следует подробное описание функций. Таблица 17.1. Функции ввода/вывода файлов_____________