Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Arm64X é um novo tipo de binário que pode conter o código Arm64 clássico e o código Arm64EC juntos. Esta compatibilidade dupla torna o Arm64X adequado para ambos os processos clássicos Arm64 e Arm64EC em um dispositivo Windows on Arm. É uma opção especialmente boa para middleware ou plugins usados por ambos os ABIs.
Introduzido no SDK do Windows 11, o binário Arm64X é um tipo de arquivo executável portátil (PE) que funciona com o Windows 11 no Arm e o Windows 10 no Arm. Para criar binários Arm64X, consulte Construir binários Arm64X.
Como funcionam os binários do Arm64X?
Fundamentalmente, um binário Arm64X contém todo o conteúdo que estaria em binários x64/Arm64EC e Arm64 separados, mas os mescla em um arquivo mais eficiente no disco. O binário Arm64X construído tem dois conjuntos de código, pontos de entrada e outros elementos, eliminando peças redundantes para economizar espaço no disco.
Quando um aplicativo carrega um binário Arm64X, o sistema operacional aplica transformações para expor as seções corretas, dependendo da arquitetura do processo. Você pode pensar em um binário Arm64X como imagens 3D antigas, com uma imagem vermelha e azul que pode ser vista através das lentes vermelhas ou azuis em um par de óculos 3D. Um aplicativo x64 vê a DLL como se fosse uma DLL x64, enquanto um aplicativo Arm64 vê a mesma DLL que uma DLL Arm64.
As transformações transparentes do sistema operacional permitem que os aplicativos x64 e Arm64 carreguem o mesmo binário Arm64X sem nunca saber que ele também contém código para a outra arquitetura. Por essa razão, as pessoas apelidam os binários Arm64X de "camaleão" quando assumem a "cor" dos seus arredores.
Por padrão, os binários Arm64X parecem ser binários Arm64. Essa configuração padrão permite que um sistema que executa o Windows 10 no Arm, que não reconhece o formato Arm64X nem sabe como aplicar transformações, carregue o binário Arm64X em um processo Arm64 com êxito.
Como o sistema operacional usa binários Arm64X?
O Windows 11 no Arm introduziu a capacidade de executar aplicativos x64 no Arm64. No entanto, ao contrário da emulação x86, que inclui uma pasta, não há nenhuma SysWoW64 pasta separada de binários puros do sistema operacional x64. Com o Windows 11 em Arm, as aplicações x64 e as aplicações Arm64 podem carregar binários e chamar APIs usando os binários no System32. Essa flexibilidade é possível porque os desenvolvedores recompilam quaisquer binários em System32 que um aplicativo pode precisar carregar como binários Arm64X.
Ambos os aplicativos x64 e Arm64 podem carregar e interagir com os binários no System32, sem a necessidade de uma cópia separada de todos os binários do sistema, como SysWoW64 para x86.
Arm64X para uso com middleware ou plugins
A principal função de um binário Arm64X é habilitar um arquivo no disco para suportar os processos x64/Arm64EC e Arm64. A maioria dos desenvolvedores de aplicativos se concentra em criar seu aplicativo como Arm64EC ou Arm64, não ambos, então você provavelmente não precisa do Arm64X.
No entanto, os desenvolvedores de middleware ou plugins devem considerar Arm64X porque esse código pode ser carregado em processos x64 ou Arm64.
Você pode suportar processos x64 e Arm64 sem usar Arm64X, mas pode achar mais fácil deixar o sistema operacional lidar com o carregamento da arquitetura correta do binário em um determinado processo de 64 bits.
Três maneiras conceituais de oferecer suporte a ambas as arquiteturas no Windows 11 no Arm incluem:
Binários separados: Como as práticas padrão atuais usam binários separados ao oferecer suporte a várias arquiteturas, você pode achar que criar e enviar binários x64 e Arm64 separados funciona melhor para sua solução. Você pode usar seus mecanismos existentes para garantir que o binário correto seja carregado no processo de arquitetura associado.
Binário Arm64X: Você pode criar um binário Arm64X que contenha todos os códigos x64/Arm64EC e Arm64 em um binário.
Encaminhador puro Arm64X: Se você precisa da flexibilidade do Arm64X, mas quer evitar colocar todo o código do seu aplicativo em um binário Arm64X, você pode usar a abordagem de encaminhador puro. Um pequeno binário Arm64X sem código redireciona o carregador para a arquitetura correta da DLL.
Exemplos de situações que requerem Arm64X
Algumas situações requerem o uso de um binário Arm64X para suportar aplicativos x64 e Arm64. Essas situações incluem:
- Um servidor COM de 64 bits que é chamado por aplicativos x64 e Arm64
- Um plug-in que é carregado em um aplicativo x64 ou Arm64
- Um único binário que é injetado em um processo x64 ou Arm64
Em cada um desses casos, você pode usar um binário Arm64X ou um encaminhador puro Arm64X para habilitar um binário para suportar ambas as arquiteturas.
Para obter detalhes sobre a criação de binários Arm64X, consulte Construir binários Arm64X.