如果你已經加入了一支 窗戶11 在 ARM 上,如果你正為無法正常工作的外圍設備而苦苦掙扎,那麼你並不孤單: 驅動程式是關鍵部分,必須適應 Arm64雖然許多 x86 和 x64 應用程式可以透過模擬正常運行,但係統驅動程式不會經過該層,因此了解遊戲規則是個好主意。
除了驅動程式之外,Arm 支援還結合了以下幾個要素: 可配置的模擬、最佳開發實務、已知限制和診斷工具在本指南中,我們彙編了您需要了解的所有內容,以確定與裝置或驅動程式相關的應用程式失敗的原因、如何微調模擬以及開發人員需要做什麼才能為 Arm64 進行本機編譯。
Windows 11 ARM 中的驅動程式發生了什麼情況?
En Windows 在 ARM 上, 所有核心模式驅動程式、使用者模式驅動程式框架 (UMDF) 驅動程式和列印驅動程式都必須針對作業系統體系結構進行編譯。也就是說,如果系統是 Arm64,驅動程式也必須是 Arm64;核心沒有模擬層,因此要求很嚴格。
這意味著 x86 應用程式可以透過模擬運行而不會出現任何問題,但是 如果您需要自己的或第三方驅動程序,則該特定部分必須作為 Arm64 存在在為 Arm64 重新編譯驅動程式之前,依賴它的功能將不會出現或將會失敗。
實際上,設備和周邊設備只有在以下情況下才能運作: 你的司機 整合到 Windows 11 或者製造商提供特定的 Arm64 驅動程式。這適用於敏感類別,例如防毒和反惡意軟體、列印軟體或 PDF、輔助科技、光碟實用程式和虛擬化軟體。
因此,當您安裝第三方軟體或硬體時, 確保下載並安裝 製造商的驅動程式 專為 Arm 電腦設計如果驅動程式僅列出 x86/x64 相容性或未提及 Arm64,則它很可能無法在基於 ARM 的電腦上執行。
ARM 驅動的設備因其能源效率、電池壽命和 NPU 而變得流行 IA但 這種效率並不能取代原生 Arm64 驅動程式的需求。。如果你依賴一個關鍵的外圍設備, 查 在其製造商發布對 Arm64 的支援之前。

