Программирование для Windows NT (том 2)


         

Выполнение отображения файла в память - часть 2


  DWORD  dwActiveProcessorMask;   // маски процессоров

  DWORD  dwNumberOfProcessors;    // количество процессоров

  DWORD  dwProcessorType;         // тип процессора

  DWORD  dwAllocationGranularity; // гранулярность памяти

  WORD   wProcessorLevel;         // уровень процессора

  WORD   wProcessorRevision;      // модификация процессора

} SYSTEM_INFO;

Функция заполнит поля этой структуры различной информацией о системе. В частности, в поле dwAllocationGranularity будет записан минимальный размер резервируемой области памяти.

Вернемся к описанию функции MapViewOfFile.

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

Значение

Описание

FILE_MAP_WRITE

Доступ на запись и чтение. При создании отображения функции CreateFileMapping необходимо указать тип защиты PAGE_READWRITE

FILE_MAP_READ

Доступ только на чтение. При создании отображения необходимо указать тип защиты PAGE_READWRITE или PAGE_READ

FILE_MAP_ALL_ACCESS

Аналогично FILE_MAP_WRITE

FILE_MAP_COPY

Доступ для копирования при записи. При создании отображения необходимо указать атрибут PAGE_WRITECOPY 

   В случае успешного выполнения отображения функция MapViewOfFile возвращает адрес отображенной области памяти. При ошибке возвращается значение NULL.

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

LPVOID MapViewOfFileEx(

  HANDLE hFileMappingObject,  // идентификатор отображения

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

  DWORD dwFileOffsetHigh,  // смещение в файле (старшее слово)

  DWORD dwFileOffsetLow,   // смещение в файле (младшее слово)

  DWORD dwNumberOfBytesToMap, // количество отображаемых байт

  LPVOID lpBaseAddress);      // предполагаемый адрес

                              // для отображения файла




Содержание  Назад  Вперед