Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.01.30;
Скачать: CL | DM;

Вниз

Уведомление 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 вся ветка

Текущий архив: 2005.01.30;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.041 c
14-1105314121
gate
2005-01-10 02:42
2005.01.30
Вопрос по php


1-1105949734
VID
2005-01-17 11:15
2005.01.30
Как отключить автоматический горизонтальный скроллинг в TreeView


1-1105366671
Maxim____M
2005-01-10 17:17
2005.01.30
Обращение к объекту.


1-1105961360
Кабан
2005-01-17 14:29
2005.01.30
Где взять иконки с палитры компонентов Delphi?


6-1098899412
Electric
2004-10-27 21:50
2005.01.30
NMFTP размер файла