ARM 上的 x86 和 x64 模擬以及如何調整相容性
ARM 上的 Windows 原生運行 Arm 應用程序,而 x86 和 x64 應用程式使用模擬運行隨著 Windows 11 的推出,x64 模擬的出現擴大了相容性,而藉助搭載 Snapdragon X 的 Copilot+ 裝置上的 Prism 引擎,模擬應用程式的效能與前幾代相比得到了顯著提升。
如果某個應用程式行為異常,您可以使用 程式相容性疑難排解右鍵單擊 .exe 並選擇相容性疑難排解以嘗試建議的設定或選擇特定症狀,例如它可以開啟但看起來不好、需要權限或未列出問題。
此外,在可執行檔案屬性的「相容性」標籤中,您將看到「Windows 10 on ARM」或「Windows 11 on ARM」部分。您可以從那裡 更改完整模擬設定或啟用進階設置 當問題出現時,嘗試優先考慮穩定性而不是效能的個別選項。
| 仿真設定 | 有什麼作用 |
|---|---|
| 禁用應用程式緩存 | 強制系統在每次執行時重新編譯模擬的程式碼區塊,消除快取以減少副作用,但會以效能為代價。 |
| 停用混合執行模式 | 避免使用混合 x86 和 Arm64 的 CHPE 二進位檔案 強制僅使用 x86 二進位文件,增加與一些敏感應用程式的相容性。 |
| 額外的光保護 | 啟用影響易失性元資料的全域保護措施, 可以影響性能,有利於穩定. |
| 與自修改程式碼的嚴格相容性 | 確保 自修改程式碼才能正常運作 在模擬中,當此模式頻繁出現時,會對效能產生明顯的影響。 |
| 停用 RWX 頁面的最佳化 | 刪除了以下效能優化 程式碼分為可讀、可寫入和可執行頁面 這可能會與某些應用程式發生衝突。 |
| 停用 JIT 最佳化(僅限 x64) | 已棄用的選項 將不再可用 在將來的版本中。 |
| 停用浮點最佳化(僅限 x64) | 強制模擬 x87 80位全精度,以降低效能為代價來提高FP的準確性。 |
您也可以調整應用程式使用多個核心的方式: 快速、嚴格、非常嚴格或強制單核這些選項改變了用於同步執行緒間存取的記憶體屏障的數量;增加屏障的數量可以減少細微的錯誤,但會犧牲速度,而單核心模式可以消除屏障並將執行緒序列化到單一核心上。
如果更改特定選項導致錯誤消失, Microsoft 要求將詳細資訊發送至 woafeedback@microsoft.com 將這些回饋整合到模擬器的未來改進中。
驅動程式:核心、UMDF 和列印
所有系統驅動程式必須與體系結構相符: Windows 核心中沒有模擬這對虛擬化和任何需要低階存取的場景都有特別的影響。
如果 x86 應用程式 安裝或需要自己的驅動程式, 應用程式本身可以在模擬下啟動,但與該驅動程式相關的功能只有在 Arm64 版本的驅動程式出現後才會出現。
為了保證編譯 Arm64 驅動程序, 開發人員應遵循 Arm64 特定的 WDK 指南,其中詳細介紹了環境、項目和簽名的準備工作。
Shell 擴充、IME 和其他系統 DLL
嘗試連結到 Windows 元件或 將 DLL 注入系統程序必須為 Arm64 編譯這些 DLL. 這就是事情發揮作用的地方 輸入法編輯器、輔助技術和放置圖示或上下文選單的 shell 擴充。
每當您在 Windows 進程中載入程式碼時, 將二進位架構與系統架構進行匹配重新編譯這些 DLL 可確保元件無需依賴模擬即可本地運行。
WOW 和架構檢測的最佳實踐
當應用程式偵測到它處於 WOW 狀態時,會出現常見的錯誤模式,並且 錯誤地認為系統是 x64. 從那裡它嘗試安裝其 x64 變體,查看本機註冊表視圖,或假定有一個 64 位元 .NET。
為了避免此類故障, 偵測WOW時不要對主機做假設 並儘量減少與本機作業系統元件的交互,除非您控制架構。
如果您需要檢查相容性, 使用 isWow64Process2 API 而不是原始的 isWow64Process第一個正確區分進程和主機組合,並有助於確定程式碼路徑和日誌視圖而不會造成混淆。
動態程式碼產生和緩解措施
模擬 x86 桌面應用程式在運行時會產生 Arm64 指令,因此 阻止進程中的程式碼產生或修改會破壞相容性如果您的應用程式使用 SetProcessMitigationPolicy 和 ProcessDynamicCodePolicy 啟用緩解,請停用它以允許模擬。
如果你懷疑你的應用程式使用了自我修改技術, 實現與自修改程式碼的嚴格相容性 在高階仿真設定中,知道它會顯著影響效能。
虛擬機器和 Hyper-V 支持
不支援 Windows Hypervisor 平台。 行動PC平台上的Qualcomm 835因此 Hyper-V 無法在該特定硬體上運作。微軟表示,將繼續投資這些技術,以用於未來的高通晶片組。
已知限制:遊戲、防毒、傳真和掃描器等
如果發生以下情況,某些遊戲將無法運行 您的反作弊驅動程式沒有適用於 ARM 上的 Windows 11 的版本。請與遊戲發行商聯繫或在 worksonwoa.com(一個追蹤應用程式和遊戲狀態的協作資源)上檢查相容性。
在 ARM 上的 Windows 10 上, x64 應用程式無法運行:您需要 Arm64、Arm32 或 x86 版本。此外,還有一些限制,例如 OpenGL 1.1 以上版本以及不支援 ARM 的反作弊軟體包。在 ARM 上的 Windows 11 上,x64 模擬擴展了受支援的應用程式範圍。
自訂 Windows Shell 的應用程式(例如某些 IME、輔助技術或雲端整合), 如果不提供 Arm64 二進位文件,可能會出現問題最終決定權在於每個應用程式的開發者。
還有一些第三方防毒套件,除非 為 ARM 建立或更新同時,Windows 安全中心為您的裝置的整個使用壽命提供內建保護。
一個鮮為人知的怪現象: 功能 傳真和掃描儀 Windows 不可用 在裝有 Windows 11 on ARM 的電腦上,因此建議尋找替代方案。
提供原生應用程式和全新 Prism 引擎
該生態系統現在提供比以往更多的原生 Arm64 版本,其中包括 微軟365 以最快的速度執行 在 Teams、Outlook、Word、Excel、PowerPoint、OneDrive 和 OneNote,以及 Chrome、Slack、Spotify、Zoom 中, Whatsapp、Blender、Affinity Suite 和 DaVinci Resolve 等等。
對於沒有本機二進位的應用程序,新的模擬引擎 Prism 提高了模擬應用程式的效能 在搭載 Snapdragon X 的 Copilot+ 裝置上,並將登陸更多 Windows 11 裝置。
如果你想檢查哪些應用程式和遊戲正在運行, 查看 worksonwoa.com 上的直播列表。它是一個第三方開源項目,微軟也為其貢獻相容性資料。
如何將應用程式和驅動程式移植到 Arm64
若要建立應用程式的本機版本,請在 Visual Studio 中新增 配置管理器中的 ARM64 解決方案平台,從 x64 複製配置並建立新的專案平台。然後,編譯並修復錯誤。
一旦在 Release 中構建,崩潰可能來自 不提供 Arm64 二進位檔案的依賴項它們將需要根據需要進行更新、重新編譯或替換。
如果要檢查產生的二進位文件,請使用 PowerShell的 並運行 dumpbin/headers 在 .exe 上確認標頭是否指示 AA64 機器(ARM64)。這是一個快速檢查,可確保您沒有執行錯誤的版本。
如果您在 Arm 機器上工作,測試和調試會更容易。如果您從 x86/x64 進行開發, 使用遠端偵錯來存取 ARM 上的 Windows 裝置或 VM微軟在其 Arm 調試指南中記錄了策略。
作為建議的先決條件,使用 具有本機 Arm2022 支援的 Visual Studio 17.4 v64 或更高版本 (VS 17.10 預覽版新增了改進),如果您願意,也可以使用 LLVM Clang 12+ 進行編譯和連結。與模擬版本相比,原生工具鏈提供了更卓越的效能。
至於框架,它們受到支持 .NET 7、.NET 6 LTS、.NET 5.0.8+ 和 .NET Framework 4.8.1您也可以使用 clang-cl 編譯 C++,它與 MSVC 保持 ABI 相容性。
依賴項、Arm64EC 和外部協助
當一個函式庫阻止你編譯時, 針對 Arm64 進行內部重新編譯 如果它是您自己的,如果它是商業的,請向第三方索取新版本,如果它是開源的,請尋找相容的替代品。
在更換堆疊之前,請檢查 vcpkg 現在有更新版本 不支援 Arm64,如果不支持,請考慮貢獻支持。許多社區都會感激您的幫助。
作為一種中間策略, Arm64EC 讓您將重新編譯的應用程式與 x64 依賴項混合 在同一進程中以模擬方式運作。反過來組合它們是無效的(您不能在 x64 進程中使用純 Arm64 依賴項)。
如果您需要支持, Linaro 與公司和社群合作,在 ARM 上啟用軟體您可以在他們的服務台上提出請求,以探索對缺少的 Windows-on-ARM 套件的支援。
在硬體或虛擬機器上進行測試,在模擬中進行 CI/CD 和多執行緒測試
為了確保質量,關鍵是 測試通過後在 Arm64 架構上執行:在 ARM 或相容 VM 上執行 Windows 的真實硬件,以便結果反映最終使用者的實際情況。
在同一台機器上建造和測試可以簡化生活,儘管你也可以 擴展您的建置基礎架構以產生跨平台二進位文件 然後將它們部署在專用的 Arm64 測試平台上。
如果您在使用多執行緒應用程式時遇到罕見的同步問題,請嘗試 嚴格或非常嚴格的多核心模式或強制進入單核心模式,看看問題是否消失。這是一種縮小競爭條件的有效技巧。
為了快速設定測試環境, Azure 提供了 快速入門 在 ARM 上建立 Windows VM當您沒有可用的實體硬體時,它是進行 CI 或手動測試的便捷途徑。
安裝 Windows 和儲存驅動程式:x86/x64 與 ARM
如果您在電腦上安裝 Windows 11 或 10 Intel英特爾 沒有出現單位,你可能需要 在嚮導過程中載入英特爾快速儲存技術 (IRST) 驅動程式 或禁用 Intel VMD。這僅適用於 x86/x64 平台,不適用於 ARM 裝置。
IRST 的典型流程包括 從製造商的支援頁面下載軟體包,將其提取到內存中 USB 並使用螢幕上詢問您要在何處安裝 Windows 的載入驅動程式選項,以便安裝程式偵測磁碟。
作為替代方案,可以 停用英特爾捲管理設備(VMD) 的BIOS按 F2 鍵進入,按 F7 鍵切換到進階模式,進入 VMD 部分並停用驅動程式;按 F10 鍵儲存。不同型號和 UEFI 的命名規則可能略有不同。
在配備 Intel Lunar Lake 的型號上, 不支援手動安裝 IRST 驅動程式建議使用 Windows 11 24H2 或更高版本,並進行標準安裝,無需載入驅動程式。
但是,如果你的電腦是 ARM 的(例如,使用 Qualcomm CPU), ASUS 表示使用 雲端恢復 來自 MyASUS 溫RE 重新安裝系統,而不是使用 IRST 的傳統流程,這並不適用於此架構。
對字節世界和一般技術充滿熱情的作家。我喜歡透過寫作分享我的知識,這就是我在這個部落格中要做的,向您展示有關小工具、軟體、硬體、技術趨勢等的所有最有趣的事情。我的目標是幫助您以簡單有趣的方式暢遊數位世界。

