Выгрузка BHO
От: LVU  
Дата: 26.12.06 11:19
Оценка:
Задача ставится следующим образом: есть BHO, который надо полностью уничтожить (сам BHO мой). Для этого, очевидно, надо заставить Internet Explorer выгрузить его из себя. Однако, с этим возникают проблемы. Делаю так: в Invoke при выставлении некоторого глобального флажка делаю Unadvise(), делаю Release() всех объектов, которые получал через QueryInterface, и пытаюсь вызвать CoFreeUnusedLibraries/CoFreeUnusedLibrariesEx. Этих вызывал в разных комбинациях, по несколько раз, в отдельном потоке — ничего не помогает. DllCanUnloadNow() при этом, ессно, возвращает S_OK. Насколько я понял, проблема в том, что IE где-то держит ссылки на мой объект, поскольку его reference count (который ведется по AddRef()/Release()) после Unadvise() становится равным 3, хотя должен вроде бы быть 1 (до этого — 4, должен вроде быть 2). Каким образом можно найти то место, где создаются лишние ссылки?
И еще, мой ClassFactory, похоже, как создается один раз в DllGetClassObject(), так после этого и не уничтожается, даже при закрытии IE. Я его попробовал уничтожать сам перед выгрузкой — вроде IE не обваливается. Так делать можно?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.