Windows Desktop Windows Phone Windows 10 Xbox Io
Windows Desktop Windows Phone Windows 10 Xbox Io. T Holo. Lens Surface Hub ONE CORE OS ONE APP PLATFORM ONE STORE
Phone Phablet Small Tablet 2 -in-1 s (Tablet or Laptop) Large Tablet Classic Laptop Desktops & All-in-Ones Windows 10 Surface Hub Xbox Holographic Io. T
Windows for PCs Windows for phones Windows on Xbox Windows for … Familiar desktop shell Familiar mobile shell 10’ shell experience Broad hardware ecosystem Rich telephony Shared gaming experiences Form factor–appropriate shell experience Windows desktop application compatibility Windows phone app compatibility Xbox One game and app compatibility One Core OS Base OS App and Device platform Runtimes and frameworks Device-specific scenario support
Mobile PC Holo. Lens Xbox Surface Hub Devices +Io. T Adaptive user interface Natural user inputs Common toolset Common store and dev center One App Platform Common APIs and SDK
Mobile PC Holo. Lens Xbox Surface Hub Devices +Io. T Common development hardware Common validation suite Common toolset Common hardware dev center One Device Platform Common DDIs and WDK
Develop to a single API/DDI Same API for Desktop, Tablet, Phone, Io. T Build once for all Windows editions One binary per instruction set, not per device family Runs on all Windows devices Phone, Tablet, Desktop, Server, Io. T Universal Driver
Apps built on the Windows universal app platform are called Windows apps In contrast with Windows desktop applications that run on PCs only Windows app Windows desktop application Runs on all Windows device families Runs on PCs only Can access Win. RT, COM, and subset of Win 32 APIs Can access Win. RT, COM, and Win 32 APIs Has strong app identity (static and dynamic) Raw EXEs and processes Declarative APPX manifest Opaque binaries Self-contained APPX package Loose files or MSI Isolated per-user/per-app storage (local and roaming) Shared user profile Participate in app resource management and PLM Process-level lifecycle
Neither Windows apps nor Windows desktop applications can… • • Directly access physical hardware resources Directly access IP blocks on silicon Respond to Windows I/O calls (e. g. , Read. File, Write. File) Integrate into device tree, device manager, etc Adapt new hardware to established APIs (e. g. , winsock, Direct. X) Respond to full range of power state changes Directly interact with the internals of the kernel To do any of these, you need a Windows driver
A Windows driver is an executable (. sys) that exports a Driver. Entry function Sets up dispatch table for OS to invoke I/O, power, Pn. P, routines Windows defines technology specific APIs (for ISVs) and DDIs (for IHVs) Winsock/NDIS, Direct. X/WDDM, etc Windows ships with in-box class drivers where hardware standardization no longer warrants 3 rd party drivers Some DDIs defined as miniport drivers that replace generic driver-isms with domainspecific entry points Windows Driver Framework (WDF) simplifies both user-mode (UMDF) and kernel-mode (KMDF) drivers
Kernel-mode Driver User-mode Driver Kernel-mode Driver SCM-based Service Kernel-mode Driver Windows app Kernel-mode Driver Windows desktop application (PC only) User mode Kernel mode ntoskrnl. exe (Kernel) I/O Manager Object Management Kernel-mode Driver Memory Management Interprocess Communication Dispatcher (kernel) Process Management
An Application Programming Interface (API) is a set of specific entry points for use by applications An Device Driver Interface (DDI) is a set of specific entry points for use by drivers An Application Binary Interface (ABI) is a set of rules for invoking code across independently deployed modules (drivers or applications) Both APIs and DDIs conform to an ABI Windows app Windows API Windows DDI Windows driver
The Windows universal device platform defines a single DDI that spans all Windows 10 device families Kernel-mode drivers are implicitly scoped to a single DDI specification User-mode drivers have access to both the DDI and API surface of Windows • User-mode DDI is common across device families • User-mode API is distinctly partitioned for user-mode drivers, Windows apps, and Windows desktop applications
The Windows API has three distinct patterns that define the ABI rules for functions, interfaces, and classes API Type Win 32 COM Win. RT Abstraction Functions Interfaces Classes Definition C header file (text) IDL file (text) WINMD file (binary) Callable from C/C++ Yes Yes Callable from CLR (C#, VB, etc) Yes (manual) Yes (automatic) Callable from Javascript No Yes No
Win. RT APIs Win 32/COM APIs Windows apps Windows universal system code Windows desktop applications, system code windowsapp. lib onecoreuap. lib kernel 32. lib, advapi 32. lib, etc. Win. RT Methods
Visual Studio provides an IDE, build tools, and the Windows SDK • Visual Studio Community Edition available for free at http: //visualstudio. com • All you need to write Windows apps and Windows desktop applications Driver development requires the Windows Driver Kit (WDK) which adds tools, headers, and libs to the SDK • Available for free at https: //msdn. microsoft. com/en-us/windows/hardware/ Driver projects can target Desktop, Phone, or Universal • The former two ease transition from existing codebases that have dependencies on desktop and/or phone-specific APIs • The latter produces drivers that can be deployed on all Windows 10 devices
Windows Driver Framework WDF implements the best practices for driver development • WDF contains non-trivial code due to asynchrony and complex state machines In Windows 8. 1, WDF was only available as an opaque binary • Cannot easily debug interactions between your code, WDF, and Windows • Cannot easily understand how WDF is implemented With Windows 10, we are now making WDF source code available on Git. Hub
Windows Driver Framework and Git. Hub WDF code available on Git. Hub https: //www. github. com/Microsoft/windows-driver-frameworks Private symbols available through Microsoft symbol server • Debugger automatically finds the right symbol Source code available to debugger through source server • Debugger automatically finds the right source file • No Need to copy source code manually to local machine
Windows hardware dev boards Windows now supports both x 86 and ARM-based development boards for both commercial and enthusiast developers Easy physical access to I/O to support device prototyping and pre -production development Supports multiple device family OS editions based on instruction set compatibility Retail availability from multiple electronics suppliers
Sharks Cove & Minnow. Board MAX Both boards support Windows 10 Sharks Cove • Intel ® Atom™ Processor Z 3735 G, 2 M Cache, 4 Core, 1. 33 GHz up to 1. 88 GHz • Supports Connected Standby • 32 -bit UEFI firmware • Headers for Camera, MIPI Display, USB, I 2 C, SDIO, UART, GPIO, UART-to-USB for debug Minnow. Board MAX • • • Intel® Atom™ E 3800 processor 64 -bit & 32 -bit UEFI firmware Can also be used as an UEFI Development Kit PWM capable GPIO (2 pins of 8 total GPIO) Open Hardware Platform (Gerbers & Layout)
Raspberry Pi 2 Bringing the power of Windows to the Maker community Hardware specs: • Broadcom 2836 900 MHz quad-core ARM Cortex -A 7 CPU • 1 GB LPDDR 2 SDRAM • Micro. SD, Ethernet, USB, HDMI • GPIO, I 2 C, I 2 S, SPI Attend the session on Building Devices with Windows Io. T to learn more
Qualcomm Dragon. Board™ 410 C Build innovative solutions using Windows & Qualcomm Snapdragon Hardware specs: • Qualcomm Snapdragon 410 (APQ 8016) • 1 GB LPDDR 3, 4 GB e. MMC • Micro. SD, Wi. Fi 802. 11 a/b/g/n, BT 4. 1 + LE, GPS • GPIO, I 2 C, I 2 S, SPI Attend the session on Create Intelligent Devices with Snapdragon and Windows to learn more
Sensor app Windows API Windows for PCs Windows for Io. T Windows for Phones Windows DDI Sharks Cove Minnow. Board Max Dragonboard Sensor driver
Device Imaging: Full Flash Update All Windows 10 device families support imaging and manufacturing based on Full Flash Update (FFU) • Existing workflow/tools still supported (e. g. , production media, WIM) for PC FFU image format is sector-based and describes all partitions on disk FFU images created using Windows Imaging and Configuration Designer (WICD) or command-line tools (imageapp. exe) FFU images flashed to up to 8 USB-tethered devices using ffutool. exe or directly to disk using WICD or dism. exe
OEMInput. xml OS-Package. cab OS Packages Feature. Manifest. xml OS-Package. cab BSP Packages Feature. Manifest. xml Kernel-mode Driver Packages Feature. Manifest. xml Custom. App. appx Device-Image. ffu Feature. Manifest. xml OEMCustomization. xml WICD or IMAGEAPP Device-Image. ffu
Flash to up-to 8 tethered Windows devices Device-Image. ffu … FFUTOOL or EFI Partition WICD or DISM Write directly to disk
Windows 10 allows a single driver to span multiple device families (PCs, Phones, Tablets, Io. T) Driver development is made simpler with Windows Driver Framework, now available on Git. Hub Windows 10 supports a range of x 86 and ARM development boards Windows 10 provides a single FFU-based toolchain to support imaging and manufacturing Windows devices
(c) 2015 Microsoft Corporation. All rights reserved. This document is provided "as-is. " Information and views expressed in this document, including URL and other Internet Web site references, may change without notice. You bear the risk of using it. This document does not provide you with any legal rights to any intellectual property in any Microsoft product. You may copy and use this document for your internal, reference purposes. Some information relates to pre-released product which may be substantially modified before it’s commercially released. Microsoft makes no warranties, express or implied, with respect to the information provided here.
- Slides: 33