Что означает код NTSTATUS 0xC000035A (STATUS_INVALID_IMAGE_WIN_64)?

 
Предыдущий Следующий
STATUS_INVALID_IMAGE_WIN_32 STATUS_BAD_BINDINGS

STATUS_INVALID_IMAGE_WIN_64

Загрузчик получил 64-разрядный образ в несовместимом контексте

32-разрядный процесс не может загрузить 64-разрядную DLL в своё адресное пространство, поскольку отличаются размер указателя, соглашения о регистрах, метаданные развёртывания стека и структура необязательного заголовка PE. Этот статус означает, что образ распознан как 64-разрядный, но недопустим для текущей операции загрузки.

Наличие 64-разрядной операционной системы не меняет разрядность уже работающего 32-разрядного процесса. Узлы подключаемых модулей, COM-серверы, расширения оболочки и внедряемые модули должны соответствовать разрядности процесса-хоста либо быть вынесены за интерфейс между процессами.

Что проверить

  • Проверьте поле Machine образа и magic необязательного заголовка PE32+, затем запишите архитектуру процесса-хоста.
  • Убедитесь, что реестр и регистрация COM выбирают соответствующий внутрипроцессный сервер для каждой разрядности.
  • Проверьте структуру пакета и логику запуска на случайный выбор x64-бинарника из x86-процесса.
  • Не редактируйте заголовок PE, чтобы объявить x86: машинный код и ABI внутри останутся 64-разрядными.

Ссылки


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