Вниз
Скачать: CL | DM;

Страничная память   Найти похожие ветки 

 
_Stalker_   (2004-08-14 13:35) [0]

Пожалуйста, посмотрите правильно ли я работаю со страничной памятью:
.
.
Const
MMFName:PChar="KeyMMF";
Type
PGlobalDLLData=^TGlobalDLLData;
TGlobalDLLData=packed record
 SysHook:integer;
end;
Var
GlobalData: TGlobalDLLData;
MMFHandle: THandle;
.
.

begin.
.
.
MMFHandle:= CreateFileMapping(INVALID_HANDLE_VALUE, nil, PAGE_READWRITE, 0, SizeOf(TGlobalDLLData), MMFName);
 GlobalData:= MapViewOfFile(MMFHandle, FILE_MAP_ALL_ACCESS, 0, 0, SizeOf(TGlobalDLLData));}
 GlobalData^.SysHook:=XXX

.
.

Потом когда надо получить значение переменной делаю:

A:=GlobalData.SysHook;


 
VMcL ©   (2004-08-14 17:11) [1]

GlobalData: PGlobalDLLData;


 
_Stalker_   (2004-08-14 21:03) [2]


> VMcL ©   (14.08.04 17:11) [1]
> GlobalData: PGlobalDLLData;

Пардон, опечатка.
Просто у меня не работает обращение к памяти из функции фильтра, когда ставлю глобальный хук. Может при этом есть какие-то особенности работы со страничной памятью?


 
VMcL ©   (2004-08-15 04:15) [3]

>>_Stalker_  (14.08.04 21:03) [2]

"Не работает" - понятие растяжимое.

>Может при этом есть какие- то особенности работы со страничной памятью?

После того, как выделенная память успешно отображена на ВАП процесса функцией MapViewOfFile, можно свободно работать с указателем (у тебя GlobalData) на эту память в пределах отображенного размера и запрошенных прав.

P.S. Результаты API-функций следует проверять на ошибочное значение (CreateFileMapping на 0, MapViewOfFile на nil и т. д.).



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

Скачать: CL | DM;



Память: 0.45 MB
Время: 0.02 c
1-1094748536
Anonimus
2004-09-09 20:48
2004.09.26
Требуется делать зип архивы


3-1093952484
Morrison
2004-08-31 15:41
2004.09.26
Инсталляция BDE


1-1095089837
Charly22
2004-09-13 19:37
2004.09.26
Что мешает удалению каталога?


1-1094569297
Боян Георгиев
2004-09-07 19:01
2004.09.26
Проблем с конструктором


1-1094839840
МЯУ
2004-09-10 22:10
2004.09.26
ООП




   Наверх