Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "WinAPI";
Текущий архив: 2002.11.25;
Скачать: [xml.tar.bz2];

Вниз

Задержка выгрузки Dll   Найти похожие ветки 

 
Sodom   (2002-10-07 11:15) [0]

Я внеряю длл с помощью хуков. Действую по такой схеме:
Пусть процесс A.exe - жертва в адресное пространство которого я внедряю некую D.dll. Я в процессе B.exe ставлю хук (Проца хука в некой DH.dll а адр-м пр-ве B.exe) на WH_GETMESSAGE и посылаю postmessage окну процесса A.exe, чтобы DH.dll подгрузилось в его адресное пространство. DH.dll как только оказывается в адр. пр-ве процесса A.exe загружает туда нужную мне D.dll, снимаю хук и B.exe завершается. Все работает как часы, вопрос следующий: По идее сразу после снятия хука система выгружает DH.dll из всех процессов в которые она подгружалась. Но на практике оказывается что DH.dll может сидеть в каком нибудь процессе еще секунд 30..50 после снятия хука. Вот эта задержка мне и непонятна. Кто нибудь может дать этому объяснение?


 
Sodom   (2002-10-12 14:58) [1]

Странно, такой интересный вопрос, я думал разовьется "глобальная" дискуссия, а вы nil внимания.


 
Xemax   (2002-10-12 16:22) [2]

Задай этот вопрос билу ;-))


 
Cobalt   (2002-10-14 11:12) [3]

В какой конкретно ОС такой глюк?
А то, я слышал, что Какие-то винды(вроде как из серии НТ) не сразу вгыружали ДЛЛ-ку, а немного погодя. За это отвечал какой-то параметр реестра...


 
Sodom   (2002-10-14 12:06) [4]


> Xemax ©
> Задай этот вопрос билу ;-))

Кто такой бил?


> Cobalt ©
> В какой конкретно ОС такой глюк? ...

Win 2000. Да я бы не сказал что глюк, так интересно стало почему?


 
Василий2   (2002-10-14 12:43) [5]

У меня такая же хрень была... Не знаю, правда, почему.....


 
Xemax   (2002-10-14 14:12) [6]

>>>>Sodom © (14.10.02 12:06)
>Кто такой бил?
БИЛЛ ГЕЙТС


 
Aleksey Pavlov   (2002-10-14 15:50) [7]

Не стоит путать DLL, которые подгружаются в память при загрузки системы (только в Win2k системах) и эффект DLL-ки оставшейся в памяти после её освобождения (т.е. когда число ссылок на неё становится равным 0).
Про первый вариант можно почитать в FAQ для Win2k, а про второй могу сказать следующее:
действительно, после того, как число ссылок на экземпляр DLL загруженный в физическую память стал равным 0 эта DLL должна быть выгружена из памяти (но где написано, что непременно сразу же? ;)
Дело тут в следующем: Microsoft таким образом решила увеличить быстродействие системы. Т.е. считается, что с немалой долей вероятности данная DLL может через короткий промежуток времени понадобится какой-то программе снова (к примеру, вы закрыли документ Word и открываете следующий) и что бы исключить накладные расходы на загрузку её в память (создания отображения) DLL остаётся в памяти некоторое время.
Работа этого механизма хорошо видна, когда, к примеру, повторно запускаешь (с малым промужетком времени) ресурсоёмкие приложения (3DMax, Photoshop и т.д.).



Страницы: 1 вся ветка

Форум: "WinAPI";
Текущий архив: 2002.11.25;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.01 c
4-83075
chsv
2002-10-14 20:06
2002.11.25
?


1-82704
Linder
2002-11-14 13:53
2002.11.25
Динамический массив


1-82798
Comp
2002-11-12 19:50
2002.11.25
Инсталляция


14-82988
Song
2002-11-07 09:42
2002.11.25
Microsoft BetaTea :-)


4-83061
Th
2002-10-09 17:22
2002.11.25
Не грузится dll, написанная в VC++ ;((





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский