Partilhar via


Solução de problemas de aplicativos de á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 como compilar como Arm64, consulte a postagem no blog: Suporte oficial para Windows 10 no desenvolvimento do Arm. Para obter informações sobre o Arm64EC, consulte Anunciando o 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 que funciona em um computador x86, aqui estão algumas diretrizes para ajudá-lo a solucionar problemas.

Problema Solução
Seu aplicativo depende de um driver que não foi projetado para Arm. Recompile seu driver x86 para Arm64. Consulte Criando drivers Arm64 com o WDK.
Seu aplicativo está disponível apenas para x64. Se você desenvolve para a Microsoft Store, envie uma versão do Arm do seu aplicativo. Para obter mais informações, consulte Arquiteturas de pacote de aplicativos. Se você for um desenvolvedor Win32, recomendamos que você recompile seu aplicativo para Arm64. Para saber mais, veja Visualização antecipada do suporte do Visual Studio para Windows 10 no desenvolvimento do Arm.
Seu aplicativo usa uma versão do OpenGL posterior à 1.1 ou requer OpenGL acelerado por hardware. Use o modo DirectX do aplicativo, se 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 Gráficos e jogos do DirectX.
Seu aplicativo x86 não funciona conforme o esperado. Tente usar a Solução de Problemas de Compatibilidade seguindo as diretrizes da Solução de Problemas de Compatibilidade de Programas no Arm. Para obter outras etapas de solução de problemas, consulte o artigo Solução de problemas de aplicativos x86 no Arm .

Práticas recomendadas para o WOW

Um problema comum ocorre quando um aplicativo descobre que está sendo executado no WOW e, em seguida, assume que 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 é suportada no Arm.
  • Verifique se há outro software na visualização do registro nativo.
  • Suponha que um .NET Framework de 64 bits esteja disponível.

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

Um aplicativo pode colocar chaves do Registro na exibição nativa do Registro 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. Os aplicativos agora devem usar IsWow64Process2 para determinar se estão em execução em um sistema com suporte a WOW.

Drivers

Todos os drivers de modo kernel, drivers UMDF (User-Mode Driver Framework) 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 Arm64. O aplicativo x86 pode funcionar bem sob emulação, no entanto, seu driver precisará ser recompilado para Arm64 e qualquer experiência de aplicativo que dependa do driver não estará disponível. Para obter mais informações sobre como compilar seu driver para Arm64, consulte Criando drivers Arm64 com o WDK.

Extensões de shell do

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, eles são usados 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 clicar com o botão direito do mouse no menu de contexto). Para saber como recompilar seus aplicativos ou DLLs para Arm64, consulte a postagem no blog Visualização antecipada do suporte do Visual Studio para Windows 10 no desenvolvimento do Arm.

Depuração

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

Máquinas Virtuais

A plataforma Windows Hypervisor não é suportada na plataforma Qualcomm Snapdragon 835 Mobile PC. Portanto, a execução de máquinas virtuais usando o Hyper-V não funcionará. Continuamos a fazer investimentos nessas tecnologias em futuros chipsets da Qualcomm.

Geração de código dinâmico

Os aplicativos da área de trabalho X86 são emulados no Arm64 pelo sistema que gera instruções Arm64 em runtime. 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 terá suporte para 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 ProcessDynamicCodePolicy sinalizador. Para ser executado com êxito no Arm64 como um processo x86, essa política de mitigação terá que ser desabilitada.