Если DLL уже загружена, LoadLibrary
просто вернет адрес библиотеки в памяти. Однако DllMain
не вызывается снова с DLL_PROCESS_ATTACH
при попытке второй загрузки. Дескрипторы в смысле библиотек - это просто области памяти, поэтому значение, которое вы получаете во второй раз, должно быть таким же, как и в первом.
Что касается файлов linux SO, я не понимаю, почему они тоже будут загружаться дважды. Однако кому-то еще придется взвесить это, чтобы дать вам правильный ответ.