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

23) Отображение проекции в память процесса.

Когда объект “проекция файла” создан, нужно, чтобы система, зарезервировав регион адресного пространства под данные файла, передала их как физическую память, отображенную на регион. Это делает функция MapViewOfFile:

PVOID MapViewOfFile(

HANDLE hFileMappingObJect,

DWORD dwDesiredAccess,

DWORD dwFileOffsetHigh,

DWORD dwFileOffsetLow,

SIZE_T dwNumberOfBytesToMap);

Параметр hFileMappingObject идентифицирует описатель объекта “проекция файла”, возвращаемый предшествующим вызовом либо CreateFileMapping, либо OpenFile-Mapping. Параметр dwDesiredAccess идентифицирует вид доступа к данным.

Проецируя на адресное пространство процесса представление файла, нужно сделать две вещи. Во-первых, сообщить системе, какой байт файла данных считать в представлении первым. Для этого предназначены параметры dwFileOffsetHigh и dwFileOffsetLow. Поскольку Windows поддерживает файлы длиной до 16 экзабайтов, приходится определять смещение в файле как 64-разрядное число: старшие 32 бита передаются в параметре dwFileOffsetHigh, а младшие 32 бита — в параметре dwFileOffsetLow. Заметьте, что смещение в файле должно быть кратно гранулярности выделения памяти в данной системе. (В настоящее время во всех реализациях Windows она составляет 64 Кб.)

Во-вторых, от Вас потребуется указать размер представления, т. е. сколько байтов файла данных должно быть спроецировано на адресное пространство. Размер указывается в параметре dwNumberOfBytesToMap. Если этот параметр равен 0, система попытается спроецировать представление, начиная с указанного смещения и до конца файла.

В Windows 98, если MapViewOfFile не найдет регион, достаточно большой для размещения всего объекта “проекция файла”, возвращается NULL — независимо от того, какой размер представления был запрошен. В Windows 2000 функция MapViewQ/File ищет регион, достаточно большой для размещения запрошенного представления, не обращая внимания на размер самого объекта “проекция файла”.

19