- L sterowniki Muszą być Arm64: w jądrze nie ma emulacji i bez nich sprzęt komputerowy To nie działa
- Emulację x86/x64 można konfigurować: można dostosować pamięć podręczną, tryb hybrydowy i wielowątkowość w celu zapewnienia kompatybilności.
- Znane ograniczenia: Ochrona przed oszustwami, faks i skaner, niektóre programy antywirusowe i mobilne i webowe z muszli.
- Programiści: Kompilacja natywnego środowiska Arm64, rozwiązanie zależności i testowanie na sprzęcie/maszynie wirtualnej ARM.
Jeśli przeszedłeś do zespołu z Windows 11 jeśli masz problem z procesorem ARM i nie działa Ci żadne urządzenie peryferyjne, nie jesteś sam: Sterowniki są kluczowym elementem i muszą być dostosowane do Arm64Choć wiele aplikacji x86 i x64 działa poprawnie dzięki emulacji, sterowniki systemowe nie korzystają z tej warstwy, dlatego warto zrozumieć zasady gry.
Oprócz sterowników, Arm support łączy w sobie kilka składników: Konfigurowalna emulacja, najlepsze praktyki programistyczne, znane ograniczenia i narzędzia diagnostyczneW tym przewodniku zebraliśmy wszystkie informacje, które musisz znać, aby zidentyfikować przyczynę awarii aplikacji zależnej od urządzenia lub sterownika, dowiedzieć się, jak dostroić emulację i co muszą zrobić deweloperzy, aby kompilować natywnie dla architektury Arm64.
Co dzieje się ze sterownikami w systemie Windows 11 ARM?
En Windows na ARM, Wszystkie sterowniki trybu jądra, sterowniki User-Mode Driver Framework (UMDF) i sterowniki drukarki muszą zostać skompilowane pod kątem architektury systemu operacyjnego.Oznacza to, że jeśli system jest oparty na architekturze Arm64, sterownik również musi być oparty na architekturze Arm64. Nie ma warstwy emulacji dla jądra, więc wymagania są rygorystyczne.
Oznacza to, że aplikacja x86 może działać w trybie emulacji bez żadnych problemów, ale Jeśli potrzebujesz własnego sterownika lub sterownika innej firmy, ten konkretny element musi istnieć jako Arm64Dopóki sterownik nie zostanie przekompilowany dla Arm64, funkcje od niego zależne nie pojawią się lub będą działać nieprawidłowo.
W praktyce urządzenia i urządzenia peryferyjne będą działać tylko wtedy, gdy Twoi kierowcy są zintegrowany z systemem Windows 11 lub producent oferuje specjalne sterowniki Arm64Dotyczy to kategorii wrażliwych, takich jak oprogramowanie antywirusowe i antymalware, oprogramowanie do drukowania lub PDF, technologie wspomagające, narzędzia do obsługi dysków optycznych i oprogramowanie do wirtualizacji.
Dlatego instalując oprogramowanie lub sprzęt innych firm, Pamiętaj o pobraniu i zainstalowaniu sterownik producenta specjalnie dla komputerów ArmJeśli sterownik wymienia tylko zgodność z architekturą x86/x64 lub nie wspomina o architekturze Arm64, najprawdopodobniej nie będzie działał na komputerze z architekturą ARM.
Urządzenia oparte na architekturze ARM zyskały popularność ze względu na energooszczędność, długi czas pracy na baterii i układy NPU. IA, ale Taka wydajność nie zastępuje konieczności stosowania natywnych sterowników Arm64.Jeśli jesteś zależny od krytycznego urządzenia peryferyjnego, sprawdzać zanim producent udostępni obsługę Arm64.

