Показать сообщение отдельно
  #1  
Старый 28.10.2008, 17:00
Micher Micher вне форума
Прохожий
 
Регистрация: 28.10.2008
Сообщения: 1
Репутация: 10
Вопрос Чтение и запись FilMapping

Всем привет. Написал небольшую DLL для работы с FileMapping:
Код:
...
var
  hFileMapObj: THandle;
  lpBaseAddress: PChar;
Procedure CreateMyFileMapping(); export; stdcall;
begin
  hFileMapObj := CreateFileMapping(MAXDWORD, nil, PAGE_READWRITE, 0, 4, 'MySharedValue12345');
  if (hFileMapObj = 0) then ShowMessage('Не могу создать FileMapping!')
  else
    lpBaseAddress := MapViewOfFile(hFileMapObj, FILE_MAP_WRITE, 0, 0, 0);
  if lpBaseAddress = nil then ShowMessage('Не могу подключить FileMapping!');
end;
Procedure InsertStringToFileMapping(str: PChar); export; stdcall;
begin
  StrPCopy(lpBaseAddress, str);
end;
Function ReadMyFileMapping(): PChar; export; stdcall;
begin
  ReadMyFileMapping := PChar(lpBaseAddress);
end;

Есть 2 приложения, которые используют эту библиотеку(они должны с её помощью "общаться" между собой).
Первое приложение делает примерно следующее:
Код:
   CreateMyFileMapping();
   while (true)
      InsertStringToFileMapping("какое-то значение, разное в каждый момент времени");

Второе приложение обращается к этому же самому маппингу(читает то, что пишет первое):
Код:
   CreateMyFileMapping();
   while (true)
      ShowMessage(ReadMyFileMapping());

Почему то, второе приложение всегда выдаёт то значение, которое первое приложение записало ПЕРВЫМ, а не каждый раз разные значения. Обьясните пожалуйста, что я не так делаю. Наверно как то не акт пишу в первом приложении или не так читаю во втором...
Ответить с цитированием