Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Arm64X is een nieuw type binair bestand dat zowel de klassieke Arm64-code als arm64EC-code samen kan bevatten. Deze dubbele compatibiliteit maakt Arm64X geschikt voor zowel klassieke Arm64- als Arm64EC-processen op een Windows op Arm-apparaat. Het is een bijzonder goede pasvorm voor middleware of plug-ins die beide ABI's gebruiken.
Geïntroduceerd in de Windows 11 SDK is het binaire bestand arm64X een type PE-bestand (Portable Executable) dat werkt met zowel Windows 11 op Arm als Windows 10 op Arm. Zie Binaire Arm64X-bestanden bouwen om binaire Arm64X-bestanden te bouwen.
Hoe werken binaire Arm64X-bestanden?
In wezen bevat een binaire arm64X alle inhoud die zich in afzonderlijke binaire x64/Arm64EC- en Arm64-bestanden zou bevinden, maar voegt ze samen in één efficiënter bestand op schijf. Het ingebouwde binaire arm64X-bestand heeft twee sets code, toegangspunten en andere elementen, terwijl redundante onderdelen worden geëlimineerd om ruimte op schijf te besparen.
Wanneer een toepassing een binair Arm64X-bestand laadt, past het besturingssysteem transformaties toe om de juiste secties beschikbaar te maken, afhankelijk van de architectuur van het proces. U kunt een Arm64X-binair zoals oude 3D-afbeeldingen zien, met zowel een rode als blauwe afbeelding die kan worden bekeken door de rode of blauwe lenzen op een paar 3D-brillen. Een x64-app ziet het DLL-bestand alsof het een x64-DLL is, terwijl een Arm64-app dezelfde DLL ziet als een Arm64-DLL.
Dankzij de transparante transformaties van het besturingssysteem kunnen zowel x64- als Arm644-toepassingen hetzelfde binaire Arm64X-bestand laden zonder ooit te weten dat het ook code voor de andere architectuur bevat. Daarom noemen mensen Arm64X binaire bestanden 'kameleon', omdat ze de 'kleur' van hun omgeving aannemen.
Binaire Arm64X-bestanden lijken standaard binaire Arm64-bestanden te zijn. Met deze standaardinstelling kan een systeem met Windows 10 op Arm, dat de Arm64X-indeling niet herkent en niet weet hoe transformaties moeten worden toegepast, het binaire Arm64X-bestand succesvol laden in een Arm64-proces.
Hoe gebruikt het besturingssysteem binaire Arm64X-bestanden?
Windows 11 op Arm heeft de mogelijkheid geïntroduceerd om x64-toepassingen uit te voeren op Arm64. In tegenstelling tot x86-emulatie, die een SysWoW64 map bevat, is er echter geen afzonderlijke map met pure binaire x64-besturingssysteembestanden. Met Windows 11 op Arm kunnen zowel x64-toepassingen als Arm64-toepassingen binaire bestanden laden en API's aanroepen met behulp van de binaire bestanden in System32. Deze flexibiliteit is mogelijk omdat ontwikkelaars alle binaire bestanden in System32 opnieuw compileren die een app mogelijk moet laden als Arm64X-binaire bestanden.
Zowel x64- als Arm64-toepassingen kunnen de binaire bestanden System32laden en ermee werken, zonder dat er een afzonderlijke kopie van alle binaire systeembestanden nodig is, zoals SysWoW64 voor x86.
Arm64X voor gebruik met middleware of plug-ins
De kernfunctie van een binaire Arm64X-functie is om één bestand op schijf in te schakelen ter ondersteuning van zowel x64/Arm64EC- als Arm64-processen. De meeste app-ontwikkelaars richten zich op het bouwen van hun toepassing als Arm64EC of Arm64, niet beide, dus u hebt waarschijnlijk geen Arm64X nodig.
Ontwikkelaars van middleware of invoegtoepassingen moeten echter Arm64X overwegen omdat dergelijke code kan worden geladen in x64- of Arm64-processen.
U kunt zowel x64- als Arm64-processen ondersteunen zonder Arm64X te gebruiken, maar misschien kunt u het besturingssysteem het laden van de juiste architectuur van binair in een bepaald 64-bits proces laten verwerken.
Drie conceptuele manieren om beide architecturen op Windows 11 op Arm te ondersteunen, zijn onder andere:
Afzonderlijke binaire bestanden: aangezien standaardprocedures tegenwoordig afzonderlijke binaire bestanden gebruiken bij het ondersteunen van meerdere architecturen, kan het zijn dat het bouwen en verzenden van afzonderlijke binaire x64- en Arm64-binaire bestanden beter werkt voor uw oplossing. U kunt uw bestaande mechanismen gebruiken om ervoor te zorgen dat de juiste binaire belastingen in het bijbehorende architectuurproces worden geladen.
Arm64X binary: u kunt een Arm64X-binair bouwen dat alle x64/Arm64EC- en Arm64-code in één binair bestand bevat.
Arm64X pure doorstuurserver: Als u de flexibiliteit van Arm64X nodig hebt, maar al uw app-code niet in een binaire arm64X-code wilt plaatsen, kunt u de pure doorstuurserverbenadering gebruiken. Een klein Arm64X-binaire zonder code erin verwijst de lader naar de juiste architectuur van de DLL.
Voorbeeldsituaties waarvoor Arm64X is vereist
Voor sommige situaties is het gebruik van een binair arm64X-bestand vereist om zowel x64- als Arm64-apps te ondersteunen. Deze situaties zijn onder andere:
- Een 64-bits COM-server die zowel x64- als Arm64-apps aanroept
- Een invoegtoepassing die wordt geladen in een x64- of Arm64-app
- Eén binair bestand dat wordt geïnjecteerd in een x64- of Arm64-proces
In elk van deze gevallen kunt u een Arm64X-binair bestand of een Arm64X-pure forwarder gebruiken om ondersteuning voor beide architecturen mogelijk te maken met één binair bestand.
Zie Binaire Arm64X-bestanden bouwen voor meer informatie over het bouwen van binaire Arm64X-bestanden.
Windows on Arm