Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Win Api
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 21.08.2012, 21:54   #21
GunSmoker
Старожил
 
Регистрация: 13.08.2009
Сообщений: 2,581
По умолчанию

Цитата:
следовательно ошибки в функции хука или в функции его отпуска.
Неверный вывод. Проблема может быть в неверном порядке выполнения операций.
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
GunSmoker вне форума Ответить с цитированием
Старый 22.08.2012, 17:58   #22
Johnson
кривокодер ;)
Форумчанин
 
Аватар для Johnson
 
Регистрация: 20.06.2008
Сообщений: 707
По умолчанию

Блин... Не могу понять, где неверный порядок операций. Если DrawTextA, то судя по описаниям его нужно выводить после настоящей EndScene:
Цитата:
Метод ID3DXFont::DrawText нужно рисовать уже после построения сцены - после методов BeginScene и EndScene, но до метода Present. Т.е. в фоновом буфере уже содержится картинка, а мы просто сверху рисуем текст.
Порядок хуков тоже должен быть правильный... Немного прилизал их, но ситуацию не изменило.

Пробовал вызывать на детаче метод g_Font._Release; - окно игры пропало, но она осталась висеть в памяти... Описание этого метода вообще не нашел нормального.

Ниужели почти ни кто не сталкивался с перехватом D3D?.. Или все тупо следовали "мануалам", которые почти ни чего не объясняют?
"А как написать праграму?, "ришыти задачьку очинь нада" ©с форума. Жить становится интереснее, жить становится веселее...
{Быть или не быть} {Неуспешный суицид}
Johnson вне форума Ответить с цитированием
Старый 22.08.2012, 18:10   #23
GunSmoker
Старожил
 
Регистрация: 13.08.2009
Сообщений: 2,581
По умолчанию

Какое слово непонятно?

Цитата:
Они будут финализироваться при выгрузке DLL, когда основное приложение уже отстрелялось и выгрузило D3D.
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
GunSmoker вне форума Ответить с цитированием
Старый 22.08.2012, 18:10   #24
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

http://msdn.microsoft.com/en-us/libr...(v=vs.85).aspx
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 22.08.2012, 18:11   #25
GunSmoker
Старожил
 
Регистрация: 13.08.2009
Сообщений: 2,581
По умолчанию

Цитата:
И ещё... под GetMem имеешь в виду эту строку?
Не знаю, откуда ты взял VirtualAlloc, в твоём первом аттаче там GetMem.
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
GunSmoker вне форума Ответить с цитированием
Старый 22.08.2012, 18:33   #26
Johnson
кривокодер ;)
Форумчанин
 
Аватар для Johnson
 
Регистрация: 20.06.2008
Сообщений: 707
По умолчанию

Цитата:
Какое слово непонятно?Они будут финализироваться при выгрузке DLL, когда основное приложение уже отстрелялось и выгрузило D3D.
Все слова понятны... Но как их финализировать ДО выгрузки D3D? Ещё одну функцию хукать, которая отвечает за выгрузку D3D?

Этого совсем не понял. При чем тут Iunknown? Приводить ID3DXFont к нему и освобождать?

Цитата:
Не знаю, откуда ты взял VirtualAlloc, в твоём первом аттаче там GetMem.
Я аналогично подумал про твой пост... Сейчас специально поискал во всех файлах, нет там ни где GetMem. Ни в моем коде, ни в хуках, ни в заголовках D3D...
В своем коде я вообще памяти не касаюсь напрямую, а в хуках память по другому берется...
"А как написать праграму?, "ришыти задачьку очинь нада" ©с форума. Жить становится интереснее, жить становится веселее...
{Быть или не быть} {Неуспешный суицид}
Johnson вне форума Ответить с цитированием
Старый 22.08.2012, 18:40   #27
GunSmoker
Старожил
 
Регистрация: 13.08.2009
Сообщений: 2,581
По умолчанию

Цитата:
Ещё одну функцию хукать, которая отвечает за выгрузку D3D?
Верно мыслишь.

Цитата:
Сейчас специально поискал во всех файлах, нет там ни где GetMem. Ни в моем коде, ни в хуках, ни в заголовках D3D...
advApiHook.pas из твоего аттача, строка 845.
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
GunSmoker вне форума Ответить с цитированием
Старый 22.08.2012, 18:53   #28
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

Johnson, GetMem всего 1 раз вызывается во всех 3-х модулях. Там и найдете указанную GunSmoker'ом ошибку.
Человек_Борща вне форума Ответить с цитированием
Старый 22.08.2012, 19:05   #29
Johnson
кривокодер ;)
Форумчанин
 
Аватар для Johnson
 
Регистрация: 20.06.2008
Сообщений: 707
По умолчанию

Цитата:
advApiHook.pas из твоего аттача, строка 845.
Блин, понятно... В одном из вариантов исходника было заменено на:
Код:
OldFunction := VirtualAlloc(nil, 255, MEM_COMMIT, PAGE_EXECUTE_READWRITE);
И совсем забыл, что библиотеки хуков разные в том аттаче и текущие.

А что не так с аттрибутами защиты там? Мне казалось, что PAGE_EXECUTE_READWRITE дает разрешение на чтение, запись и исполнение. Разве это плохо?

Цитата:
Верно мыслишь.
Вот только какую? Ни у IDirect3D9, ни у IDirect3DDevice9 интерфейсов нет ни чего похожего на "Destroy", "Free" или "Release".
Поиск по инетам то же ни к чему вразумительному не привел, везде упомянается некий Cleanup, которого в заголовках нет. MSDN тоже не находит ни чего похожего... Где хотя бы искать-то? Или нужно искать не в заголовках D3D?
"А как написать праграму?, "ришыти задачьку очинь нада" ©с форума. Жить становится интереснее, жить становится веселее...
{Быть или не быть} {Неуспешный суицид}

Последний раз редактировалось Johnson; 22.08.2012 в 19:12.
Johnson вне форума Ответить с цитированием
Старый 22.08.2012, 22:51   #30
Johnson
кривокодер ;)
Форумчанин
 
Аватар для Johnson
 
Регистрация: 20.06.2008
Сообщений: 707
По умолчанию

Блин, неужели только GunSmoker`y известны столь "тонкие тонкости мироздания"?..
Ни за что не поверю, что как минимум половина старичков форума не экспериментировала с хуками и/или D3D.
"А как написать праграму?, "ришыти задачьку очинь нада" ©с форума. Жить становится интереснее, жить становится веселее...
{Быть или не быть} {Неуспешный суицид}

Последний раз редактировалось Johnson; 23.08.2012 в 11:04.
Johnson вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Выгрузка из БД в Excel fenetka Microsoft Office Excel 6 20.10.2011 09:06
Зависимость библиотеки от библиотеки ds.Dante C# (си шарп) 2 07.07.2011 12:55
Выгрузка в Word ZapraBwiK Общие вопросы Delphi 0 26.05.2011 11:29
Выгрузка из текстовика mephist Microsoft Office Excel 2 06.08.2009 17:25
Выгрузка данных в ComboBox через ZQuery barcelona БД в Delphi 1 08.05.2007 03:35