Есть ли способ прогамматически определить, когда модуль - в частности, DLL - был выгружен из процесса?
У меня нет источника DLL, поэтому я не могу изменить его точку входа в DLL. Я также не могу опросить, загружена ли DLL, потому что DLL может быть выгружена, а затем перезагружена между опросами.
Результаты
Я закончил с помощью jimharks решение обхода точки входа dll и поймав DLL_PROCESS_DETACH. Я обнаружил, что FreeLibrary() также работает, но код должен быть добавлен, чтобы определить, когда модуль фактически выгружен или если счетчик ссылок просто уменьшается. Ссылка Некролиса о поиске ссылочного счета была удобна для этого.
Следует отметить, что у меня были проблемы с MSDetours, которые фактически не выгружали модуль из памяти, если в нем существовал объезд.