Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Arm64X é um novo tipo de binário que pode conter o código Arm64 clássico e o código Arm64EC juntos. Essa compatibilidade dupla torna o Arm64X adequado tanto para processos clássicos de Arm64 quanto de Arm64EC em um dispositivo Windows em Arm. É uma adequação especialmente apropriada para middleware ou plug-ins que ambas as ABIs utilizam.
Introduzido no SDK do Windows 11, o binário Arm64X é um tipo de arquivo PE (Executável Portátil) que funciona com o Windows 11 no Arm e o Windows 10 no Arm. Para criar binários Arm64X, consulte Compilar 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 criado tem dois conjuntos de código, pontos de entrada e outros elementos, eliminando partes 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 exibida 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 binários Arm64X de "camaleão" à medida que assumem a "cor" de 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 ou saiba 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 SysWoW64 pasta, não há nenhuma pasta separada de binários puros do sistema operacional x64. Com o Windows 11 em Arm, os aplicativos x64 e os aplicativos Arm64 podem carregar os binários e chamar as APIs utilizando os binários em System32. Essa flexibilidade é possível porque os desenvolvedores recompilam todos os binários em System32 que um aplicativo pode precisar carregar como binários Arm64X.
Os aplicativos x64 e Arm64 podem carregar e interagir com os binários em System32, sem precisar de uma cópia separada de todos os binários do sistema, como SysWoW64 para x86.
Arm64X para uso com middleware ou plug-ins
A função principal de um binário Arm64X é habilitar um arquivo em disco para dar suporte a processos x64/Arm64EC e Arm64. A maioria dos desenvolvedores de aplicativos se concentra na criação de seu aplicativo como Arm64EC ou Arm64, não ambos, portanto, você provavelmente não precisa do Arm64X.
No entanto, os desenvolvedores de middleware ou plug-ins devem considerar Arm64X porque esse código pode ser carregado em processos x64 ou Arm64.
Você pode dar suporte a processos x64 e Arm64 sem usar o Arm64X, mas talvez seja mais fácil permitir que o sistema operacional manipule o carregamento da arquitetura correta do binário em um determinado processo de 64 bits.
Três maneiras conceituais de dar suporte a ambas as arquiteturas no Windows 11 no Arm incluem:
Binários separados: como as práticas padrão hoje usam binários separados ao dar suporte a várias arquiteturas, você pode descobrir que criar e enviar binários separados x64 e Arm64 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 contém todo o código x64/Arm64EC e Arm64 em um binário.
Encaminhador puro Arm64X: se você precisar da flexibilidade do Arm64X, mas quiser evitar colocar todo o código do aplicativo em um binário Arm64X, poderá usar a abordagem de encaminhador puro. Um binário Arm64X pequeno sem código redireciona o carregador para a arquitetura correta da DLL.
Situações de exemplo que exigem Arm64X
Algumas situações exigem o uso de um binário Arm64X para dar suporte a 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 dar suporte a ambas as arquiteturas.
Para obter detalhes sobre como criar binários Arm64X, consulte Compilar binários Arm64X.