Вот, под вечер начинаются странности. Есть дллка, у нее DllMain динамически(через LoadLibrary) подгружается ole32.dll. Так вот, иногда LoadLibrary возвращает ERROR_NOACCESS. Хочется разобраться в чем собственно дело. Первое, что приходит на ум, что есть в винде дллки(kernel32.dll, user32.dll), которые грузятся только по тому адресу, что указан у них в ImageBase и если этот адрес уже занят, то грузиться не хотят. Может ole32.dll, тоже к ним относится? Да и ImageBаse у нее подозрительный (774E0000). Или проблема не в этом?
1. Если ImageBase занаят, и имена совпадают, то происходит простой инкремент счетчика и выполнение длл-мейн. 2. Если ImageBase занят, но имена не совпадают (к примеру, если переименовать кернел32), то все прекрасно грузиццо и по другому ImageBase. С ole32.dll аналогично. Трабла может быть из-за того, что при первой инициализации длл блокирует доступ к определенным общим ресурсам. Попробуй перед загрузкай вызвать GetModuleHandleA("ole32.dll") Если вернет не ноль, то надобность загружать повторно - отпадает.