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 sur 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 : Prise en charge officielle de Windows 10 sur le développement Arm. Pour plus d’informations sur Arm64EC, consultez Annonce d’Arm64EC : Création d’applications natives et interopérables pour Windows 11 sur Arm.
Si une application de bureau x86 ne fonctionne pas comme elle le fait 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. Reportez-vous à Génération de pilotes Arm64 avec WDK. |
Votre application est disponible uniquement pour 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 la préversion anticipée 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 accélérée par le matériel. | 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é du programme sur Arm. Pour obtenir d’autres étapes de résolution des problèmes, consultez l’article Résolution des problèmes des 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 la vue du Registre natif.
- Supposons qu’un .NET Framework 64 bits est 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 d’interagir avec les composants natifs du système d’exploitation autant que possible.
Une application peut placer des clés de Registre sous la vue de Registre native ou exécuter des fonctions en fonction de la présence de WOW. IsWow64Process d’origine indique uniquement si l’application s’exécute sur un ordinateur x64. Les applications doivent maintenant utiliser IsWow64Process2 pour déterminer s’ils 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. Toutefois, l’application x86 peut s’exécuter correctement sous émulation, 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 Building Arm64 Drivers with the WDK.
Extensions d'environnement
Les applications qui tentent de connecter 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, celles-ci sont utilisées par les éditeurs de méthode d’entrée (IMEs), les technologies d’assistance et les applications d’extension shell (par exemple, pour afficher les icônes de stockage cloud dans l’Explorateur ou un menu contextuel avec le bouton droit). Pour savoir comment recompiler vos applications ou DLL vers Arm64, consultez la préversion anticipée de la prise en charge de Visual Studio pour Windows 10 sur le billet de blog de 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 stratégies de débogage sur Arm.
Machines Virtuelles
La plateforme Windows Hypervisor n’est pas prise en charge sur la plateforme Pc mobile 835 Snap holo 835. Par conséquent, l’exécution de machines virtuelles à l’aide d’Hyper-V ne fonctionnera pas. Nous continuons de faire des investissements dans ces technologies sur les futurs circuits de Puces d’Amd.
Génération de code dynamique
Les applications de bureau X86 sont émulées sur Arm64 par le système générant 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.