Форум: "WinAPI";
Текущий архив: 2003.06.12;
Скачать: [xml.tar.bz2];
Вниз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 вся ветка
Форум: "WinAPI";
Текущий архив: 2003.06.12;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.008 c