Résolution des problèmes liés aux applications de bureau x86

Important

Avec Visual Studio 2017 ou version ultérieure, il est possible de recompiler votre application dans Arm64 ou Arm64EC afin que votre application s’exécute à pleine vitesse native. Pour plus d’informations sur la compilation en tant qu’Arm64, consultez le billet de blog : Support officiel pour Windows 10 sur le développement Arm. Pour plus d’informations sur Arm64EC, consultez Annonce d’Arm64EC : Génération d’applications natives et interopérables pour Windows 11 sur Arm.

Si une application de bureau x86 ne fonctionne pas comme sur un ordinateur x86, voici quelques conseils pour vous aider à résoudre les problèmes.

Problème Solution
Votre application s’appuie sur un pilote qui n’est pas conçu pour Arm. Recompilez votre pilote x86 sur Arm64. Consultez Génération de pilotes Arm64 avec wdk.
Votre application est disponible uniquement pour les systèmes x64. Si vous développez pour le Microsoft Store, envoyez une version Arm de votre application. Pour plus d’informations, consultez Architectures de package d’application. Si vous êtes développeur Win32, nous vous recommandons de recompiler votre application sur Arm64. Pour plus d’informations, consultez Préversion de la prise en charge de Visual Studio pour Windows 10 sur le développement Arm.
Votre application utilise une version OpenGL ultérieure à la version 1.1 ou nécessite OpenGL avec accélération matérielle. Utilisez le mode DirectX de l’application, s’il est disponible. Les applications x86 qui utilisent DirectX 9, DirectX 10, DirectX 11 et DirectX 12 fonctionnent sur Arm. Pour plus d’informations, consultez DirectX Graphics and Gaming.
Votre application x86 ne fonctionne pas comme prévu. Essayez d’utiliser l’utilitaire de résolution des problèmes de compatibilité en suivant les instructions de l’utilitaire de résolution des problèmes de compatibilité des programmes sur Arm. Pour connaître d’autres étapes de résolution des problèmes, consultez l’article Résolution des problèmes liés aux applications x86 sur Arm .

Meilleures pratiques pour WOW

Un problème courant se produit lorsqu’une application découvre qu’elle s’exécute sous WOW, puis suppose qu’elle se trouve sur un système x64. Après avoir fait cette hypothèse, l’application peut effectuer les opérations suivantes :

  • Essayez d’installer la version x64 d’elle-même, qui n’est pas prise en charge sur Arm.
  • Recherchez d’autres logiciels sous l’affichage du Registre natif.
  • Supposons qu’un .NET Framework 64 bits soit disponible.

En règle générale, une application ne doit pas faire d’hypothèses sur le système hôte lorsqu’elle est déterminée à s’exécuter sous WOW. Évitez autant que possible d’interagir avec les composants natifs du système d’exploitation.

Une application peut placer des clés de Registre sous la vue de Registre native ou exécuter des fonctions basées sur la présence de WOW. Le IsWow64Process d’origine indique uniquement si l’application s’exécute sur un ordinateur x64. Les applications doivent maintenant utiliser IsWow64Process2 pour déterminer si elles s’exécutent sur un système avec prise en charge WOW.

Pilotes

Tous les pilotes en mode noyau, les pilotes UMDF (User-Mode Driver Framework) et les pilotes d’impression doivent être compilés pour correspondre à l’architecture du système d’exploitation. Si une application x86 a un pilote, ce pilote doit être recompilé pour Arm64. L’application x86 peut fonctionner correctement sous l’émulation, mais son pilote doit être recompilé pour Arm64 et toute expérience d’application qui dépend du pilote ne sera pas disponible. Pour plus d’informations sur la compilation de votre pilote pour Arm64, consultez Génération de pilotes Arm64 avec wdk.

Extensions d'environnement

Les applications qui tentent de raccorder des composants Windows ou de charger leurs DLL dans des processus Windows devront recompiler ces DLL pour qu’elles correspondent à l’architecture du système . c’est-à-dire Arm64. En règle générale, ils sont utilisés par les éditeurs de méthodes d’entrée (GIE), les technologies d’assistance et les applications d’extension shell (par exemple, pour afficher les icônes de stockage cloud dans Explorer ou un menu contextuel). Pour savoir comment recompiler vos applications ou DLL sur Arm64, consultez le billet de blog Préversion de la prise en charge de Visual Studio pour Windows 10 sur le développement Arm.

Débogage

Pour examiner plus en détail le comportement de votre application, consultez Débogage sur Arm pour en savoir plus sur les outils et les stratégies de débogage sur Arm.

Machines Virtuelles

La plateforme Windows Hypervisor n’est pas prise en charge sur la plateforme DE PC mobile Qualcomm Snapdragon 835. Par conséquent, l’exécution de machines virtuelles à l’aide d’Hyper-V ne fonctionnera pas. Nous continuons d’investir dans ces technologies sur les futurs chipsets Qualcomm.

Génération de code dynamique

Les applications de bureau X86 sont émulées sur Arm64 par le système qui génère des instructions Arm64 au moment de l’exécution. Cela signifie que si une application de bureau x86 empêche la génération ou la modification de code dynamique dans son processus, cette application ne peut pas être prise en charge pour s’exécuter en tant que x86 sur Arm64.

Il s’agit d’une atténuation de la sécurité que certaines applications activent sur leur processus à l’aide de l’API SetProcessMitigationPolicy avec l’indicateur ProcessDynamicCodePolicy . Pour s’exécuter correctement sur Arm64 en tant que processus x86, cette stratégie d’atténuation doit être désactivée.