| Предыдущий | Следующий |
| STATUS_FS_DRIVER_REQUIRED | STATUS_INCOMPATIBLE_WITH_GLOBAL_SHORT_NAME_REGISTRY_SETTING |
STATUS_IMAGE_ALREADY_LOADED_AS_DLL
Существующее состояние загрузчика DLL конфликтует с новым запросом образа
Загрузчик Windows запоминает, каким способом образ попал в процесс. Образ, уже загруженный как DLL, имеет учёт модуля, счётчики ссылок, состояние инициализации и защиту секций, связанную с загрузкой DLL. Последующий запрос, ожидающий другую роль, не может просто переинтерпретировать существующее отображение.
Обычно это возникает в необычном низкоуровневом коде загрузки, отладки или совместимости, а не при обычном LoadLibrary. Ручное отображение второй копии может разделить глобальное состояние и привести к работе обратных вызовов, TLS, импортов или выгрузки с неверным экземпляром.
Что проверить
- Запишите исходный способ загрузки, базовый адрес модуля, полный путь, счётчик ссылок и запрошенную новую роль образа.
- Проверьте, не должен ли вызывающий код запросить или повторно использовать существующий модуль вместо нового отображения.
- Не смешивайте нативные вызовы загрузчика с пользовательским отображением PE одного файла внутри процесса.
- Убедитесь, что очистка не выгружает принадлежащий загрузчику модуль через отдельную модель ссылок.
Ссылки
- Открытые спецификации Microsoft: значения NTSTATUS
- Microsoft: LoadLibrary
- Исходный код Wine: загрузчик модулей PE
- Microsoft: формат PE и COFF
Нужно найти другой код? Найти другой код состояния или ошибки.
