и четвертый параметры также имеют
Третий и четвертый параметры также имеют тип DWORD. Это — смещение отображаемого участка относительно начала файла в байтах. В нашем случае эти параметры должны быть установлены в нуль, поскольку значение, которое мы даем пятому (последнему) параметру функции MapViewOfFile, также равно нулю.
Пятый (и последний) параметр функции MapViewOfFile, как и предыдущие параметры, имеет тип DWORD. Он используется для определения (в байтах) количества данных объекта файлового отображения, которые надо отобразить в процесс (сделать доступными для вас). Для достижения наших целей это значение должно быть установлено в нуль, что означает автоматическое отображение в процессе всех данных, выделенных перед этим функцией
CreateFileMapping.
Значение, возвращаемое функцией MapViewOfFile, имеет тип "указатель".
Если функция отработала успешно, то она вернет начальный адрес данных объекта файлового отображения.
Следующий фрагмент кода демонстрирует вызов функции MapViewOfFile:
var
hMappedFile: THandle; pSharedBuf: PChar;
begin
hMappedFile :=
CreateFiieMapping(FHandle, nil, PAGE_READWRITE, 0, 0, 'SharedBlock');
if {hMappedFile = 0) then
ShowMessage('Mapping error!')
else
begin
pSharedBuf :=
MapViewOfFiie(hMappedFile, FILE_MAP_ALL_ACCESS, 0, 0, 0) ;
if (pSharedBuf = nil) then
ShowMessage ('MapView error');
end;
end;
После того как получен указатель pSharedBuf, вы можете работать со своим файлом как с обычной областью памяти, не заботясь о вводе, выводе, позиционировании и т. п. Все эти проблемы берет на себя файловая система. Последние две функции, имеющие отношение к объекту файлового отображения, называются UnMapViewOfFile И CloseHandle. Функция UnMapViewOfFile делает то, что подразумевает ее название. Она прекращает отображение в адресное пространство процесса того файла, который перед этим был отображен При помощи функции MapViewOfFile. Функция CloseHandle закрывает дескриптор объекта файлового отображения, возвращаемый функцией CreateFileMapping.
Функция
UnMapViewOfFile должна вызываться перед функцией
CloseHandle.
Функция UnMapViewOfFile передает единственный параметр типа указатель:
procedure TClientForm.FormDestroy(Sender: TObject);
begin
UnMapViewOfFile(pSharedBuf};
CloseHandle(hFileMapObj);
end;
Отображаемые файлы уже будут использоваться и в других главах этой книги. Не стоит удивляться, ведь это очень мощный инструмент: помимо возможности совместного доступа он позволяет заметно ускорить доступ к файлам, особенно большого размера.
Содержание Назад Вперед
Forekc.ru
Рефераты, дипломы, курсовые, выпускные и квалификационные работы, диссертации, учебники, учебные пособия, лекции, методические пособия и рекомендации, программы и курсы обучения, публикации из профильных изданий