Форум: "WinAPI";
Текущий архив: 2005.01.30;
Скачать: [xml.tar.bz2];
ВнизУведомление DLL_PROCESS_DETACH Найти похожие ветки
← →
The Scorpion (2004-12-13 18:17) [0]Создал DLL и подгрузил в чужой процесс с помощью ловушки.Код DLL изменяет таблицу импорта процесса.При завершение моего приложения необходимо восстановить таблицу импорта ,это сделать не получается , DLL не получает уведомление DLL_PROCESS_DETACH . Пожалуйста ,подскажите как решить эту проблему.
← →
DeadMeat © (2004-12-13 19:54) [1]Кстати тоже заметил, что в Delphi 6, DLL_PROCESS_DETACH не приходит. Читал, что это глюк Borland-a и исправляется добавлением определенных строк в System.pas кажись. Но вот перекомпилировать его у меня не получилось...
---
...Death Is Only The Begining...
← →
The Scorpion (2004-12-13 20:35) [2]У меня Delphi 7. Уведомление DLL_PROCESS_DETACH работает нормально , но не при данных условиях.
← →
Leonid Troyanovsky © (2004-12-13 20:38) [3]
> The Scorpion (13.12.04 18:17)
> Создал DLL и подгрузил в чужой процесс с помощью ловушки.Код
> DLL изменяет таблицу импорта процесса.При завершение моего
> приложения необходимо восстановить таблицу импорта ,это
> сделать не получается , DLL не получает уведомление DLL_PROCESS_DETACH
На дельфи 6 нужен update 2.
Или пользовать секцию finalization модуля (unit).
--
С уважением, LVT.
ЗЫ Это тоже из курсовой?
← →
Leonid Troyanovsky © (2004-12-13 20:43) [4]
> The Scorpion (13.12.04 20:35) [2]
> У меня Delphi 7. Уведомление DLL_PROCESS_DETACH работает
> нормально , но не при данных условиях.
Каких условиях?
Библиотека с ловушкой выгружается из процесса не в момент
UnhookWindowsHook, а при обработке очередного события.
--
С уважением, LVT.
← →
The Scorpion (2004-12-13 20:45) [5]Он самый. Не совсем понял как секции finalization заставит что то выполниться(восстановит таблицу импорта) в чужом процессе?
← →
Leonid Troyanovsky © (2004-12-13 20:57) [6]
> The Scorpion (13.12.04 20:45) [5]
> Он самый. Не совсем понял как секции finalization заставит
> что то выполниться(восстановит таблицу импорта) в чужом
> процессе?
Если у тебя D7 в использовании finalization нет нужды.
А, вообще, код из finalization должен выполняться
тем потоком, который выгружает библиотеку.
Как, скажем, то, что выполняется в begin..end.
--
С уважением, LVT.
← →
The Scorpion (2004-12-13 21:22) [7]Все таки ,как же решить поставленную проблему?
← →
Leonid Troyanovsky © (2004-12-13 21:29) [8]
> The Scorpion (13.12.04 21:22) [7]
> Все таки ,как же решить поставленную проблему?
Хук поставлен на WH_GETMESSAGE?
Пошли зацепленному потоку условленное сообщение,
по которому он восстановит таблицу.
Естественно, до снятия хука/завершения своего приложения.
--
С уважением, LVT.
← →
The Scorpion (2004-12-13 21:33) [9]"А, вообще, код из finalization должен выполняться
тем потоком, который выгружает библиотеку."
Библиотека выгружается при уничтожение ловушки , наверное основным потоком моей программы .Как из своей программы произвести указанные действия ,не представляю.
← →
Leonid Troyanovsky © (2004-12-13 21:54) [10]
> The Scorpion (13.12.04 21:33) [9]
> "А, вообще, код из finalization должен выполняться
> тем потоком, который выгружает библиотеку."
> Библиотека выгружается при уничтожение ловушки , наверное
> основным потоком моей программы .Как из своей программы
> произвести указанные действия ,не представляю.
Библиотека выгружается:
а) при снятии ловушки в чужом адресном пространстве
потоком, на который установлен хук (зацепленным потоком)
в порядке, который я описывал ранее.
б) при выгрузке библиотеки из своего процесса, т.е.
откуда хук был установлен - потоком его установившим.
Секция finalization выполняется выгружающим его потоком.
--
С уважением, LVT.
← →
Leonid Troyanovsky © (2004-12-13 21:57) [11]
> Leonid Troyanovsky © (13.12.04 21:54) [10]
> б) при выгрузке библиотеки из своего процесса, т.е.
> откуда хук был установлен - потоком его установившим.
Фу-ты. Потоком, вызвавшим FreeLibrary.
Sorry.
Страницы: 1 вся ветка
Форум: "WinAPI";
Текущий архив: 2005.01.30;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.036 c