Действительно ли возможно прикрепить dll в памяти для предотвращения разгрузки?

Есть ли некоторый путь в Windows для предотвращения разгрузки нашего dll через FreeLibrary? Т.е. "прикрепить" его в памяти для жизни процесса?

6
задан Two Bit Gangster 10 August 2010 в 23:43
поделиться

2 ответа

Да. Вызовите LoadLibrary () для этой библиотеки DLL. Это увеличит количество внутренних ссылок. FreeLibrary () выгружает DLL только тогда, когда ее внутренний счетчик ссылок падает до нуля. Если вы используете LoadLibrary, а не FreeLibrary, DLL будет застрять в памяти на все время существования вашего процесса.

Если вы столкнулись с ситуацией, когда кто-то вызывает FreeLibrary () для вашей библиотеки DLL и вызывает ее удаление из памяти, пока вы ее все еще используете, возможно, у вас есть ошибка - несогласие или непонимание того, кому принадлежит DLL и отвечает за ее выпуск. Ошибка, которую следует исправить, а не обойти с помощью взлома LoadLibrary.

9
ответ дан 8 December 2019 в 03:00
поделиться

В MSVC есть параметры (по крайней мере, в VC 2005+) для «Отложенной загрузки DLL» и поддержки «Отложенной выгрузки загруженной DLL». Возможно, стоит также изучить эти настройки, чтобы убедиться, что выгрузка не поддерживается.

0
ответ дан 8 December 2019 в 03:00
поделиться
Другие вопросы по тегам:

Похожие вопросы: