![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Страничная память
_Stalker_ © (2004-08-14 13:35:00)Пожалуйста, посмотрите правильно ли я работаю со страничной памятью:
.
.
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-15 04:15:00) [1]>> _Stalker_ (14.08.04 21:03) [2]
"Не работает" - понятие растяжимое.
> Может при этом есть какие- то особенности работы со страничной памятью?
После того, как выделенная память успешноотображена на ВАП процесса функцией MapViewOfFile, можно свободно работать с указателем (у тебя GlobalData) на эту память в пределах отображенного размера и запрошенных прав.
P.S. Результаты API-функций следует проверять на ошибочное значение (CreateFileMapping на 0, MapViewOfFile на nil и т. д.).
_Stalker_ (2004-08-14 21:03:00) [2]
> VMcL © (14.08.04 17:11) [1]
> GlobalData: PGlobalDLLData;
Пардон, опечатка.
Просто у меня не работает обращение к памяти из функции фильтра, когда ставлю глобальный хук. Может при этом есть какие-то особенности работы со страничной памятью?
VMcL (2004-08-14 17:11:00) [3]GlobalData: PGlobalDLLData;