- den drivere De må være Arm64: det er ingen emulering i kjernen, og uten dem maskinvare det fungerer ikke.
- x86/x64-emulering er konfigurerbar: juster hurtigbuffer, hybridmodus og flertråding for kompatibilitet.
- Kjente begrensninger: Anti-cheat, faks og skanner, visse antivirusprogrammer og apps av skall.
- Utviklere: Bygg innebygd Arm64, løs avhengigheter og test på ARM-maskinvare/VM.
Hvis du har tatt steget til et lag med Windows 11 på ARM og du sliter med et tilleggsutstyr som rett og slett ikke fungerer, er du ikke alene: Drivere er nøkkelbrikken og må tilpasses Arm64Selv om mange x86- og x64-apper kjører helt fint gjennom emulering, går ikke systemdrivere gjennom det laget, så det er lurt å forstå spillereglene.
I tillegg til drivere kombinerer armstøtte flere ingredienser: Konfigurerbar emulering, beste utviklingspraksis, kjente begrensninger og diagnostiske verktøyI denne veiledningen har vi samlet alt du trenger å vite for å identifisere hvorfor en enhets- eller driveravhengig app feiler, hvordan du finjusterer emulering og hva utviklere må gjøre for å kompilere naturlig for Arm64.
Hva skjer med drivere i Windows 11 ARM?
En Windows på ARM, Alle kjernemodusdrivere, UMDF-drivere (User-Mode Driver Framework) og skriverdrivere må kompileres for operativsystemarkitekturen.Det vil si at hvis systemet er Arm64, må driveren også være Arm64; det finnes ikke noe emuleringslag for kjernen, så kravet er strengt.
Dette betyr at en x86-applikasjon kan kjøre via emulering uten problemer, men Hvis du trenger din egen eller en tredjeparts driver, må den spesifikke delen finnes som Arm64.Inntil driveren er kompilert på nytt for Arm64, vil funksjoner som er avhengige av den ikke vises eller vil mislykkes.
I praksis vil enheter og periferiutstyr bare fungere hvis sjåførene dine er integrert i Windows 11 eller produsenten tilbyr spesifikke Arm64-drivereDette gjelder sensitive kategorier som antivirus og antimalware, utskriftsprogramvare eller PDF, hjelpeteknologier, verktøy for optiske disker og virtualiseringsprogramvare.
Derfor, når du installerer tredjeparts programvare eller maskinvare, Sørg for å laste ned og installere produsentens driver spesielt for Arm-datamaskinerHvis en driver bare viser x86/x64-kompatibilitet eller ikke nevner Arm64, vil den mest sannsynlig ikke fungere på din ARM-baserte datamaskin.
ARM-drevne enheter har blitt populære på grunn av energieffektiviteten, batterilevetiden og NPU-ene for IAMen Denne effektiviteten erstatter ikke behovet for innebygde Arm64-drivere.Hvis du er avhengig av et kritisk tilleggsutstyr, verifisering før produsenten slipper støtte for Arm64.

