Второй параметр - указатель на запись типа TSecurityAttributes. При отсутствии требований к защите данных в Windows NT значение этого параметра всегда равно nil. Третий параметр имеет тип dword, он определяет атрибут защиты. Если при помощи отображаемого файла вы планируете совместное использование данных, третьему параметру следует присвоить

Значение PAGE_READWRITE.

Четвертый и пятый параметры также имеют тип DW3RD. Когда выполняется функция CreateFiieMapping, значение типа ГЖЖ> четвертого параметра сдвигается влево на четыре байта и затем объединяется со значением пятого параметра посредством операции and. Проще говоря, значения объединяются в одно 64-разрядное число, равное объему памяти, выделяемой объекту файлового отображения из страничного файла операционной системы. Поскольку вы вряд ли попытаетесь осуществить выделение более чем 4 Гбайт данных, то значение четвертого параметра всегда должно быть равно нулю. Используемый затем пятый параметр должен показывать, сколько памяти в байтах необходимо зарезервировать в качестве совместной. Если вы хотите отобразить весь файл, четвертый и пятый параметры должны быть равны нулю.

Шестой параметр имеет тип PChar и представляет собой имя объекта файлового отображения.

Функция CreateFiieMapping возвращает значение типа THandle. В случае успешного завершения возвращаемое функцией значение представляет собой дескриптор созданного объекта файлового отображения. В случае возникновения какой-либо ошибки возвращаемое значение будет равно 0.

Следующая задача - спроецировать данные файла в адресное пространство нашего процесса. Этой цели служит функция MapViewofFile. Функция MapviewOfFile имеет пять параметров:

function MapViewOf File (hFileMappingObject: THandle;
clwDesiredAccess: EWDRD;
diAFileOffsetHigh, dwFileOffsetLow, dwNumberOfBytesToMap: DWDRD) : Pointer;

Первый параметр имеет тип THandle. Его значением должен быть дескриптор созданного объекта файлового отображения - тот, который возвращает функция createFileMapping. Второй параметр определяет режим доступа к файлу: FILE_MAP_WRITE, FILE MAP READ ИЛИ FILE_MAP_ALL_ACCESS.

Третий и четвертый параметры также имеют тип dword. это - смещение отображаемого участка относительно начала файла в байтах. В нашем случае эти параметры должны быть установлены в нуль, поскольку значение, которое мы даем пятому (последнему) параметру функции MapViewofFile, также равно нулю.

Пятый (и последний) параметр функции MapViewOfFile, как и предыдущие параметры, имеет тип ewckd. он используется для определения (в байтах) количества данных объекта файлового отображения, которые надо отобразить в процесс (сделать доступными для вас). Для достижения наших целей это значение должно быть установлено в нуль, что означает автоматическое отображение в процессе всех данных, выделенных перед этим функцией CreateFi leMappirig.

Значение, возвращаемое функцией MapViewOfFile, имеет тип "указатель". Если функция отработала успешно, то она вернет начальный адрес данных объекта файлового отображения.


⇐ Предыдущая страница| |Следующая страница ⇒

Программирование в Delphi 7



Новости за месяц

  • Июнь
    2017
  • Пн
  • Вт
  • Ср
  • Чт
  • Пт
  • Сб
  • Вс