Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.06.12;
Скачать: CL | DM;

Вниз

FileMapping   Найти похожие ветки 

 
Некий_программёр   (2003-04-15 11:42) [0]

Здравствуйте! Подскажите, плз, как правильно пользоваться
функциями CreateFileMapping, MapViewOfFile и т.д. Если можно,
пример или ссылку на инфу.
Всем заранее спасибо!


 
MBo ©   (2003-04-15 11:44) [1]

Хелп не помогает?
В книге Тейксейры-Пачеко подробно расписано


 
Ihor Osov'yak ©   (2003-04-15 13:08) [2]

Для особо ленивых

{ TSharedMem }


constructor TSharedMem.Create(const Name: string; Size: Integer;
pSecurity: PSecurityAttributes = nil);
var flLock:boolean;
begin
try
FName := Name;
FSize := Size;

fAccessMutex := CreateMutex(pSecurity, False, PChar(Name+".m"));
if fAccessMutex = 0 then abort;

flLock := Lock(100);
try
{ CreateFileMapping, when called with $FFFFFFFF for the hanlde value,
creates a region of shared memory }
FHandle := CreateFileMapping($FFFFFFFF, pSecurity, PAGE_READWRITE, 0,
Size, PChar(Name));
if FHandle = 0 then abort;

FCreated := GetLastError = 0;
{ We still need to map a pointer to the handle of the shared memory region }
FFileView := MapViewOfFile(FHandle, FILE_MAP_WRITE, 0, 0, Size);
if FFileView = nil then abort;
if FCreated and flLock then FillChar(FFileView^,Size,0);
finally
if flLock then UnLock;
end;
//if FCreated then
except
Error(Format("Error creating TSharedMemory %s (%d)", [Name, GetLastError]));
end;
end;

destructor TSharedMem.Destroy;
begin
if FFileView <> nil then
UnmapViewOfFile(FFileView);
if fAccessMutex <> 0 then CloseHandle(fAccessMutex);
inherited Destroy;
end;




function TSharedMem.Lock(aTimeOut: integer):boolean;
begin
Result := WaitForSingleObject(fAccessMutex, aTimeOut) = WAIT_OBJECT_0;
end;

function TSharedMem.UnLock:boolean;
begin
Result := ReleaseMutex(fAccessMutex);
end;


Мьютекс здесь использован для синхронизации доступа между процессами к єтому общему ресурсу..



Страницы: 1 вся ветка

Текущий архив: 2003.06.12;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.017 c
14-35024
race1
2003-05-24 09:06
2003.06.12
amd die


3-34666
mao
2003-05-18 07:59
2003.06.12
А всегда нужен BDE?


1-34813
chistyakov
2003-06-02 18:03
2003.06.12
Модульность программы?


3-34704
Nikos
2003-05-22 21:27
2003.06.12
Как продолжить поиск при использовании Lookup


3-34761
Инна
2003-05-25 01:06
2003.06.12
вызов хп из хп несколько раз