x86- og x64-emulering på ARM og hvordan justere kompatibilitet
Windows på ARM kjører Arm-apper direkte, mens x86- og x64-apper kjører med emuleringMed Windows 11 kom x64-emulering for å utvide kompatibiliteten, og med Prism-motoren på Copilot+-enheter med Snapdragon X har ytelsen til emulerte apper blitt betydelig forbedret sammenlignet med tidligere generasjoner.
Hvis en app oppfører seg merkelig, kan du bruke feilsøkingsprogram for programkompatibilitetHøyreklikk på .exe-filen og velg Feilsøking av kompatibilitet for å prøve de anbefalte innstillingene eller velge bestemte symptomer, for eksempel at den åpnes, men ser dårlig ut, krever tillatelser eller at problemet ikke er oppført.
I tillegg vil du i Kompatibilitetsfanen i egenskapene for kjørbare filer se en seksjon for Windows 10 på ARM eller Windows 11 på ARM. Derfra kan du endre fullstendige emuleringsinnstillinger eller aktiver avanserte innstillinger å eksperimentere med individuelle alternativer som er utformet for å prioritere stabilitet fremfor ytelse når problemer oppstår.
| Emuleringsinnstillinger | Hva gjør |
|---|---|
| Deaktiver programbufferen | Tvinger systemet til å kompilere de emulerte kodeblokkene på nytt ved hver kjøring, eliminerer hurtigbufferen for å redusere bivirkninger på bekostning av ytelse. |
| Deaktiver hybrid utførelsesmodus | Unngå CHPE-binærfiler med en blanding av x86 og Arm64, og tvinger til å bare bruke x86-binærfiler, noe som øker kompatibiliteten med noen sensitive apper. |
| Ekstra lysbeskyttelse | Aktiverer globale sikkerhetstiltak som påvirker ustabile metadata og kan påvirke ytelsen til fordel for stabilitet. |
| Streng kompatibilitet med selvmodifiserende kode | Det garanterer at selvmodifiserende kode for å fungere riktig i emulering, med en merkbar innvirkning på ytelsen når dette mønsteret er hyppig. |
| Deaktiver optimalisering på RWX-sider | Fjerner en ytelsesoptimalisering for kode til lesbare, skrivbare og kjørbare sider som kan kollidere med enkelte apper. |
| Deaktiver JIT-optimalisering (kun x64) | Utdatert alternativ som vil ikke lenger være tilgjengelig i fremtidige versjoner. |
| Deaktiver flyttalloptimalisering (kun x64) | Tving emulering av x87 med 80-bit full presisjon, noe som øker nøyaktigheten i FP på bekostning av lavere ytelse. |
Du kan også justere hvordan appen bruker flere kjerner: rask, streng, veldig streng eller tvinge frem en enkelt kjerneDisse alternativene endrer antallet minnebarrierer som brukes til å synkronisere tilgang mellom tråder; å øke antallet barrierer reduserer subtile feil på bekostning av hastighet, og enkeltkjernemodus fjerner barrierer og serialiserer tråder på en enkelt kjerne.
Hvis endring av et bestemt alternativ fører til at feilen forsvinner, Microsoft ber deg om å sende detaljer til følgende adresse [e-postbeskyttet] for å integrere tilbakemeldingene i fremtidige forbedringer av emulatoren.
Drivere: kjerne, UMDF og utskrift
Alle systemdrivere må samsvare med arkitekturen: Det er ingen emulering i Windows-kjernenDette har en særlig innvirkning på virtualisering og ethvert scenario som krever tilgang på lavt nivå.
Hvis et x86-program installerer eller krever sin egen driver, Selve appen kan startes under emulering, men funksjoner knyttet til den driveren vil ikke vises før en Arm64-versjon av driveren finnes.
For å kompilere Arm64-drivere med garantier, Utviklere bør følge den Arm64-spesifikke WDK-veiledningen, som beskriver utarbeidelsen av miljøet, prosjekter og signatur.
Shell-utvidelser, IME-er og andre system-DLL-er
Programmer som prøver å koble til Windows-komponenter eller injisere DLL-er i systemprosesser må kompilere disse DLL-ene for Arm64Det er her tingene spiller inn redigeringsprogrammer for inndatametoder, hjelpeteknologier og skallutvidelser som plasserer ikoner eller kontekstmenyer.
Når du laster inn kode i Windows-prosesser, match den binære arkitekturen med systemetsRekompilering av disse DLL-ene sikrer at komponenten kjører naturlig uten å være avhengig av emulering.
Beste praksis med WOW og arkitekturdeteksjon
Et vanlig feilmønster oppstår når appen oppdager at den er under WOW og antar feilaktig at systemet er x64Derfra prøver den å installere x64-varianten, ser i den opprinnelige registervisningen, eller antar at det finnes et 64-biters .NET.
For å unngå slike feil, Ikke gjør antagelser om verten når du oppdager WOW og minimerer interaksjoner med innebygde OS-komponenter med mindre du kontrollerer arkitekturen.
Hvis du trenger å sjekke kompatibilitet, bruker isWow64Process2 API-et i stedet for det originale isWow64ProcessDen første skiller riktig mellom prosess- og vertskombinasjoner og bidrar til å bestemme kodestier og loggvisninger uten forvirring.
Dynamisk kodegenerering og begrensninger
Emulering av x86-skrivebordsapper genererer Arm64-instruksjoner under kjøring, så Blokkering av kodegenerering eller -endring i prosessen bryter kompatibilitetenHvis appen din aktiverer begrensning ved hjelp av SetProcessMitigationPolicy med ProcessDynamicCodePolicy, deaktiver den for å tillate emulering.
Hvis du mistenker at applikasjonen din bruker selvmodifiserende teknikker, muliggjør streng kompatibilitet med selvmodifiserende kode i de avanserte emuleringsinnstillingene, vel vitende om at det vil påvirke ytelsen betydelig.
Virtuelle maskiner og Hyper-V-støtte
Windows Hypervisor-plattformen støttes ikke. Qualcomm 835 på mobil-PC-plattformen, så Hyper-V vil ikke fungere på den spesifikke maskinvaren. Microsoft indikerer at de fortsetter å investere i disse teknologiene for fremtidige Qualcomm-brikkesett.
Kjente begrensninger: Spill, antivirus, faks og skanner og mer
Noen spill vil ikke fungere hvis Anti-juksedriveren din har ikke en versjon for Windows 11 på ARM.Sjekk med spillutgiveren eller sjekk kompatibilitet på worksonwoa.com, en samarbeidsressurs som sporer statusen til apper og spill.
På Windows 10 på ARM, x64-apper kjører ikkeDu trenger Arm64-, Arm32- eller x86-versjoner. Det finnes også restriksjoner som OpenGL over 1.1 og anti-cheat-pakker uten ARM-støtte. På Windows 11 på ARM utvider x64-emulering utvalget av støttede applikasjoner.
Programmer som tilpasser Windows-skallet, for eksempel noen IME-er, hjelpeteknologier eller skyintegrasjoner, kan by på problemer hvis de ikke tilbyr Arm64-binærfilerDen endelige avgjørelsen ligger hos utvikleren av hver app.
Det finnes også tredjeparts antiviruspakker som du ikke kan installere med mindre de er opprettet eller oppdatert for ARMI mellomtiden tilbyr Windows Security innebygd beskyttelse som varer hele enhetens levetid.
En mindre kjent særegenhet: funksjonen Faks og skanner Windows er ikke tilgjengelig på datamaskiner med Windows 11 på ARM, så det er lurt å se etter alternativer.
Native apper tilgjengelig og den nye Prism-motoren
Økosystemet tilbyr nå flere native Arm64-bygg enn noen gang før, med Microsoft 365 i sin raskeste utførelse i Teams, Outlook, Word, Excel, PowerPoint, OneDrive og OneNote, pluss Chrome, Slack, Spotify, Zoom, WhatsApp, Blender, Affinity Suite og DaVinci Resolve, blant mange andre.
For apper uten innebygd binærfil, den nye emuleringsmotoren Prism forbedrer ytelsen til emulerte apper på Copilot+-enheter med Snapdragon X og kommer til flere Windows 11-enheter.
Hvis du vil sjekke hvilke apper og spill som fungerer, Sjekk livelisten på worksonwoa.comDet er et tredjepartsprosjekt med åpen kildekode som Microsoft også bidrar med kompatibilitetsdata til.
Slik porterer du apper og drivere til Arm64
For å opprette en innebygd versjon av applikasjonen din, legg til en i Visual Studio ARM64-løsningsplattform fra Configuration Manager, kopier konfigurasjonen fra x64 og opprett nye prosjektplattformer. Kompiler deretter og retter feil.
Når du har bygd i Release, er det sannsynlig at krasj kommer fra Avhengigheter som ikke tilbyr Arm64-binærfilerDe må oppdateres, kompileres på nytt eller erstattes etter behov.
Hvis du vil sjekke den resulterende binærfilen, bruk PowerShell og løp søppelbøtte/overskrifter på .exe-filen for å bekrefte at overskriften indikerer AA64-maskin (ARM64). Dette er en rask sjekk for å sikre at du ikke kjører feil variant.
Testing og feilsøking er enklere hvis du jobber på en Arm-maskin. Hvis du utvikler fra x86/x64, Bruk ekstern feilsøking til en Windows-enhet eller VM på ARMMicrosoft dokumenterer strategier i sin Arm-feilsøkingsguide.
Som anbefalte forutsetninger, bruk Visual Studio 2022 v17.4 eller nyere med innebygd Arm64-støtte (VS 17.10 Preview legger til forbedringer), og hvis du foretrekker det, LLVM Clang 12+ for kompilering og kobling. Den innebygde verktøykjeden tilbyr overlegen ytelse sammenlignet med emulerte versjoner.
Når det gjelder rammeverk, støttes de .NET 7, .NET 6 LTS, .NET 5.0.8+ og .NET Framework 4.8.1Du kan også kompilere C++ med clang-cl, som opprettholder ABI-kompatibilitet med MSVC.
Avhengigheter, Arm64EC og ekstern hjelp
Når et bibliotek blokkerer deg fra å kompilere, kompiler den internt for Arm64 Hvis det er din egen, spør tredjeparten om en ny versjon hvis den er kommersiell, eller se etter kompatible alternativer hvis den er åpen kildekode.
Før du bytter stabler, sjekk om vcpkg har nå en oppdatert versjon med Arm64, og hvis ikke, vurder å bidra til støtte. Mange lokalsamfunn ville sette pris på den hjelpen.
Som en mellomstrategi, Arm64EC lar deg blande den rekompilerte appen din med x64-avhengigheter som kjører under emulering i samme prosess. Det er ikke gyldig å kombinere dem omvendt (du kan ikke bruke rene Arm64-avhengigheter i en x64-prosess).
Hvis du trenger støtte, Linaro samarbeider med bedrifter og lokalsamfunn for å muliggjøre programvare på ARMDu kan åpne en forespørsel på serviceavdelingen deres for å utforske støtte for manglende Windows-on-ARM-pakker.
Testing på maskinvare eller VM, CI/CD og multithreading i emulering
For å sikre kvalitet er det viktig at testpass kjører på Arm64-arkitekturen: ekte maskinvare som kjører Windows på ARM eller en kompatibel VM, slik at resultatene gjenspeiler sluttbrukerens virkelighet.
Å bygge og teste på samme maskin forenkler livet, selv om du også kan Utvid byggeinfrastrukturen din for å generere binærfiler på tvers av plattformer og deretter distribuere dem på en dedikert Arm64-testbenk.
Hvis du opplever sjeldne synkroniseringsproblemer med flertrådede apper, kan du eksperimentere med strenge eller svært strenge flerkjernemoduser, eller tving frem enkeltkjernemodus for å se om problemet forsvinner. Dette er en nyttig teknikk for å begrense kappløpsforhold.
For å raskt sette opp et testmiljø, Azure tilbyr en rask start å opprette en Windows VM på ARMDet er en praktisk rute for CI eller manuell testing når du ikke har fysisk maskinvare tilgjengelig.
Installere Windows- og lagringsdrivere: x86/x64 vs. ARM
Hvis du installerer Windows 11 eller 10 på en datamaskin Intel ingen enheter vises, du trenger kanskje Last inn Intel Rapid Storage Technology (IRST)-driveren under veiviseren eller deaktiver Intel VMD. Dette gjelder bare for x86/x64-plattformer, ikke ARM-enheter.
Den typiske prosedyren med IRST består av last ned pakken fra produsentens supportside, pakk den ut til et minne USB og bruk alternativet for å laste inn driver på skjermen som spør hvor du vil installere Windows, slik at installasjonsprogrammet oppdager diskene.
Som et alternativ er det mulig deaktiver Intel Volume Management Device (VMD) på BIOSGå inn med F2, bytt til avansert modus med F7, gå til VMD-delen og deaktiver driveren; lagre med F10. Nomenklaturen kan variere noe mellom modeller og UEFI-er.
På modeller med Intel Lunar Lake, Manuell installasjon av IRST-drivere støttes ikkeDet anbefales å bruke Windows 11 24H2 eller høyere og fortsette med en standardinstallasjon uten å laste inn drivere.
Men hvis datamaskinen din er ARM (for eksempel med en Qualcomm CPU), ASUS indikerer å bruke Gjenoppretting i skyen fra MyASUS på WinRE å installere systemet på nytt i stedet for den tradisjonelle flyten med IRST, som ikke gjelder for denne arkitekturen.
Lidenskapelig forfatter om verden av bytes og teknologi generelt. Jeg elsker å dele kunnskapen min gjennom å skrive, og det er det jeg skal gjøre i denne bloggen, vise deg alle de mest interessante tingene om dingser, programvare, maskinvare, teknologiske trender og mer. Målet mitt er å hjelpe deg med å navigere i den digitale verden på en enkel og underholdende måte.

