使用以下问题和答案更好地了解对 Windows 上运行的基于 Arm 的设备的支持。
Arm 上的 Windows 常见问题解答
是否需要创建 Windows 应用的 Arm 版本?
基于 Arm 的设备越来越受欢迎。 虽然 Windows 支持使用基于 x64 或 x86 的体系结构的应用进行仿真,但提供 Windows 应用的 Arm 本机版本可以提高性能,并在使用基于 Arm 的设备时为客户提供最佳体验。
当 x64 和 x86 均通过 Windows 11 上的仿真支持时,为何将应用更新为 Arm?
虽然客户能够在 Arm 设备上使用基于 x64 或 x86 的应用,但仿真会产生性能开销。 将客户视为 Windows 应用的 Arm 本机版本,以获得最佳性能、响应能力和优化 Arm 设备上的电池使用时间。
如何将 Arm64 本机配置添加到 Windows 应用?
仿真是否支持驱动程序? 或者,我是否必须向应用中使用的任何驱动程序添加 Arm64 本机支持?
在所有情况下,内核模式驱动程序和用户模式打印驱动程序必须构建为本机 Arm64 二进制文件才能在 Arm64 设备上工作。 此外,不能执行 x86 或 x64 安装程序在 Arm64 设备上安装 Arm64 驱动程序。 请参阅使用 WDK 构建 Arm64 驱动程序。
Visual Studio 是否适用于 Arm?
Visual Studio 和 Visual Studio Code 都提供 Arm 本机版本供你安装。
如何在 Arm64 上测试和调试?
请参阅向 Windows 应用添加 Arm 支持 - 测试和调试。 若要进行测试,需要在 Arm 设备上使用 Windows,例如 Windows 开发工具包 2023,也可以运行 Windows 11 Arm64 虚拟机。
如果我被第三方依赖项阻止构建应用的 Arm 本机版本怎么办?
当 Windows 应用依赖于尚未更新 Arm 的第三方依赖项时,可通过几种方法解决这种情况。 我们首先建议联系依赖项的所有者,询问是否有计划更新依赖项以支持 Arm。 还可以检查 NuGet 或 vcpkg 等资源,或者联系 Arm 开源社区,帮助更新依赖项(如 Linaro)。 你可以自行重写依赖项 - Microsoft 的“应用保证计划”可能能够提供帮助。 或者,你可能想要使用 Arm64EC 编写应用,这样便可混合 x64 和 Arm64 代码,实现部分 Arm 本机实现,着重于优化适用于 Arm 的应用最重要的方面。
如何更新 C++ Windows 应用以支持 Arm 设备?
应使用哪些 Program Files 文件夹安装 ARM64 应用程序?
你可能会注意到 Windows 设备上用来安装和存储不同应用程序文件类型的以下目录。
C:\Program Files
:此目录适用于 x64 应用程序、Arm64 应用程序和 Arm64X 应用程序。 详细了解如何将应用程序移植到 Arm64 或者构建 Arm64X 二进制文件。C:\Program Files (x86)
:此目录适用于 x86 应用程序。 详细了解 Arm 上的 x86 仿真工作原理。C:\Program Files (Arm)
:此目录适用于 32 位 Arm 应用程序,这些应用程序在未来版本的 Windows 中不再受支持。
基于 ARM 的 Windows 虚拟机常见问题解答
如何创建 Windows 11 Arm64 虚拟机 (VM)?
有关如何在 Azure 上使用基于 Ampere Altra Arm 的处理器创建和部署 Windows 11 Arm64 VM 的帮助,请参阅快速入门:在 Azure 门户中创建基于 ARM 的 Windows 虚拟机。 还可以使用 Hyper-V 通过 Arm 设备上的 Windows 在本地创建 Arm VM 上的 Windows。
是否可以在 Windows 11 Arm64 设备上使用 Hyper-V 托管 Windows 11 虚拟机?
可以。 最简单的方法是从 Windows 预览体验成员预览版下载 的 Arm Insider Preview VHDX 上下载 Windows 11,并使用它来创建 VM。
是否有任何训练可用于向 Windows 应用添加 Arm 支持,以及运行 VM 进行测试和调试?
是否支持在基于 ARM 的 Hyper-V 虚拟机上使用 Windows Performance Recorder 工具进行 CPU 采样?
是的,但该功能目前仅在Windows Insider Preview Canary 渠道中可用。 如果愿意在 Canary 渠道中注册托管虚拟机的物理 ARM 设备,则虚拟机支持 CPU 采样;物理 ARM 设备上现已支持此功能。 示例用法:wpr -start cpu
。