Compartilhar via


Resolução de problemas de aplicativos da área de trabalho x86

Importante

Com o Visual Studio 2017 ou posterior, é possível recompilar seu aplicativo para Arm64 ou Arm64EC para que seu aplicativo seja executado em velocidade nativa total. Para obter mais informações sobre a compilação como Arm64, consulte a postagem no blog: suporte oficial para o Windows 10 no arm development. Para obter informações sobre o Arm64EC, consulte Anunciando Arm64EC: Criando aplicativos nativos e interoperáveis para Windows 11 no Arm.

Se um aplicativo da área de trabalho x86 não funcionar da maneira como funciona em um computador x86, veja algumas diretrizes para ajudá-lo a solucionar problemas.

Questão Solução
Seu aplicativo depende de um driver que não foi projetado para o Arm. Recompile driver x86 para Arm64. Consulte criando drivers Arm64 com o WDK.
Seu aplicativo está disponível apenas para x64. Se você desenvolver para a Microsoft Store, envie uma versão do Arm do seu aplicativo. Para obter mais informações, consulte arquiteturas de pacotes de aplicativos. Se você for um desenvolvedor do Win32, recomendamos recompilar seu aplicativo para o Arm64. Para obter mais informações, consulte Prévia inicial do suporte do Visual Studio para o Windows 10 para o desenvolvimento em Arm.
Seu aplicativo usa uma versão do OpenGL posterior à 1.1 ou requer OpenGL acelerada por hardware. Use o modo DirectX do aplicativo, se ele estiver disponível. Os aplicativos x86 que usam DirectX 9, DirectX 10, DirectX 11 e DirectX 12 funcionarão no Arm. Para obter mais informações, consulte DirectX Graphics and Gaming.
Seu aplicativo x86 não funciona conforme o esperado. Tente usar a solução de problemas de compatibilidade seguindo as diretrizes do solução de problemas de compatibilidade do programa no Arm. Para outras etapas de solução de problemas, consulte o artigo Solução de problemas de aplicativos x86 no Arm.

Práticas recomendadas para WOW

Um problema comum ocorre quando um aplicativo descobre que ele está em execução em WOW e assume que ele está em um sistema x64. Tendo feito essa suposição, o aplicativo pode fazer o seguinte:

  • Tente instalar a versão x64 de si mesma, que não tem suporte no Arm.
  • Verifique se há outros softwares no modo de exibição do Registro nativo.
  • Suponha que uma estrutura .NET de 64 bits esteja disponível.

Geralmente, um aplicativo não deve fazer suposições sobre o sistema de host quando é determinado a ser executado em WOW. Evite interagir com componentes nativos do sistema operacional o máximo possível.

Um aplicativo pode colocar chaves do Registro na visão de registro nativa ou executar funções com base na presença do WOW. O isWow64Process original indica apenas se o aplicativo está em execução em um computador x64. Agora, os aplicativos devem usar IsWow64Process2 para determinar se eles estão em execução em um sistema com suporte wow.

Motoristas

Todos os drivers no modo kernel, drivers User-Mode Driver Framework (UMDF) drivers e drivers de impressão devem ser compilados para corresponder à arquitetura do sistema operacional. Se um aplicativo x86 tiver um driver, esse driver deverá ser recompilado para o Arm64. O aplicativo x86 pode ser executado bem sob emulação, no entanto, seu driver precisará ser recompilado para o Arm64 e qualquer experiência de aplicativo que dependa do driver não estará disponível. Para obter mais informações sobre como compilar o driver para Arm64, consulte Criando drivers Arm64 com o WDK.

Extensões do Shell

Os aplicativos que tentam conectar componentes do Windows ou carregar suas DLLs em processos do Windows precisarão recompilar essas DLLs para corresponder à arquitetura do sistema; Ou seja, Arm64. Normalmente, elas são usadas por IMEs (editores de método de entrada), tecnologias adaptativas e aplicativos de extensão de shell (por exemplo, para mostrar ícones de armazenamento em nuvem no Explorer ou um menu de contexto com o botão direito do mouse). Para saber como recompilar seus aplicativos ou DLLs para o Arm64, consulte a versão preliminar do suporte do Visual Studio para o desenvolvimento do Windows 10 no Arm postagem de blog.

Resolução de Erros

Para investigar em mais detalhes o comportamento do aplicativo, consulte Depuração no Arm e saiba mais sobre ferramentas e estratégias para depuração no Arm.

Máquinas virtuais

Não há suporte para a plataforma Do Windows Hypervisor na Plataforma de PC Móvel Qualcomm Snapdragon 835. Portanto, a execução de máquinas virtuais usando Hyper-V não funcionará. Continuamos a fazer investimentos nessas tecnologias em chipsets qualcomm futuros.

Geração dinâmica de código

Os aplicativos da área de trabalho X86 são emulados no Arm64 pelo sistema, que gera instruções Arm64 em tempo de execução. Isso significa que, se um aplicativo da área de trabalho x86 impedir a geração ou modificação de código dinâmico em seu processo, esse aplicativo não poderá ser executado como x86 no Arm64.

Essa é uma mitigação de segurança que alguns aplicativos habilitam em seu processo usando a API SetProcessMitigationPolicy com o flag ProcessDynamicCodePolicy. Para ser executada com êxito no Arm64 como um processo x86, essa política de mitigação precisará ser desabilitada.