.
Tuesday 22nd of May 2012    

Информация

Счетчики

Голосование

Лучшая марка телефона
 

Реклама

фильмы онлайн

фильмы онлайн


Метод CreateFileMapping
загрузка...

Метод CreateFileMapping() лишь создал файловый объект. Для отображения файла в адресное пространство нам понадобится метод:

1ШЯла5)<5) /Ш/7 function MapViewOfFile(hMapObject : THandle; Access, OffsetHigh,

OffsetLow, Map : Cardinal) : Pointer;

Здесь параметр hMapObject - дескриптор объекта отображения, возвращенный методом CreateFileMapping() . Параметр Access определяет тип доступа к представлению. Различают три основных режима:

• FILE_MAP_WRITE или FILE_MAP_ALL_ACCESS - доступ для чтения и записи.

• FILE_MAP_READ - доступ для чтения.

• FILE_MAP_COPY - доступ для копирования.

Параметры OffsetHigh и OffsetLow задают соответственно старшие и младшие 32 бита смещения внутри файла отображения. Параметр Map - количество байт файла, которые должны быть отображены. Если параметр установлен в 0, то отображается весь файл. В случае успешного завершения метод возвратит указатель на самый первый байт спроецированного файла (базовый адрес объекта отображения).

Применим знания на практике. Начните новый проект. В секции определения переменных главной формы (перед началом раздела implementation) объявите переменные hMFile и pMFile и константу mFileName:

var Forml : TForml;

hMFile : THandle;

pMFile : pointer; const mFileName='FileMappingDemo'; //имя объекта отображения

Сохраните приложение под именем FMapping.dpr. Перейдите к головному модулю проекта .dpr и внесите в него изменения так, как предложено в следующем листинге:

program FMapping;

uses Forms, Windows,

Unitl in 'Unitl.pas' {Forml}; {$R *.res}

begin

Application.Initialize; {Для того чтобы процессы смогли разделить объект файлового отображения, они должны передавать одинаковые параметры в методы CreateFileMapping() и MapViewOfFile()} hmFile:=CreateFileMapping($FFFFFFFF, nil, Page_ReadWrite, 0, 256, mFileName); {размер объекта отображения - всего-навсего 256 байт, он доступен для чтения и записи}

Сразу после инициализации приложения мы пытаемся создать объект отображения. Если эта операция завершилась неудачно, прекращаем работу программы, вызвав метод Halt(). Если же дескриптор объекта отображения получен, то проецируем его в виртуальное адресное пространство нашего процесса. Для этого вызываем функцию CreateFileMapping() и получаем указатель на начальную область памяти pMFile. Затем создаем главную форму и запускаем приложение на выполнение.


загрузка...
 

Самое популярное:

bottom

карта сайта