FW: [win10] Accessible World presentation on Anniversary Update: technical version and clarifications #winten1607

Joseph Lee <joseph.lee22590@...>


After the Accessible World presentation, I felt certain things needed in-depth overview, hence the below podcast and a few notes. Thanks.




From: win10@win10.groups.io [mailto:win10@win10.groups.io] On Behalf Of Joseph Lee
Sent: Wednesday, August 3, 2016 10:39 AM
To: win10@win10.groups.io
Subject: [win10] Accessible World presentation on Anniversary Update: technical version and clarifications #WinTen1607




For those who’d like to get a deeper (and a bit more technical) overview of Anniversary Update, I have recorded a podcast providing additional information and clarifications from Accessible World presentation from August 1st:



Things covered include:

·         OneCore (some info derived from an Ars Technica article from Peter Bright).

·         Build numbering changes and why.

·         Why browse mode in Edge broke for NVDA users and happenings since then, why traditional virtual buffer implementations will not work in Edge anymore.

·         The story behind toasts (app notifications).

·         Redesigned User Account Control.

·         Skype Preview app.

·         Windows Subsystem for Linux, specifically how Linux kernel 3.4 system calls are handled.

·         How scan mode in Narrator works.


Specifics (quite technical):


OneCore is a set of most fundamental routines all devices running Windows 10 share. The goal of this project was to unify routines used within Windows NT kernel (ntoskrnl.exe), such as security, file system support, basic API’s and so on. Each device family then adds layers on top, such as:


·         PC’s: OneCore + Universal Windows Platform + desktop app support + desktop interface + Internet Explorer + other components.

·         Mobile: OneCore + UWP + cell phone connectivity stack + smartphone interface and others.

·         Server 2016: OneCore + server components.

·         Xbox: oneCore + UWP + game virtual machine + support for gaming hardware and so on.

·         HoloLens: OneCore + UWP + Windows Holographic and others.

·         IoT: OneCore + UWP + IoT-specific things.

·         Surface Hub: OneCore + UWP + Desktop apps support + multi-touch support and others.

·         Future devices: OneCore + (possibly) UWP + device-specific layers.

Edge: Browse mode broke due to different UIA framework ID’s in use (InternetExplorer versus MicrosoftEdge). According to a MS engineer who was interviewed for the most recent Main Menu podcast, due to security practices and to use modern standards and UIA, Edge does not permit traditional virtual buffer mechanisms anymore, thus screen readers must be modified to handle UIA better and support Edge-specific controls.


App notifications: until Version 1511, when toasts (app notifications) appear, they fired (sent) tooltip show event, used by screen readers to catch it and announce toasts. Starting with a more recent Insider build for Anniversary Update, tooltip events are not fired by toasts; instead, a window open UIA event is used, thus screen readers were (or must be) modified to handle this change. Also, when high priority toasts appear, UIA class name changes, thus some screen readers were modified (or must be modified) to handle this case as well.


Skype Preview app: when someone is typing, a UIA event is fired. But when someone is not typing, Skype Preview app does not clear typing indicator text, confusing screen reader users (a feedback regarding this UIA implementation issue was sent to Microsoft).


Subsystem for Linux: a partnership between Microsoft and Canonical brought this to life. Originally used to research running Android apps on Windows 10 Mobile (Astoria), this changed so some unmodified Ubuntu binaries can function under Anniversary Update with a twist. Specifically, a concept of a minimal process and a picoprocess is used to accomplish this (a minimal process is an empty process when Windows NT kernel sees it; a picoprocess is a representation of a user-mode process from another operating system with a system component serving as a proxy). Because Windows NT kernel (specifically, Windows Native API) does not have certain Linux kernel features, a pico driver called lxss.sys (Linux Subsystem) is used to emulate some system calls if Windows kernel cannot handle it. This is just one of the aspects of this new subsystem (available for developers running 64-bit Anniversary Update and uses an image of Ubuntu 14.04) (all info came from a blog entry on picoprocess found in Microsoft, a part of a larger series on Windows Subsystem for Linux).


User Account Control: Until Version 1511, UAC dialog was powered by Win32. This has changed in Anniversary Update: now powered by the technology used to represent UI in universal apps (called XAML (eXtensible Application Markup Language)). Thus screen readers must be modified to read UAC prompts.


Narrator’s scan mode: when active, up and down arrows emulate caps lock+left/right arrows.


Hope this helps.