| Предыдущий | Следующий |
| 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-разрядными.
Ссылки
- Microsoft Open Specifications: значения NTSTATUS
- Microsoft: формат PE и COFF
- LLVM: проверка COFF с помощью llvm-readobj
- Microsoft: связывание исполняемого файла с DLL
Нужно найти другой код? Найти другой код состояния или ошибки.
