Есть ли способ программно определить, когда модуль - в частности, DLL - был выгружен из процесса?
У меня нет источника DLL, поэтому я не могу Измени это' s Точка входа в DLL. Я также не могу опросить, загружена ли DLL в настоящее время, потому что DLL может быть выгружена, а затем перезагружена между опросами.
РЕЗУЛЬТАТЫ :
В итоге я использовал решение jimharks для обхода точки входа dll и перехвата DLL_PROCESS_DETACH. Я обнаружил, что обход FreeLibrary () также работает, но необходимо добавить код, чтобы определить, когда модуль фактически выгружен или просто уменьшается счетчик ссылок. Ссылка Necrolis о нахождении счетчика ссылок была удобна для этого метода.
Я должен отметить, что у меня были проблемы с MSDetours, которые фактически не выгружали модуль из памяти, если в нем существовал обходной путь.