Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Arm64X es un nuevo tipo de binario que puede contener el código arm64 clásico y el código Arm64EC juntos. Esta compatibilidad dual hace que Arm64X sea adecuado para los procesos Arm64 clásicos y Arm64EC en un dispositivo Windows sobre Arm. Es una opción especialmente adecuada para middleware o complementos que usan ambas API.
Introducido en el SDK de Windows 11, el binario Arm64X es un tipo de archivo ejecutable portátil (PE) que funciona con Windows 11 en Arm y Windows 10 en Arm. Para compilar archivos binarios arm64X, consulte Compilación de archivos binarios arm64X.
¿Cómo funcionan los archivos binarios arm64X?
Fundamentalmente, un binario Arm64X contiene todo el contenido que estaría en archivos binarios x64/Arm64EC y Arm64EC independientes, pero los combina en un archivo más eficaz en el disco. El binario arm64X compilado tiene dos conjuntos de código, puntos de entrada y otros elementos, al tiempo que elimina las partes redundantes para ahorrar espacio en el disco.
Cuando una aplicación carga un binario Arm64X, el sistema operativo aplica transformaciones para exponer las secciones correctas en función de la arquitectura del proceso. Puede imaginar un binario Arm64X como las viejas imágenes en 3D, con una imagen roja y una azul que se puede ver a través de las lentes rojas o azules de unas gafas 3D. Una aplicación x64 ve el archivo DLL como si fuera un archivo DLL x64, mientras que una aplicación arm64 ve el mismo archivo DLL que un archivo DLL de Arm64.
Las transformaciones del sistema operativo transparente permiten a las aplicaciones x64 y Arm64 cargar el mismo binario arm64X sin saber nunca que también contiene código para la otra arquitectura. Por esa razón, las personas apodan los binarios Arm64X 'camaleón', ya que adoptan el 'color' de su entorno.
De forma predeterminada, los archivos binarios arm64X parecen ser binarios arm64. Esta configuración predeterminada permite un sistema que ejecuta Windows 10 en Arm, que no reconoce el formato Arm64X ni sabe cómo aplicar transformaciones, para cargar el binario Arm64X en un proceso arm64 correctamente.
¿Cómo usa el sistema operativo los archivos binarios arm64X?
Windows 11 en Arm introdujo la capacidad de ejecutar aplicaciones x64 en Arm64. Sin embargo, a diferencia de la emulación x86, que incluye una SysWoW64 carpeta, no hay ninguna carpeta independiente de archivos binarios puros del sistema operativo x64. Con Windows 11 en Arm, tanto las aplicaciones x64 como las aplicaciones arm64 pueden cargar archivos binarios y llamar a las API mediante los archivos binarios de System32. Esta flexibilidad es posible porque los desarrolladores vuelven a compilar los binarios en System32 que una aplicación podría necesitar cargarse como binarios Arm64X.
Las aplicaciones x64 y Arm64 pueden cargar e interactuar con los archivos binarios de System32, sin necesidad de una copia independiente de todos los archivos binarios del sistema, como SysWoW64 para x86.
Arm64X para su uso con middleware o complementos
La función principal de un binario Arm64X es habilitar un archivo en disco para admitir procesos x64/Arm64EC y Arm64. La mayoría de los desarrolladores de aplicaciones se centran en compilar su aplicación como Arm64EC o Arm64, no en ambos, por lo que es probable que no necesite Arm64X.
Sin embargo, los desarrolladores de middleware o complementos deben considerar Arm64X porque este código puede cargarse en procesos x64 o Arm64.
Puede admitir procesos x64 y Arm64 sin usar Arm64X, pero es posible que le resulte más fácil permitir que el sistema operativo controle la carga correcta de la arquitectura binaria en un proceso de 64 bits determinado.
Entre las tres formas conceptuales de admitir ambas arquitecturas en Windows 11 en Arm se incluyen:
Archivos binarios independientes: dado que actualmente los procedimientos estándar usan archivos binarios independientes al admitir varias arquitecturas, es posible que encuentre que crear y enviar archivos binarios x64 y Arm64 independientes funcionan mejor para la solución. Puede usar los mecanismos existentes para asegurarse de que los archivos binarios correctos se cargan en el proceso de arquitectura asociado.
Binario Arm64X: puede compilar un binario Arm64X que contenga todo el código x64/Arm64EC y Arm64 en un binario.
Reenviador puro arm64X: si necesita la flexibilidad de Arm64X, pero quiere evitar colocar todo el código de la aplicación en un binario Arm64X, puede usar el enfoque de reenviador puro. Un binario arm64X pequeño sin código redirige el cargador a la arquitectura correcta de DLL.
Situaciones de ejemplo que requieren Arm64X
Algunas situaciones requieren el uso de un binario Arm64X para admitir aplicaciones x64 y Arm64. Estas situaciones incluyen:
- Un servidor COM de 64 bits al que llaman las aplicaciones x64 y Arm64
- Un complemento que se carga en una aplicación x64 o Arm64
- Un único binario que se inserta en un proceso x64 o Arm64
En cada uno de estos casos, puede usar un binario Arm64X o un reenviador puro arm64X para permitir que un binario admita ambas arquitecturas.
Para obtener más información sobre cómo compilar archivos binarios arm64X, consulte Compilación de archivos binarios arm64X.