Что означает код NTSTATUS 0xC000019D (STATUS_IMAGE_ALREADY_LOADED_AS_DLL)?

 
Предыдущий Следующий
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 одного файла внутри процесса.
  • Убедитесь, что очистка не выгружает принадлежащий загрузчику модуль через отдельную модель ссылок.

Ссылки


Нужно найти другой код? Найти другой код состояния или ошибки.