FileMapping

Общие вопросы, не зависящие от языка реализации.

Модераторы: Duncon, Eugie, Romeo, Hawk

Ответить
Nowichok
Сообщения: 8
Зарегистрирован: 07 дек 2006, 22:49

07 дек 2006, 22:50

Проблема с FileMapping. Здесь выкладывать код не буду, т.к. будет тяжело читать. Кину ссылку на прогу, чтобы можно было легче понять мою проблему (проблема аналогична, что и в этой программе)

http://www.gamedev.ru/download/?id=4663 (сорри, чо-то файл сюда не загрузился сам... привожу ссылку на него).

Там две АБСОЛЮТНО одинаковые программы, работающие с хуком WH_GETMESSAGE и используют FileMapping. Кому не лень, пробегитесь глазами по КОДУ программ (он короткий). Если пустить обе программы и установить хки, то они работают...до N-го времени...а потом вылазит ошибка (когда приходит сообщение в аську ,агента..пускается игра и т.п.).
Я уже 3-й день бьюсь над этой проблемой, не понимаю, что не так...
Помогите, плз, кто чем может.
Hawk
Сообщения: 215
Зарегистрирован: 17 фев 2004, 14:52
Откуда: СПб
Контактная информация:

12 дек 2006, 15:34

Какая ошибка то выходит ?
И CreateFile надо проверять на INVALID_HANDLE_VALUE(0xFFFFFFFF) а не на 0 при ошибке
Nowichok
Сообщения: 8
Зарегистрирован: 07 дек 2006, 22:49

12 дек 2006, 15:40

"Инструкция по адресу ... обратилась к памяти по адресу ... . Память не может быть written"

или "Readen" ....
На данный момент пытаюсь по-другоме решить мою проблему..без файлмэппинга. Но хотелось бы узнать, в чём косяк здесь.

А у вас что, ошибка не выводится в этих программах ??
Hawk
Сообщения: 215
Зарегистрирован: 17 фев 2004, 14:52
Откуда: СПб
Контактная информация:

12 дек 2006, 20:01

Насчет INVALI_HANDLE_VALUE я не прав был, все привильно там, перепутал с CreateFile. А запустить не могу, т.к. нету Delphi или что это
Hawk
Сообщения: 215
Зарегистрирован: 17 фев 2004, 14:52
Откуда: СПб
Контактная информация:

12 дек 2006, 20:10

А почему у тебя
SysMsgProc(code : integer; wParam : word; lParam : longint)

word на паскале это же 16 бит? т.е. short ? А должен быть 32 битное, видимо на паскале это integer или longint. Тебе лучше знать. Из-за этого вполне могло все падать
Аватара пользователя
Romeo
Сообщения: 3091
Зарегистрирован: 02 мар 2004, 17:25
Откуда: Крым, Севастополь
Контактная информация:

12 дек 2006, 20:55

Я тоже за то, что это должно быть longint.
Entites should not be multiplied beyond necessity @ William Occam
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.
Nowichok
Сообщения: 8
Зарегистрирован: 07 дек 2006, 22:49

13 дек 2006, 21:40

Исправил на DWORD для надёжности...но это проблему не решило. Я уже отчаился с этим..пытаюсь сделать не через файлмэппинг, а через WinApi функции с воей программе..но и там проблем хватает. Хоть какой-нибудь бы метод доделать до конца....
Ответить