|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
20.08.2012, 18:56 | #1 |
кривокодер ;)
Форумчанин
Регистрация: 20.06.2008
Сообщений: 707
|
Выгрузка библиотеки через DLL_PROCESS_DETACH
Здравствуйте, уважаемые!
Хукаю вызовы D3D функций библиотекой внедряемой, но при завершении работы приложения вылетает ошибка. Хотелось бы её избежать. Код:
Подскажите, пожалуйста, что я делаю не правильно? Сам код работает "на ура", а вот завершить не могу. Хуки вроже как снимаю все...
"А как написать праграму?, "ришыти задачьку очинь нада" ©с форума. Жить становится интереснее, жить становится веселее...
{Быть или не быть} {Неуспешный суицид} Последний раз редактировалось rpy3uH; 24.08.2012 в 12:49. |
20.08.2012, 19:37 | #2 |
Старожил
Регистрация: 30.12.2009
Сообщений: 11,426
|
Хех, не знаете как делается отладка DLL?
Ставите breakpoint где надо, затем меню Run => Attach to process.... А дальше все будет хорошо. |
20.08.2012, 21:25 | #3 |
кривокодер ;)
Форумчанин
Регистрация: 20.06.2008
Сообщений: 707
|
Дык... И где тут поставить бряк, чтоб отследить что происходит ПОСЛЕ DLL_PROCESS_DETACH?
Пробовал вызывать ShowMessage в конце детача, он вызывается, и уже после этого происходит ошибка, где-то через секунду... Это во-первых. А во-вторых, библиотеку нужно присоединять до инициализации D3D, то есть сразу после запуска. А в-третьих, LineageII запрещает свой запуск под дебагером, как выяснилось.
"А как написать праграму?, "ришыти задачьку очинь нада" ©с форума. Жить становится интереснее, жить становится веселее...
{Быть или не быть} {Неуспешный суицид} Последний раз редактировалось Johnson; 20.08.2012 в 21:45. |
20.08.2012, 21:42 | #4 |
кривокодер ;)
Форумчанин
Регистрация: 20.06.2008
Сообщений: 707
|
Щас подгрузил в тестовое приложение, использующее D3D.
Поставил бряк после детача. Весь код детача происходит нормально, а вот дальше, после того как сделаешь шаг после последнего вызова УнХука - ошибка. Дебагер дает возможность брякнуть эту ошибку, однако я не знаю ассемблера совсем. В аттаче выложил свой код и тестовое приложение... Помогите, пожалуйста, разобраться. Папка DX - заголовки D3D, их нужно описать в компиляторе. Deutsch Gothic.ttf - шрифт, пока не делал его подгрузку в систему, установите в ручную, или в коде поменяйте на Tahoma. DirectX.exe - тестовая прога, которая просто инициализирует D3D. PS: Извиняюсь. Приложение скидывал без либы D3D, и с правленными таблицами импорта (принудительно грузит newera.dll)... Во втором аттаче чистое.
"А как написать праграму?, "ришыти задачьку очинь нада" ©с форума. Жить становится интереснее, жить становится веселее...
{Быть или не быть} {Неуспешный суицид} Последний раз редактировалось Johnson; 20.08.2012 в 21:48. |
20.08.2012, 21:42 | #5 |
Старожил
Регистрация: 30.12.2009
Сообщений: 11,426
|
А зачем на рабочем экземпляре чушь пороть? Перите любую мелкую программу, которая исп. перехватываемую API, и там практикуйте.
Ну значит логи, логи, логи... Пусть dll пишет в файл. Ну или MadExcept, EurekaLog, FastMM... |
20.08.2012, 21:50 | #6 |
кривокодер ;)
Форумчанин
Регистрация: 20.06.2008
Сообщений: 707
|
Блин. Библиотека не должна ни чего делать после детача.
Код детача проходит нормально, без ошибок. ЧТО будет писать лог после детача (в котором он должен освободиться)? Я скинул мелкую прогу и код... Помогите решить проблему, пожалуйста... PS: Можно было бы, конечно, взять D3D приложение с исходником, и там уже отследить дальнейшие действия... Но в D3D я вообще "не в зуб ногой"... =(
"А как написать праграму?, "ришыти задачьку очинь нада" ©с форума. Жить становится интереснее, жить становится веселее...
{Быть или не быть} {Неуспешный суицид} Последний раз редактировалось Johnson; 20.08.2012 в 21:56. |
20.08.2012, 22:03 | #7 |
Старожил
Регистрация: 13.08.2009
Сообщений: 2,581
|
В D3D ни алё, в ассемблере не алё. Ну чо, называй сумму тогда.
(это шутка была. А смысл её был в том, что сначала надо бы знания подтянуть, а уж потом говнокодить).
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
|
20.08.2012, 22:16 | #8 |
кривокодер ;)
Форумчанин
Регистрация: 20.06.2008
Сообщений: 707
|
Обозначить сумму я тебе давеча предлагал, ты "тактично" отказался, так что не сарказничай
По поводу "подтягивай знания"... Я это и пытаюсь сделать, но нет ни времени на теорию, ни умения зубрить её. Приходится только методом проб и ошибок, экспериментов и курения чужого кода... А по поводу "говнокодить"... Вспомни начало своей програмистской карьеры... Прямо-таки с первого раза начал писать идеальный код? Вместо того, чтоб постить 2485-е сообщение бесполезным, лучше бы ткнул носом в проблему или в источник информации по ней...
"А как написать праграму?, "ришыти задачьку очинь нада" ©с форума. Жить становится интереснее, жить становится веселее...
{Быть или не быть} {Неуспешный суицид} Последний раз редактировалось Johnson; 20.08.2012 в 22:20. |
20.08.2012, 22:31 | #9 |
Старожил
Регистрация: 13.08.2009
Сообщений: 2,581
|
Ну ты же понимаешь, что когда человек не алё, то это именно тебе придётся дебажить проект, исправлять ошибки и писать правильный код, а не ему. Я таким иногда занимаюсь, но тут лениво. Особенно когда у тебя отсутствует воспроизводимый тест-кейс.
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
|
20.08.2012, 22:40 | #10 |
Старожил
Регистрация: 30.12.2009
Сообщений: 11,426
|
Есть мнение что ошибки в функция Hook'а. И вам нужно отладчиком скакать вместо ошибки.
Я бы пореккомендовал опробовать EasyHook, на его основе ещё что-то развивается какраз в стороеу хуков DX,GL и прочего грфического. Ваши сабжи исжили себя давно. Судя по ошибке, ВАШи дествия вызывают глюки в работе совсем р. библиотеки. Реккомендую читать доки по вылавливаемым API. Последний раз редактировалось Человек_Борща; 20.08.2012 в 22: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 |