MSDN.WhiteKnight - Stack Overflow answers
Ответ на "Попытка загрузка библиотеки, или проверка на загруженность"
Answer 897010
Хотя если модуль был загружен то LoadLibrary возвращает его Handle а не бросает ошибку, что странно
На самом деле, в этом нет ничего странного. Загрузка DLL в Windows спроектирована так, чтобы два куска кода в одном процессе могли независимо друг от друга использовать одну и ту же библиотеку. Когда вы вызываете LoadLibrary и библиотека уже загружена, она не просто возвращает дескриптор, а еще и увеличивает счетчик ссылок для этой библиотеки. Последующий вызов FreeLibrary не выгрузит библиотеку сразу, а уменьшит счетчик ссылок, и выгрузит ее только когда счетчик ссылок достигнет нуля. О каком-то "коде ошибки" в данном случае речи не идет, это абсолютно штатная ситуация.
При обычном использовании функций LoadLibrary / GetProcAddress нет особой необходимости задумываться, загружена ли уже библиотека или нет. Если нужно именно проверить, загружена ли библиотека (например, в целях отладки), функция GetModuleHandle подходит: она для незагруженного модуля вернет NULL и GetLastError будет равно 0x0000007E (ERROR_MOD_NOT_FOUND).
Content is retrieved from StackExchange API.
Auto-generated by ruso-archive tools.