Improve compatibility of NVDA for Windows 10 on ARM64. #7508
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Summary of the issue:
Windows 10 (Desktop) will be available for running on ARM64 devices in the near future. This version of Windows (code named Cobalt) Will be able to run any existing x86 application through an x86 emulation layer similar to WOW64 on x86-64 builds of Windows.
More info: https://channel9.msdn.com/Events/Build/2017/P4171
However there are the following limitations:
Injection
NVDA cannot inject into any ARM64 or ARM32 process (as we do not have any dlls compiled for these architectures, nor is it currently possible to do so with VS / windows SDK).
The largest limitation here is that speaking of typed characters does not work in ARM processes, but does for other x86 ones.
We definitely use injection for other things as well, but these are not as important anymore for core Windows Operating System reatures. Note that all 3rd party desktop applictions on ARM devices must be x86. Therefore, as an example, NVDA will still work fine with Mozilla Firefox, or in deed even Microsoft Office.
64-bit identification
NVDA does not currently treat ARM64 as a 64-bit architecture.
This means that where we have 64-bit specific code, such as for SysListivew32, it is not used and therefore these controls remain inaccessible. Examples being the list in Registry Editor, and the list in the Details tab of Task Manager.
Description of how this pull request fixes the issue:
Testing performed:
Known issues with pull request:
Change log entry:
New features: