Форум: "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