Шаг 111 - Отображение файлов в память

Самый главный вопрос - это зачем нужно отображать файлы на память ? Ведь есть виртуальная память до 2 ГБ. Одна из причин это обеспечение работы с файлами большего размера. Второе преимущество при работе с большими файлами, что память не выделяется, а резервируется и при обращении к ней происходит подгрузка из файла. Этот механизм используется операционной системой, например, при работе с DLL. Общий набор функций по работе с отображаемыми файлами представлен на диаграмме.

111.gif (2091 b)

Сначала файл открывается с помощью CreateFile(), и если открытие прошло успешно, то идентификатором файла можно воспользоваться для создания отображенного файла CreateFileMapping(), после которой мы получим идентификатор отраженного файла, на основе которого мы можем проецировать файл в память с помощью функции MapViewOfFile(). Эта функция даст нам указатель LPVOID, который используется для последующих операций, в том числе и по отмене проецированного файла UnmapViewOfFile() или принудительной записи на диск FlushViewOfFile(). В том случае, если с отображенным файлом будут работать несколько приложений одно приложение создает файл проецированный на память CreateFileMaping(), а остальные открывают эту проекцию OpenFileMapping().


Предыдущий Шаг | Следующий Шаг | Оглавление
Автор Каев Артем - 16.04.2001