Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Это важно
С помощью Visual Studio 2017 или более поздней версии можно перекомпилировать приложение в Arm64 или Arm64EC, чтобы приложение выполнялось на полной скорости. Дополнительные сведения о компиляции в качестве Arm64 см. в записи блога: официальная поддержка разработки Windows 10 для платформы Arm. Сведения о Arm64EC см. в статье Объявление Arm64EC: создание собственных и совместимых приложений для Windows 11 на платформе Arm.
Если классическое приложение x86 не работает так, как оно выполняется на компьютере x86, вот некоторые рекомендации, которые помогут вам устранить неполадки.
Проблема | Решение |
---|---|
Приложение использует драйвер, который не предназначен для Arm. | Перекомпилируйте драйвер x86 в Arm64. См. построение драйверов Arm64 с WDK. |
Приложение доступно только для x64. | Если вы разрабатываете для Microsoft Store, отправьте версию Arm приложения. Дополнительные сведения см. в разделе архитектуры пакетов приложений. Если вы являетесь разработчиком Win32, рекомендуется перекомпилировать приложение в Arm64. Дополнительные сведения см. в ранней предварительной версии поддержки Visual Studio для Windows 10 вразработки Arm. |
Приложение использует версию OpenGL более 1.1 или требует аппаратного ускорения OpenGL. | Используйте режим DirectX приложения, если он доступен. Приложения x86, использующие DirectX 9, DirectX 10, DirectX 11 и DirectX 12 будут работать в Arm. Дополнительные сведения см. в DirectX для графики и игр. |
Приложение x86 не работает должным образом. | Попробуйте использовать средство устранения неполадок совместимости, следуя инструкциям из средства устранения неполадок совместимости программы в Arm. Дополнительные действия по устранению неполадок см. в статье Устранение неполадок приложений x86 в Arm. |
Рекомендации по WOW
Одна из распространенных проблем возникает, когда приложение обнаруживает, что оно работает в WOW, а затем предполагает, что оно находится в системе x64. Сделав это предположение, приложение может сделать следующее:
- Попробуйте установить саму версию x64, которая не поддерживается в Arm.
- Проверьте наличие другого программного обеспечения в системном представлении реестра.
- Предположим, что доступна 64-разрядная платформа .NET.
Как правило, приложение не должно делать предположений о системе узла, когда оно настроено для выполнения в среде WOW. Избегайте взаимодействия с собственными компонентами ОС как можно больше.
Приложение может размещать разделы реестра в собственном представлении реестра или выполнять функции на основе наличия WOW. Оригинальная IsWow64Process указывает только на то, работает ли приложение на компьютере x64. Теперь приложения должны использовать IsWow64Process2, чтобы определить, работают ли они в системе с поддержкой WOW.
Драйверы
Все драйверы в режиме ядра, драйверы User-Mode Driver Framework (UMDF) и драйверы печати должны быть скомпилированы для соответствия архитектуре ОС. Если у приложения x86 есть драйвер, этот драйвер должен быть перекомпилирован для Arm64. Приложение x86 может работать нормально при эмуляции, однако его драйвер должен быть перекомпилирован для Arm64, и любой интерфейс приложения, который зависит от драйвера, не будет доступен. Дополнительные сведения о компиляции драйвера для Arm64 см. в создании драйверов Arm64 с WDK.
Расширения оболочки
Приложения, которые пытаются подключить компоненты Windows или загрузить их библиотеки DLL в процессы Windows, потребуется перекомпилировать эти библиотеки DLL, чтобы соответствовать архитектуре системы; т. е. Arm64. Как правило, они используются редакторами методов ввода (IMEs), вспомогательными технологиями и приложениями расширения оболочки (например, для отображения значков облачного хранилища в обозревателе или контекстном меню). Чтобы узнать, как перекомпилировать приложения или библиотеки DLL в Arm64, ознакомьтесь с ранней предварительной версией поддержки Visual Studio для Windows 10 в блоге разработки Arm.
Отладка
Чтобы более детально изучить поведение вашего приложения, см. Отладка на Arm, чтобы узнать больше о средствах и стратегиях отладки на Arm.
Виртуальные машины
Платформа Windows Hypervisor не поддерживается на платформе мобильных ПК Qualcomm Snapdragon 835 Mobile. Поэтому запуск виртуальных машин с помощью Hyper-V не будет работать. Мы продолжаем инвестировать в эти технологии на будущие чипсеты Qualcomm.
Динамическое создание кода
X86 настольные приложения эмулируются на Arm64 системой, которая генерирует инструкции Arm64 в процессе выполнения. Это означает, что если классическое приложение x86 предотвращает создание или изменение динамического кода в процессе, это приложение не может поддерживаться как x86 в Arm64.
Это митигация безопасности, которую некоторые приложения активируют в своём процессе с использованием API SetProcessMitigationPolicy с флагом ProcessDynamicCodePolicy
. Чтобы успешно работать в Arm64 в качестве процесса x86, эта политика устранения рисков должна быть отключена.
Windows on Arm