You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
* Slight tweaks to Windows 10 on ARM intro
* Adding QC and ARM reference links
* Updating blog link from preview to official release
* Rearrange links on homepage
* Adding Developer Kit link
* Add ARM64 EC doc
* Add to TOC
* Add local author metadata
* Remove extra text
* fix sdk link, reorg
* update vs link
* Update with get started instructions
* Update intro and prereqs
* Correct SDK text
* Update sdk text
* Update arm64ec.md
Rely more on the blog for now
* General text updates and date refreshes
* Update apps-on-arm-troubleshooting-x86.md
Only link to ARM64EC once in the beginning of the x86 troubleshooting, since it's just a suggested idea
Co-authored-by: Marc Sweetgall <[email protected]>
Copy file name to clipboardexpand all lines: landing/arm-docs/index.yml
+17-16
Original file line number
Diff line number
Diff line change
@@ -1,29 +1,28 @@
1
1
### YamlMime:Landing
2
2
3
-
title: Windows 10 on ARM documentation# < 60 chars
4
-
summary: Windows 10 runs on PCs powered by ARM processors. This page provides the information for you to learn more about the platform and get started developing apps. # < 160 chars
3
+
title: Windows on ARM documentation
4
+
summary: Windows runs on PCs powered by ARM processors. This page provides the information for you to learn more about the platform and get started developing apps. # < 160 chars
5
5
6
6
metadata:
7
-
title: Windows 10 on ARM documentation# Required; page title displayed in search results. Include the brand. < 60 chars.
8
-
description: This page provides the information for you to get started developing ARM64 win32 and UWP apps.# Required; article description that is displayed in search results. < 160 chars.
9
-
ms.service: guidance #Required; service per approved list. service slug assigned to your service by ACOM.
10
-
ms.topic: landing-page# Required
11
-
author: hickeys #Required; your GitHub user alias, with correct capitalization.
12
-
ms.author: hickeys #Required; microsoft alias of author; optional team alias.
13
-
ms.date: 05/08/2018 #Required; mm/dd/yyyy format.
7
+
title: Windows on ARM documentation
8
+
description: This page provides the information for you to get started developing ARM64 win32 and UWP apps.
Copy file name to clipboardexpand all lines: windows-apps-src/porting/apps-on-arm-program-compat-troubleshooter.md
+10-7
Original file line number
Diff line number
Diff line change
@@ -1,27 +1,30 @@
1
1
---
2
2
title: Program Compatibility Troubleshooter on ARM
3
-
4
3
description: Guidance for adjusting compatibility settings if your app isn't working correctly on ARM
5
-
ms.date: 02/15/2018
4
+
ms.date: 06/25/2021
6
5
ms.topic: article
7
-
keywords: windows 10 s, always connected, compatibility troubleshooter, windows on ARM
6
+
keywords: windows, always connected, compatibility troubleshooter, windows on ARM
8
7
ms.localizationpriority: medium
9
8
---
9
+
10
10
# Program Compatibility Troubleshooter on ARM
11
-
Emulation to support x86 apps is a new feature created for Windows 10 on ARM64. Sometimes the emulation performs optimizations that don't result in the best experience. You can use the Program Compatibility Troubleshooter to toggle emulation settings for your x86 app, reducing the default optimizations and potentially increasing compatibility.
11
+
12
+
Emulation to support x86 apps is a new feature created for Windows on ARM64. Sometimes the emulation performs optimizations that don't result in the best experience. You can use the Program Compatibility Troubleshooter to toggle emulation settings for your x86 app, reducing the default optimizations and potentially increasing compatibility.
12
13
13
14
## Start the Program Compatibility Troubleshooter
14
-
You start the [Program Compatibility Troubleshooter](https://support.microsoft.com/help/15078/windows-make-older-programs-compatible) manually in the same way on any Windows 10 PC: right-click an executable (.exe) file and select **Troubleshoot compatibility**. This screen appears.
15
+
16
+
You start the [Program Compatibility Troubleshooter](https://support.microsoft.com/help/15078/windows-make-older-programs-compatible) manually in the same way on any Windows PC: right-click an executable (.exe) file and select **Troubleshoot compatibility**. This screen appears.
15
17
16
18

17
19
18
20
If you click on **Troubleshoot program** you will be presented with the following options.
19
21
20
22

21
23
22
-
All options enable the settings that are applicable and applied on all Windows 10 Desktop PCs. In addition, the first, second, and fourth options apply the [Disable application cache](#disable-app-cache) and [Disable hybrid execution mode](#disable-hybrid-exec-mode) emulation settings.
24
+
All options enable the settings that are applicable and applied on Windows Desktop PCs. In addition, the first, second, and fourth options apply the [Disable application cache](#disable-app-cache) and [Disable hybrid execution mode](#disable-hybrid-exec-mode) emulation settings.
23
25
24
26
## Toggling emulation settings
27
+
25
28
> [!WARNING]
26
29
> Changing emulation settings may result in your application unexpectedly crashing or not launching at all.
27
30
@@ -52,4 +55,4 @@ You can also select multi-core settings, as shown here.
52
55
53
56
These settings change the number of memory barriers used to synchronize memory accesses between cores in apps during emulation. **Fast** is the default mode, but the **strict** and **very strict** options will increase the number of barriers. This slows down the app, but reduces the risk of app errors. The **single-core** option removes all barriers but forces all app threads to run on a single core.
54
57
55
-
If changing a specific setting resolves your issue, please email *[email protected]* with details, so that we may incorporate your feedback.
58
+
If changing a specific setting resolves your issue, please email *[email protected]* with details, so that we may incorporate your feedback.
Copy file name to clipboardexpand all lines: windows-apps-src/porting/apps-on-arm-troubleshooting-arm32.md
+8-4
Original file line number
Diff line number
Diff line change
@@ -1,9 +1,9 @@
1
1
---
2
2
title: Troubleshooting ARM32 UWP apps
3
3
description: Common issues with ARM32 apps when running on ARM, and how to fix them.
4
-
ms.date: 01/03/2019
4
+
ms.date: 06/25/2021
5
5
ms.topic: article
6
-
keywords: windows 10 s, always connected, ARM32 apps on ARM, windows 10 on ARM, troubleshooting
6
+
keywords: windows, always connected, ARM32 apps on ARM, windows 10 on ARM, troubleshooting
7
7
ms.localizationpriority: medium
8
8
---
9
9
@@ -14,14 +14,16 @@ If your ARM32 or ARM64 UWP app isn't working correctly on ARM, here's some guida
14
14
>[!NOTE]
15
15
> To build your UWP application to natively target the ARM64 platform, you must have Visual Studio 2017 version 15.9 or later, or Visual Studio 2019. For more information, see [this blog post](https://blogs.windows.com/buildingapps/2018/11/15/official-support-for-windows-10-on-arm-development).
16
16
17
-
18
17
## Common issues
18
+
19
19
Here are some common issues to keep in mind when troubleshooting ARM32 and ARM64 apps.
20
20
21
21
### Using Windows 10 Mobile-only APIs on ARM-based processors
22
+
22
23
ARM apps may run into problems when using mobile-only APIs (for example, **HardwareButtons**). To mitigate this, you can dynamically detect whether your app is running on Windows 10 Mobile before calling these APIs. Follow the guidance in the blog post, [Dynamically detecting features with API contracts](https://blogs.windows.com/buildingapps/2015/09/15/dynamically-detecting-features-with-api-contracts-10-by-10/).
23
24
24
25
### Including dependencies not supported by UWP apps
26
+
25
27
Universal Windows Platform (UWP) apps that aren't properly built with Visual Studio and the UWP SDK may have dependencies on OS components that aren't available to ARM apps running on an ARM64 system. Examples of these dependencies include:
26
28
27
29
- Expecting parts of the .NET Framework to be available.
@@ -32,10 +34,12 @@ These issues can be resolved by: removing the unavailable dependencies and rebui
32
34
For more info on .NET APIs available for UWP apps, see [.NET for UWP apps](/dotnet/api/index?view=dotnet-uwp-10.0&preserve-view=true)
33
35
34
36
### Compiling an app with an older version of Visual Studio and SDK
37
+
35
38
If you're running into issues, be sure to use the latest versions of Microsoft Visual Studio and the Windows SDK to compile your app. Apps compiled with an earlier version of Visual Studio and the SDK may have issues that have been fixed in later versions.
36
39
37
40
## Debugging
41
+
38
42
You can use existing tools for developing apps for the ARM platform. Here are some helpful resources.
39
43
40
44
- Visual Studio 15.5 Preview 1 and later supports running ARM32 apps by using Universal Authentication mode. This automatically bootstraps the necessary remote debugging tools.
41
-
- See [Debugging on ARM64](/windows-hardware/drivers/debugger/debugging-arm64) to learn more about tools and strategies for debugging on ARM.
45
+
- See [Debugging on ARM64](/windows-hardware/drivers/debugger/debugging-arm64) to learn more about tools and strategies for debugging on ARM.
Copy file name to clipboardexpand all lines: windows-apps-src/porting/apps-on-arm-troubleshooting-x86.md
+14-6
Original file line number
Diff line number
Diff line change
@@ -1,14 +1,16 @@
1
1
---
2
2
title: Troubleshooting x86 desktop apps
3
3
description: Learn how to troubleshoot and fix common issues with an x86 desktop app running on ARM64 including information about drivers, shell extensions, and debugging.
4
-
ms.date: 05/09/2018
4
+
ms.date: 06/25/2021
5
5
ms.topic: article
6
-
keywords: windows 10 s, always connected, x86 emulation on ARM, troubleshooting
6
+
keywords: windows, x86, ARM64, always connected, x86 emulation on ARM, troubleshooting
7
7
ms.localizationpriority: medium
8
8
---
9
+
9
10
# Troubleshooting x86 desktop apps
11
+
10
12
>[!IMPORTANT]
11
-
> The ARM64 SDK is now available as part of Visual Studio 2017 15.9 or Visual Studio 2019. We recommend that you recompile your app to ARM64 so that your app runs at full native speed. For more info, see the [Visual Studio support for Windows 10 on ARM development](https://blogs.windows.com/windowsdeveloper/2018/11/15/official-support-for-windows-10-on-arm-development/) blog post.
13
+
> With Visual Studio 2017 or later, it is possible recompile your app to ARM64 or ARM64EC so that your app runs at full native speed. For more info about compiling as ARM64, see the blog post: [Official support for Windows 10 on ARM development](https://blogs.windows.com/buildingapps/2018/11/15/official-support-for-windows-10-on-arm-development). For information about ARM64EC, see [Announcing ARM64EC: Building Native and Interoperable Apps for Windows 11 on ARM](https://aka.ms/arm64ecannounceblog).
12
14
13
15
If an x86 desktop app doesn't work the way it does on an x86 machine, here's some guidance to help you troubleshoot.
14
16
@@ -20,6 +22,7 @@ If an x86 desktop app doesn't work the way it does on an x86 machine, here's som
20
22
| Your x86 app does not work as expected. | Try using the Compatibility Troubleshooter by following guidance from [Program Compatibility Troubleshooter on ARM](apps-on-arm-program-compat-troubleshooter.md). For some other troubleshooting steps, see the [Troubleshooting x86 apps on ARM](apps-on-arm-troubleshooting-x86.md) article. |
21
23
22
24
## Best practices for WOW
25
+
23
26
One common problem occurs when an app discovers that it's running under WOW and then assumes that it is on an x64 system. Having made this assumption, the app may do the following:
24
27
25
28
- Try to install the x64 version of itself, which isn't supported on ARM.
@@ -30,19 +33,24 @@ Generally, an app should not make assumptions about the host system when it is d
30
33
31
34
An app may place registry keys under the native registry view, or perform functions based on the presence of WOW. The original **IsWow64Process** indicates only whether the app is running on an x64 machine. Apps should now use [IsWow64Process2](/windows/desktop/api/wow64apiset/nf-wow64apiset-iswow64process2) to determine whether they're running on a system with WOW support.
32
35
33
-
## Drivers
36
+
## Drivers
37
+
34
38
All kernel-mode drivers, [User-Mode Driver Framework (UMDF)](/windows-hardware/drivers/wdf/overview-of-the-umdf) drivers, and print drivers must be compiled to match the architecture of the OS. If an x86 app has a driver, then that driver must be recompiled for ARM64. The x86 app may run fine under emulation however, its driver will need to be recompiled for ARM64 and any app experience that depends on the driver will not be available. For more info about compiling your driver for ARM64, see [Building ARM64 Drivers with the WDK](/windows-hardware/drivers/develop/building-arm64-drivers).
35
39
36
-
## Shell extensions
37
-
Apps that try to hook Windows components or load their DLLs into Windows processes will need to recompile those DLLs to match the architecture of the system; i.e. ARM64. Typically, these are used by input method editors (IMEs), assistive technologies, and shell extension apps (for example, to show cloud storage icons in Explorer or a right click Context menu). To learn how to recompile your apps or DLLs to ARM64, see the [Early preview of Visual Studio support for Windows 10 on ARM development](https://blogs.windows.com/buildingapps/2018/05/08/visual-studio-support-for-windows-10-on-arm-development/) blog post.
40
+
## Shell extensions
41
+
42
+
Apps that try to hook Windows components or load their DLLs into Windows processes will need to recompile those DLLs to match the architecture of the system; i.e. ARM64. Typically, these are used by input method editors (IMEs), assistive technologies, and shell extension apps (for example, to show cloud storage icons in Explorer or a right click Context menu). To learn how to recompile your apps or DLLs to ARM64, see the [Early preview of Visual Studio support for Windows 10 on ARM development](https://blogs.windows.com/buildingapps/2018/05/08/visual-studio-support-for-windows-10-on-arm-development/) blog post.
38
43
39
44
## Debugging
45
+
40
46
To investigate your app's behavior in more depth, see [Debugging on ARM](/windows-hardware/drivers/debugger/debugging-arm64) to learn more about tools and strategies for debugging on ARM.
41
47
42
48
## Virtual Machines
49
+
43
50
The Windows Hypervisor platform is not supported on the Qualcomm Snapdragon 835 Mobile PC Platform. Hence, running virtual machines using Hyper-V will not work. We continue to make investments in these technologies on future Qualcomm chipsets.
44
51
45
52
## Dynamic Code Generation
53
+
46
54
X86 desktop apps are emulated on ARM64 by the system generating ARM64 instructions at runtime. This means if an x86 desktop app prevents dynamic code generation or modification in its process, that app cannot be supported to run as x86 on ARM64.
47
55
48
56
This is a security mitigation some apps enable on their process using [SetProcessMitigationPolicy](/windows/desktop/api/processthreadsapi/nf-processthreadsapi-setprocessmitigationpolicy) API with the `ProcessDynamicCodePolicy` flag. To run successfully on ARM64 as an x86 process, this mitigation policy will have to be disabled.
Copy file name to clipboardexpand all lines: windows-apps-src/porting/apps-on-arm-x86-emulation.md
+5-5
Original file line number
Diff line number
Diff line change
@@ -2,14 +2,14 @@
2
2
title: How x86 and ARM32 emulation work on ARM
3
3
4
4
description: Learn how emulation for x86 apps makes the rich ecosystem of existing Win32 apps available on ARM devices.
5
-
ms.date: 02/15/2018
5
+
ms.date: 06/25/2021
6
6
ms.topic: article
7
-
keywords: windows 10 s, always connected, x86 emulation on ARM
7
+
keywords: windows, arm64, x86, always connected, x86 emulation on ARM
8
8
ms.localizationpriority: medium
9
9
---
10
+
10
11
# How x86 emulation works on ARM
11
-
Emulation for x86 apps makes the rich ecosystem of Win32 apps available on ARM. This provides the user the magical experience of running an existing x86 win32 app without any modifications to the app. The app doesn’t even know that it is running on a Windows on ARM PC, unless it calls specific APIs ([IsWoW64Process2](/windows/desktop/api/wow64apiset/nf-wow64apiset-iswow64process2)).
12
12
13
-
The [WOW64](/windows/desktop/WinProg64/running-32-bit-applications) layer of Windows 10 allows x86 code to run on the ARM64 version of Windows 10. x86 emulation works by compiling blocks of x86 instructions into ARM64 instructions with optimizations to improve performance. A service caches these translated blocks of code to reduce the overhead of instruction translation and allow for optimization when the code runs again. The caches are produced for each module so that other apps can make use of them on first launch.
13
+
Emulation for x86 apps makes the rich ecosystem of Win32 apps available on ARM. This provides the user the magical experience of running an existing x86 win32 app without any modifications to the app. The app doesn’t even know that it is running on a Windows on ARM PC, unless it calls specific APIs ([IsWoW64Process2](/windows/desktop/api/wow64apiset/nf-wow64apiset-iswow64process2)).
14
14
15
-
For more details about these technologies, see the [Windows 10 on ARM](https://channel9.msdn.com/Events/Build/2017/P4171) Channel9 video.
15
+
The [WOW64](/windows/desktop/WinProg64/running-32-bit-applications) layer of Windows allows x86 code to run on the ARM64 version of Windows. x86 emulation works by compiling blocks of x86 instructions into ARM64 instructions with optimizations to improve performance. A service caches these translated blocks of code to reduce the overhead of instruction translation and allow for optimization when the code runs again. The caches are produced for each module so that other apps can make use of them on first launch.
0 commit comments