Форум: "WinAPI";
Текущий архив: 2004.09.26;
Скачать: [xml.tar.bz2];
ВнизСтраничная память Найти похожие ветки
← →
_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 вся ветка
Форум: "WinAPI";
Текущий архив: 2004.09.26;
Скачать: [xml.tar.bz2];
Память: 0.44 MB
Время: 0.032 c