Emulacja x86 i x64 na ARM i jak dostosować kompatybilność
W systemie Windows na architekturze ARM aplikacje Arm są uruchamiane natywnie, podczas gdy Aplikacje x86 i x64 działają w trybie emulacjiW systemie Windows 11 wprowadzono emulację x64, która rozszerzyła kompatybilność, a dzięki silnikowi Prism w urządzeniach Copilot+ z procesorem Snapdragon X wydajność emulowanych aplikacji znacznie wzrosła w porównaniu z poprzednimi generacjami.
Jeśli aplikacja zachowuje się dziwnie, możesz skorzystać z narzędzie do rozwiązywania problemów ze zgodnością programówKliknij prawym przyciskiem myszy plik .exe i wybierz opcję Rozwiązywanie problemów ze zgodnością, aby wypróbować zalecane ustawienia lub wybrać konkretne objawy, np. otwiera się, ale wygląda źle, wymaga uprawnień lub problem nie jest wymieniony.
Dodatkowo, na karcie Zgodność we właściwościach pliku wykonywalnego zobaczysz sekcję dla systemu Windows 10 na architekturze ARM lub Windows 11 na architekturze ARM. Z tego miejsca możesz zmień pełne ustawienia emulacji lub włącz ustawienia zaawansowane aby eksperymentować z poszczególnymi opcjami zaprojektowanymi tak, aby w przypadku wystąpienia problemów priorytetem była stabilność, a nie wydajność.
| Ustawienia emulacji | Co robi |
|---|---|
| Wyłącz pamięć podręczną aplikacji | Zmusza system do ponownej kompilacji emulowanych bloków kodu przy każdym uruchomieniueliminując pamięć podręczną w celu ograniczenia efektów ubocznych kosztem wydajności. |
| Wyłącz tryb wykonywania hybrydowego | Unikaj plików binarnych CHPE zawierających mieszankę x86 i Arm64. wymusza używanie wyłącznie plików binarnych x86, zwiększając kompatybilność z niektórymi wrażliwymi aplikacjami. |
| Dodatkowe zabezpieczenia przed światłem | Umożliwia globalne zabezpieczenia mające wpływ na zmienne metadane i może wpływać na wydajność na korzyść stabilności. |
| Ścisła zgodność z samomodyfikującym się kodem | Zapewnia, że samomodyfikujący się kod, aby działał poprawnie w emulacji, co ma zauważalny wpływ na wydajność, gdy taki wzorzec pojawia się często. |
| Wyłącz optymalizację na stronach RWX | Usuwa optymalizację wydajności dla kod na strony czytelne, zapisywalne i wykonywalne co może kolidować z niektórymi aplikacjami. |
| Wyłącz optymalizację JIT (tylko x64) | Wycofana opcja, która nie będzie już dostępny w przyszłych wersjach. |
| Wyłącz optymalizację zmiennoprzecinkową (tylko x64) | Wymuś emulację x87 za pomocą 80-bitowa pełna precyzja, zwiększając dokładność FP kosztem niższej wydajności. |
Możesz również dostosować sposób, w jaki aplikacja wykorzystuje wiele rdzeni: szybki, ścisły, bardzo ścisły lub wymuś pojedynczy rdzeńOpcje te zmieniają liczbę barier pamięci używanych do synchronizacji dostępu między wątkami; zwiększenie liczby barier redukuje drobne błędy kosztem szybkości, a tryb jednordzeniowy usuwa bariery i serializuje wątki na pojedynczym rdzeniu.
Jeżeli zmiana konkretnej opcji spowoduje zniknięcie błędu, Firma Microsoft prosi o przesłanie szczegółów na adres woafeedback@microsoft.com aby uwzględnić te opinie w przyszłych udoskonaleniach emulatora.
Sterowniki: jądro, UMDF i drukowanie
Wszystkie sterowniki systemowe muszą być zgodne z architekturą: W jądrze systemu Windows nie ma emulacjiMa to szczególne znaczenie w przypadku wirtualizacji i wszelkich scenariuszy wymagających dostępu niskiego poziomu.
Jeśli aplikacja x86 instaluje lub potrzebuje własnego sterownika, Aplikację można uruchomić w trybie emulacji, ale funkcje powiązane z tym sterownikiem nie pojawią się, dopóki nie powstanie wersja sterownika dla architektury Arm64.
Aby skompilować sterowniki Arm64 z gwarancjami, Programiści powinni postępować zgodnie z przewodnikiem WDK przeznaczonym dla architektury Arm64, w którym szczegółowo opisano przygotowanie środowiska, projektów i podpisów.
Rozszerzenia powłoki, edytory IME i inne biblioteki DLL systemu
Aplikacje próbujące połączyć się ze składnikami systemu Windows lub wstrzyknąć biblioteki DLL do procesów systemowych, które muszą skompilować te biblioteki DLL dla Arm64. To tutaj wchodzą w grę rzeczy edytory metod wprowadzania danych, technologie wspomagające i rozszerzenia powłoki, które umieszczają ikony lub menu kontekstowe.
Za każdym razem, gdy ładujesz kod wewnątrz procesów systemu Windows, dopasuj architekturę binarną do architektury systemuPonowna kompilacja tych bibliotek DLL gwarantuje, że komponent będzie działał natywnie, bez konieczności emulacji.
Najlepsze praktyki dotyczące WOW i wykrywania architektury
Typowy błąd występuje, gdy aplikacja wykryje, że jest w trybie WOW i błędnie zakłada, że system jest x64Następnie próbuje zainstalować wariant x64, sprawdza natywny widok rejestru lub zakłada, że istnieje 64-bitowa wersja .NET.
Aby uniknąć takich awarii, Nie zakładaj niczego na temat hosta podczas wykrywania WOW i minimalizuje interakcje z natywnymi komponentami systemu operacyjnego, chyba że kontrolujesz architekturę.
Jeśli chcesz sprawdzić zgodność, używa API isWow64Process2 zamiast oryginalnego isWow64ProcessPierwszy z nich poprawnie rozróżnia kombinacje procesów i hostów oraz pomaga bezproblemowo określać ścieżki kodu i widoki dziennika.
Dynamiczne generowanie kodu i łagodzenie skutków
Emulacja aplikacji desktopowych x86 generuje instrukcje Arm64 w czasie wykonywania, więc Blokowanie generowania lub modyfikowania kodu w trakcie procesu powoduje przerwanie kompatybilnościJeśli Twoja aplikacja umożliwia łagodzenie za pomocą SetProcessMitigationPolicy z ProcessDynamicCodePolicy, wyłącz ją, aby umożliwić emulację.
Jeśli podejrzewasz, że Twoja aplikacja korzysta z technik samomodyfikujących, umożliwia ścisłą zgodność z samomodyfikującym się kodem w zaawansowanych ustawieniach emulacji, wiedząc, że będzie to miało znaczący wpływ na wydajność.
Maszyny wirtualne i obsługa Hyper-V
Platforma Windows Hypervisor nie jest obsługiwana. Qualcomm 835 na platformie komputerów mobilnych, więc Hyper-V nie będzie działać na tym konkretnym sprzęcie. Microsoft wskazuje, że nadal inwestuje w te technologie w przyszłych chipsetach Qualcomm.
Znane ograniczenia: gry, program antywirusowy, faks i skaner i wiele innych
Niektóre gry nie będą działać, jeśli Sterownik zabezpieczający przed oszustwami nie ma wersji dla systemu Windows 11 na architekturze ARM.Skontaktuj się z wydawcą gry lub sprawdź zgodność na worksonwoa.com, wspólnym źródle informacji śledzącym status aplikacji i gier.
W systemie Windows 10 na platformie ARM Aplikacje x64 nie działają: Wymagana jest wersja Arm64, Arm32 lub x86. Istnieją również ograniczenia, takie jak OpenGL powyżej 1.1 oraz pakiety anty-cheat bez obsługi ARM. W systemie Windows 11 na architekturze ARM emulacja x64 rozszerza zakres obsługiwanych aplikacji.
Aplikacje dostosowujące powłokę systemu Windows, takie jak niektóre edytory IME, technologie wspomagające lub integracje z chmurą, może stwarzać problemy, jeśli nie oferują plików binarnych Arm64Ostateczna decyzja należy do twórcy danej aplikacji.
Istnieją również pakiety antywirusowe innych firm, których nie będziesz mógł zainstalować, jeśli nie są utworzone lub zaktualizowane dla ARMTymczasem Zabezpieczenia systemu Windows oferują wbudowaną ochronę na cały okres użytkowania urządzenia.
Mniej znana osobliwość: funkcja Faks i skaner Windows nie jest dostępny na komputerach z systemem Windows 11 na architekturze ARM, dlatego warto poszukać alternatyw.
Dostępne aplikacje natywne i nowy silnik Prism
Ekosystem oferuje teraz więcej natywnych kompilacji Arm64 niż kiedykolwiek wcześniej, z Microsoft 365 w najszybszym wykonaniu w aplikacjach Teams, Outlook, Word, Excel, PowerPoint, OneDrive i OneNote, a także Chrome, Slack, Spotify, Zoom, WhatsApp, Blender, Affinity Suite i DaVinci Resolve, i wiele innych.
W przypadku aplikacji bez natywnego pliku binarnego nowy moduł emulacji Prism poprawia wydajność emulowanych aplikacji na urządzeniach Copilot+ z procesorem Snapdragon X i wkrótce na większej liczbie urządzeń z systemem Windows 11.
Jeśli chcesz sprawdzić, które aplikacje i gry działają, Sprawdź listę koncertów na worksonwoa.comJest to projekt typu open source prowadzony przez stronę trzecią, do którego firma Microsoft również przekazuje dane dotyczące zgodności.
Jak przenieść aplikacje i sterowniki do Arm64
Aby utworzyć natywną wersję aplikacji, w programie Visual Studio dodaj Platforma rozwiązań ARM64 firmy Configuration Manager, kopiując konfigurację z x64 i tworząc nowe platformy projektu. Następnie kompilujemy i naprawiamy błędy.
Po utworzeniu wersji Release istnieje duże prawdopodobieństwo wystąpienia awarii Zależności, które nie oferują plików binarnych Arm64W razie potrzeby należy je aktualizować, kompilować ponownie lub zastępować.
Jeśli chcesz sprawdzić wynikowy plik binarny, użyj PowerShell i biegnij dumpbin /nagłówki w pliku .exe, aby upewnić się, że nagłówek wskazuje maszynę AA64 (ARM64). To szybka kontrola, aby upewnić się, że nie używasz niewłaściwej wersji.
Testowanie i debugowanie są łatwiejsze, jeśli pracujesz na komputerze z procesorem Arm. Jeśli rozwijasz system z architektury x86/x64, Korzystanie ze zdalnego debugowania na urządzeniu z systemem Windows lub maszynie wirtualnej na platformie ARMMicrosoft dokumentuje strategie w swoim przewodniku debugowania ARM.
Jako zalecane warunki wstępne użyj Visual Studio 2022 w wersji 17.4 lub nowszej z natywną obsługą Arm64 (wersja zapoznawcza VS 17.10 wprowadza ulepszenia), a jeśli wolisz, LLVM Clang 12+ do kompilacji i linkowania. Natywny zestaw narzędzi oferuje lepszą wydajność w porównaniu z wersjami emulowanymi.
Jeśli chodzi o frameworki, są one obsługiwane .NET 7, .NET 6 LTS, .NET 5.0.8+ i .NET Framework 4.8.1Można również kompilować C++ za pomocą clang-cl, co zapewnia zgodność ABI z MSVC.
Zależności, Arm64EC i pomoc zewnętrzna
Gdy biblioteka blokuje Ci możliwość kompilacji, skompiluj go wewnętrznie dla Arm64 Jeśli jest to Twój własny program, poproś firmę zewnętrzną o nowszą wersję, jeśli jest komercyjna, lub poszukaj kompatybilnych alternatyw, jeśli jest dostępna na zasadzie open source.
Przed zmianą stosów sprawdź, czy vcpkg ma teraz zaktualizowaną wersję z Arm64, a jeśli nie, rozważ wsparcie techniczne. Wiele społeczności doceniłoby taką pomoc.
Jako strategię pośrednią, Arm64EC umożliwia mieszanie skompilowanej ponownie aplikacji z zależnościami x64 które działają w trybie emulacji w tym samym procesie. Nie można ich łączyć w odwrotny sposób (nie można używać czystych zależności Arm64 w procesie x64).
Jeśli potrzebujesz wsparcia, Linaro współpracuje z firmami i społecznościami, aby umożliwić tworzenie oprogramowania na architekturę ARMAby uzyskać pomoc dotyczącą brakujących pakietów Windows-on-ARM, możesz złożyć wniosek w dziale obsługi klienta.
Testowanie na sprzęcie lub maszynie wirtualnej, CI/CD i wielowątkowość w emulacji
Aby zapewnić jakość, kluczowe jest, aby przebieg testu przebiega na architekturze Arm64:rzeczywisty sprzęt z systemem Windows na procesorze ARM lub kompatybilnej maszynie wirtualnej, dzięki czemu wyniki odzwierciedlają rzeczywistość użytkownika końcowego.
Tworzenie i testowanie na tej samej maszynie upraszcza życie, choć można też Rozszerz swoją infrastrukturę kompilacji, aby generować pliki binarne obsługujące wiele platform a następnie wdrożyć je na dedykowanym stanowisku testowym Arm64.
Jeśli występują rzadkie problemy z synchronizacją w aplikacjach wielowątkowych, poeksperymentuj z ścisłe lub bardzo ścisłe tryby wielordzeniowelub wymuś tryb jednordzeniowy, aby sprawdzić, czy problem zniknie. To przydatna technika zawężania częstotliwości występowania wyścigów.
Aby szybko skonfigurować środowisko testowe, Azure oferuje szybki start aby utworzyć maszynę wirtualną Windows na ARMTo wygodne rozwiązanie w przypadku ciągłej integracji (CI) lub ręcznego testowania, gdy nie dysponujesz sprzętem fizycznym.
Instalowanie sterowników systemu Windows i pamięci masowej: x86/x64 kontra ARM
Jeśli instalujesz system Windows 11 lub 10 na komputerze Intel jeśli nie pojawiają się żadne jednostki, może być konieczne Załaduj sterownik Intel Rapid Storage Technology (IRST) podczas działania kreatora lub wyłącz Intel VMD. Dotyczy to tylko platform x86/x64, a nie urządzeń ARM.
Typowa procedura z IRST składa się z: pobierz pakiet ze strony pomocy technicznej producenta, wyodrębnij go do pamięci USB i użyj opcji Załaduj sterownik na ekranie, na którym pojawi się pytanie o miejsce instalacji systemu Windows, tak aby instalator wykrył dyski.
Alternatywnie jest to możliwe wyłącz urządzenie Intel Volume Management Device (VMD) BIOSWejdź za pomocą F2, przełącz się do trybu zaawansowanego za pomocą F7, przejdź do sekcji VMD i wyłącz sterownik; zapisz za pomocą F10. Nomenklatura może się nieznacznie różnić w zależności od modelu i interfejsu UEFI.
W modelach z procesorem Intel Lunar Lake, Ręczna instalacja sterowników IRST nie jest obsługiwanaZaleca się używanie systemu Windows 11 24H2 lub nowszego i przeprowadzenie standardowej instalacji bez ładowania sterowników.
Jeśli jednak Twój komputer jest oparty na architekturze ARM (np. z procesorem Qualcomm), ASUS wskazuje na użycie Odzyskiwanie w chmurze z MyASUS na WinRE aby ponownie zainstalować system zamiast tradycyjnego przepływu z IRST, który nie ma zastosowania do tej architektury.
Pisarz z pasją zajmujący się światem bajtów i technologii w ogóle. Uwielbiam dzielić się swoją wiedzą poprzez pisanie i właśnie to będę robić na tym blogu, pokazywać Ci wszystkie najciekawsze rzeczy o gadżetach, oprogramowaniu, sprzęcie, trendach technologicznych i nie tylko. Moim celem jest pomóc Ci poruszać się po cyfrowym świecie w prosty i zabawny sposób.

