Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "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.039 c
1-1105706778
JohnKorsh
2005-01-14 15:46
2005.01.30
Как в старом TP7 под DOS организовать очень большой массив ?


4-1102678436
Bes
2004-12-10 14:33
2005.01.30
Отображение формы


14-1105204577
X9
2005-01-08 20:16
2005.01.30
"Энциклопедия начинающего радиолюбителя" в эл. виде


4-1102515267
Chaser
2004-12-08 17:14
2005.01.30
Как присвоить хинту иконки программы в трее значение переменной?


1-1105713503
NightStranger
2005-01-14 17:38
2005.01.30
Шифрование папки





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский