Contents
Getting Started with the Windows Driver Kit What's new in driver development Download the Windows Driver Kit (WDK) Installing preview versions of the WDK Other WDK downloads Bring up guide Developing, Testing, and Deploying Drivers Windows Hardware Dev Center Dashboard Device and Driver Installation Kernel-Mode Driver Architecture Design Guide Windows Driver Frameworks Windows Driver Security Windows Debugging Tools Windows Store Device Apps Driver Technologies Overview of Driver Technologies 3D print devices ACPI Audio Battery Drivers Biometric Drivers Bluetooth Drivers Display drivers Driver Development Tools Getting started with Windows drivers GNSS drivers GPIO drivers Hardware notifications HID Drivers IEEE Drivers Imaging device drivers Installable file system drivers Kernel-mode driver technology Mobile broadband Multifunction device drivers NetAdapterCx Network drivers NFC device drivers Parallel port drivers Partner application development PCI drivers PCMCIA drivers Point of Service device drivers Power management technologies Print device drivers SD card bus drivers Sensor drivers Serial port drivers Smartcard device drivers SPB drivers Storage device drivers Streaming media device drivers Test Authoring and Execution Framework (TAEF) Universal Serial Bus (USB) Windows Device Testing Framework (WDTF) Windows Hardware Error Architecture (WHEA) Windows portable device drivers Windows driver samples What's new in driver development 10/23/2019 • 44 minutes to read • Edit Online
This section provides information about the new features and updates to Windows driver development in Windows 10. The following is a list of new feature highlights for driver development in Windows 10. Windows 10, version 1903 WDK supports Visual Studio 2019 Windows Hardware Dev Center dashboard Open publishing Debugging Tools for Windows Device and Driver Installation Driver Verifier Windows Driver Frameworks Universal Windows drivers Windows Compatible hardware development boards Power Management Framework System-Supplied Driver Interfaces WPP Software Tracing The following table shows the feature updates in Windows 10, by driver technology and version.
DRIVER 1903 1809 1803 1709 1703 1607 1507
Audio
ACPI
Biometric
Bluetooth
Buses and Ports
Camera
Cellular
Display
Driver security
Hardware notifications DRIVER 1903 1809 1803 1709 1703 1607 1507
Human Interface Device (HID)
Kernel
Location
Mobile broadband
Near Field Communica tion
Networking
POS
PCI
Pulse Width Modulation
Sensors
Smart Card
Storage
System- Supplied Driver Interfaces
USB
WI-FI
WLAN
What's new in driver development for Windows 10 Back to Top This section provides highlights of new features for driver development in Windows 10.
W DK supports Visual Studio 2019 The Windows Driver Kit (WDK) for Windows 10, version 1903, has been updated to support Visual Studio 2019 as previously announced. This release of the WDK is not compatible with Visual Studio 2017 however, developers can continue working with Visual Studio 2017 using the previous releases of the WDK, (releases 1709 thru 1809 found here). To learn about what is new with Visual Studio 2019 please review the information here. The following are a few items of notable changes in Visual Studio 2019 that Windows driver developers will see. WDK GUI Driver Menu moved In Visual Studio 2019 the WDK Driver menu has been moved to live under the Extension menu as seen below.
The WDK Driver menu in Visual Studio 2017 is located in the top menu options as seen below.
Driver Templates discoverability In Visual Studio 2019 the WDK Driver templates will be discoverable under Project Type, Drivers. The Driver Project Type will appear in the first official update release of Visual Studio 2019. Until then the Driver templates can be discovered by searching for them in the search menu. The WDK Driver templates were previously found in Visual Studio 2017 under New Projects> Visual C++> Windows Driver as seen below.
W indows Hardware Dev Center dashboard In Windows 10, version 1809, we added new and improved functionality in the way of Hardware APIs for developers, IHVs, and OEMs to track and submit driver packages to the Windows hardware dashboard. Use the shipping label REST APIs to create and manage shipping labels, the method by which you distribute your drivers. Manage Shipping Labels Get shipping label data Use the asynchronous custom report methods to access reporting data for driver errors and OEM hardware errors. You can define reporting templates based on your needs, set a schedule and you will have data delivered to you at regular intervals. Schedule custom reports for your driver failure details
O pen publishing We're making the docs more community-driven. On many pages of the Windows driver documentation, you can suggest changes directly. Look for the Contribute button in the upper right corner of a page. It looks like this:
When you click Contribute, you'll arrive at the Markdown source file for that topic in a GitHub repository. You can click Edit and suggest changes right here. For more details, see CONTRIBUTING.md in the repo. And thanks for taking the time to improve the docs! D ebugging Tools for Windows This section describes the changes in the debugging tools for Windows. Debugging in Windows 10, version 1903 New stop codes were added to allow better tracking on unique failure types in the Windows operating system. In addition a number of existing bug check topics were expanded and updated. For more information, see Bug Check Code Reference. Updates to KDNET topics to improve ease of use, for example in new Setting Up KDNET Network Kernel Debugging Automatically Updates to IP V6 KDNET support. New JavaScript Debugging topic
Debugging in Windows 10, version 1809 New Debugger Data Model API – A new object oriented debugger data model interface to support debugger automation is now available using the dbgmodel.h header. The debugger data model is an extensible object model that is central to the way in which new debugger extensions (including those in JavaScript, NatVis, and C++) both consume information from the debugger and produce information that can be accessed from the debugger as well as other extensions. Constructs which are written to the data model APIs are available in the debugger's dx expression evaluator as well as from JavaScript extensions or C++ extensions. Documentation will be available at: Overview of the Debugger Data Model C++ Interface and the dbgmodel.h header reference topics. IPv6 - We are adding support for IPv6 to KDNET. To make room for the larger headers required for IPv6, we decreased the payload size of packets. As a result, we’re declaring a new version of the KDNET protocol, so that host PCs running the latest version of the debugger can be used to debug target PCs that only support IPv4. There is a version of WinDbg Preview available at https://aka.ms/windbgpreview that supports IPv6. Follow the Debugging Tools for Windows blog for updates on KDNET IPv6 support and see Setting Up KDNET Network Kernel Debugging Manually for more details.
Debugging in Windows 10, version 1803 WinDbg Preview Time Travel Debugging (TTD) hands on lab - This lab introduces Time Travel Debugging (TTD), using a small sample program with a code flaw. TTD is used to debug, identify and root cause the issue. Debugging in Windows 10, version 1709 The following is a list of new content sets for the Debugger in Windows 10, version 1709: Debugging Using WinDbg Preview - A preview into the next generation debugger. Time Travel Debugging - Overview - Record and replay an execution of your process.
Debugging in Windows 10, version 1703 The following table shows changes for the Debugger in Windows 10, version 1703:
NEW TOPICS UPDATED TOPICS
JavaScript Debugger Scripting dtx (Display Type - Extended Debugger Object Model Information) command
40 undocumented stop codes in the Bug Check Code Updates to the Configuring tools.ini topic with additional Reference options in the tools.ini file for the command line debuggers
!ioctldecode command New command capabilities in the dx (Display Debugger Object Model Extension) command
Debugging in Windows 10, version 1607 In Windows 10, version 1607, changes to the Debugger include a new topic about Debugging a UWP app using WinDbg, and updates to the 30 most-viewed developer bug check topics in Bug Check Code Reference. Debugging in Windows 10, version 1507 The following is a list of new commands for the Windows Debugger in Windows 10, version 1507: dx (Display NatVis Expression) - A new debugger command which displays object information using the NatVis extension model. .settings - A new command that sets, modifies, displays, loads and saves settings in the Debugger.Settings namespace.
D evice and Driver Installation In Windows 10, version 1809, the following content was added: INF AddEventProvider Directive INF DDInstall.Events Section The following was updated: Early Launch AntiMalware Requirements Kernel-Mode Code Signing Requirements
D river Verifier Driver verifier includes new driver validation rules for the following technologies: New Rules for Audio Drivers New Rules for AVStream Drivers Four new Rules for KMDF Drivers Three new Rules for NDIS Drivers New Nullcheck rules Added in version 1703
W indows Driver Frameworks (WDF) WDF in Windows 10, version 1903 In Windows 10, version 1903, the Windows Driver Framework (WDF) includes Kernel-Mode Driver Framework (KMDF) version 1.29 and User-Mode Driver Framework (UMDF) version 2.29. For info on what's included in these framework versions, see What's New for WDF Drivers in Windows 10. To see what was added in previous versions of WDF, see KMDF Version History and UMDF Version History.
U niversal Windows drivers This section describes new and updated features for Universal Windows drivers in Windows 10. Back to Top Universal Drivers in Windows 10, version 1809 Starting in Windows 10, version 1809, Windows supports flexible linking, which enables you to use a single binary to target OneCore and Desktop SKUs. To enable flexible linking, use the following new SDK API: IsApiSetImplemented This existing topic has been enhanced to describe how to use flexible linking to comply with the U requirement of the DCHU driver design principles: Building for OneCore
Universal Drivers in Windows 10, version 1803 See the latest recommendations for universal drivers in Getting started with universal drivers. Universal Drivers in Windows 10, version 1709 The following is a list of new features to Universal Drivers in Windows 10, version 1709: Updating Device Firmware using Windows Update - Describes how to update a removable or in-chassis device's firmware by using the Windows Update (WU) service. Reg2inf - The Driver Package INF Registry Conversion Tool (reg2inf.exe) converts a registry key and its values or a COM .dll implementing a DLL RegisterServer routine, into a set of INF AddReg directives. These directives are included in the driver package INF file. The following is a list of updates to Universal Drivers in Windows 10, version 1709: The Universal Drivers Scenario has a new COM component example INF AddComponent Directive Using an Extension INF file Using a Component INF file
Universal Drivers in Windows 10 Starting in Windows 10, you can write a single driver that works on OneCoreUAP-based editions of Windows, such as Windows 10 for desktop editions (Home, Pro, Enterprise, and Education), Windows 10 Mobile, and Windows 10 IoT Core (IoT Core). Such a driver is called a Universal Windows driver. A Universal Windows driver calls a subset of the interfaces that are available to a Windows driver. For information about how to build, install, deploy, and debug a Universal Windows driver for Windows 10, see Getting Started with Universal Windows drivers. When you build a Universal Windows driver using Microsoft Visual Studio 2015, Visual Studio automatically checks if the APIs that your driver calls are valid for a Universal Windows driver. You can also use the ApiValidator.exe as a standalone tool to perform this task. The ApiValidator.exe tool is part of the Windows Driver Kit (WDK) for Windows 10. For info, see Validating Universal Windows drivers. Universal Windows drivers also require a special kind of INF file called a universal INF. A universal INF can use a subset of the directives and sections available to a legacy INF file. To learn more, see Using a Universal INF File. To see which sections and directives apply, see INF File Sections and Directives. When you're ready, use the InfVerif tool to test your driver's INF file. In addition to reporting INF syntax problems, the tool reports if the INF file will work with a Universal Windows driver. You can also find information about which APIs you can call from a Universal Windows driver. This information is located in the Requirements block at the bottom of driver reference pages. For example, you'll see a listing similar to this one that tells you if a given DDI is Universal.
For more info, see Target platform on driver reference pages.
W indows compatible hardware development boards Windows is now supported on more affordable boards such as the Raspberry Pi 2. Become a part of our early adopter community and load Windows on that board. For more information, see Windows compatible hardware development boards.
P ower Management Framework The power management framework (PoFx) enables a driver to define one or more sets of individually adjustable performance states for individual components within a device. The driver can use performance states to throttle a component's workload to provide just enough performance for its current needs. For more information, see Component-Level Performance State Management. Windows 10, version 1903 includes support for the Directed Power Management Framework (DFx). Related reference documentation includes the following: PO_FX_DEVICE_V3 PO_FX_DIRECTED_POWER_DOWN_CALLBACK callback function PO_FX_DIRECTED_POWER_UP_CALLBACK callback function PoFxCompleteDirectedPowerDown function For information about testing for DFx, please see the following pages: Directed FX Single Device Test Directed FX System Verification Test PwrTest DirectedFx Scenario
W PP Software Tracing WPP Software Tracing introduces a new feature: Inflight Trace Recorder. If the driver enables WPP tracing and WPP Recorder, trace logging is turned on automatically and you can easily view messages without starting or stopping trace sessions. For more fine tuned control over the log, WPP Recorder allows a KMDF driver to create and manage custom buffers. WPP Recorder for logging traces WppRecorderLogGetDefault WppRecorderLogCreate (KMDF only) WppRecorderDumpLiveDriverData
What's new in Windows 10, version 1903 (latest) This section describes new features and updates for driver development in Windows 10, version 1903 (Windows 10 April 2019 Update). Back to Top
A udio The following is a list of new and updated Audio features in Windows 10, version 1903: New reference topics on the Audio OEM Adapter used for Voice Activation in the new eventdetectoroemadapter.h header. New Far Field Audio information: PKEY_Devices_AudioDevice_Microphone_IsFarField KSPROPSETID_InterleavedAudio KSPROPERTY_INTERLEAVEDAUDIO_FORMATINFORMATION New jack description information in USB Audio 2.0 Drivers.
C amera New Camera driver documentation and features added in Windows 10, version 1903 include: New IR Torch extended property control to set an IR camera's infrared torch power level and duty cycle. New KSCATEGORY_NETWORK_CAMERA device. New and updated USB Video Class (UVC) 1.5 extension documentation for the following control selectors: MSXU_CONTROL_FACE_AUTHENTICATION MSXU_CONTROL_METADATA MSUX_CONTROL_IR_TORCH D isplay Updates to Display driver development in Windows 10, version 1903 include the following: Super Wet Ink New DDIs were added to enable front buffer rendering. See D3DWDDM2_6DDI_SCANOUT_FLAGS and PFND3DWDDM2_6DDI_PREPARE_SCANOUT_TRANSFORMATION. Variable Rate Shading Enables allocation of rendering performance/power at varying rates across rendered images. See PFND3D12DDI_RS_SET_SHADING_RATE_0062 and D3D12DDI_SHADING_RATE_0062. Collect Diagnostic Info Allows the OS to collect a private data from drivers for graphics adapters which consist of both rendering and display functions. See DXGKDDI_COLLECTDIAGNOSTICINFO. Background Processing Allows user mode drivers to express desired threading behavior, and the runtime to control/monitor it. User mode drivers would spin up background threads and assign the threads as low a priority as possible, and rely on the NT scheduler to ensure these threads don’t disrupt the critical-path threads, generally with success. See PFND3D12DDI_QUEUEPROCESSINGWORK_CB_0062. Driver Hot Update Reduce server downtime as much as possible when an OS component needs to be updated. See DXGKDDI_SAVEMEMORYFORHOTUPDATE and DXGKDDI_RESTOREMEMORYFORHOTUPDATE.
N etworking NetAdapterCx In the NetAdapter WDF class extension (NetAdapterCx), Net ring buffers have been replaced by Net rings, which have a new interface for sending and receiving network data using net ring iterators. The following is a list of new topics: Net rings and net ring iterators Sending network data with net rings with a new animation that illustrates how to send data Receiving network data with net rings with a new animation that illustrates how to receive data Canceling network data with net rings New headers that support this feature include the following: Ring.h Ringcollection.h Netringiterator.h The following is a list of NetAdapterCx content updates: Default adapter objects have been removed in favor of a single adapter object type. The following topics have been updated accordingly: Summary of NetAdapterCx objects Device and adapter initialization Hardware offload and packet extension DDIs have been reorganized into new headers: Checksum.h Checksumtypes.h Extension.h Lso.h Lsotypes.h Rsc.h Rsctypes.h Fundamental networking data structures, packets and fragments, have been updated and put into new headers: Packet.h Fragment.h Overhauled Transmit and receive queues topic to include callback samples and major operations for packet queues.
Mobile operator scenarios New Mobile Plans content for mobile operators to sell plans to customers directly on Windows 10 devices, through the Mobile Plans app: Mobile Plans
M obile broadband The following features were added to Mobile broadband in Windows 10, version 1903: New SIM card (UICC) file/application system access feature New Cellular Time Information (NITZ) feature. New modem logging with DSS feature. New 5G data class support feature.
P rint New Print driver documentation and features added in Windows 10, version 1903 include: New USB print IOCTLs: IOCTL_USBPRINT_GET_INTERFACE_TYPE IOCTL_USBPRINT_GET_PROTOCOL IOCTL_USBPRINT_SET_PROTOCOL New fpRegeneratePrintDeviceCapabilities PRINTPROVIDER structure member and updated documentation.
S ensors New features in sensor driver development in Windows 10, version 1903 include a MALT (Microsoft Ambient Light Tool) tool for testing and calibrating screen brightness. There were also updates to the Ambient Color OEM whitepaper.
S torage The following Storage features were added in Windows 10, version 1903: New Storport APIs for logging device failure and hardware protocol errors in ETW events and to query for platform D3 desired behavior New API to set the properties of a storage device or adapter For file systems, new DDIs were added to support retrieving extended attributes (EA) information upon create completion, allowing mini-filters to alter the ECP payload to change what higher filters see Windows Hardware Error Architecture (WHEA) Windows 10, version 1903 includes a simplified interface to WHEA. For more info, see the following pages: WheaAddErrorSourceDeviceDriver WheaReportHwErrorDeviceDriver WheaRemoveErrorSourceDeviceDriver WHEA_ERROR_SOURCE_CONFIGURATION_DEVICE_DRIVER WHEA_ERROR_SOURCE_READY_DEVICE_DRIVER WHEA_ERROR_SOURCE_UNINITIALIZE_DEVICE_DRIVER WHEA_ERROR_SOURCE_INITIALIZE_DEVICE_DRIVER
W i-fi New Wi-fi driver development documentation and features include: New Fine Timing Measurement (FTM) feature New WPA3-SAE Authentication feature New Multiband Operation (MBO) support to improve roaming performance in enterprise scenarios New beacon report offloading support For OID commands, NDIS status indications, and TLVs for these new features, see WDI doc change history The following topics were updated for Windows 10, version 1903: WDI_AUTH_ALGORITHM - added support for WPA3-SAE authentication OID_WDI_TASK_P2P_SEND_REQUEST_ACTION_FRAME and OID_WDI_TASK_P2P_SEND_RESPONSE_ACTION_FRAME - added additional validation of outgoing Point to Point (P2P) action frames
What's new in Windows 10, version 1809 This section describes new features and updates for driver development in Windows 10, version 1809 (Windows 10 October 2018 Update). Back to Top
A udio Documentation on the new sidebandaudio and usbsidebandaudio headers is now available.
B luetooth HCI_VS_MSFT_Read_Supported_Features has been updated to include a new flag for secure simple pairing process. See, Microsoft-defined Bluetooth HCI commands and events. New QDID for Windows 10, version 1809 is available here: 108589. For a complete list of QD ID for all releases, see Bluetooth.
D isplay Updates to Display driver development in Windows 10, version 1809 include the following: Raytracing New Direct3D DDI's were created in parallel of Direct3D API's, in order to support hardware- accelerated raytracing. Example DDIs include: PFND3D12DDI_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_0054, PFND3D12DDI_COPY_RAYTRACING_ACCELERATION_STRUCTURE_0054. For more info about raytracing, see Announcing Microsoft DirectX Raytracing. Universal Driver Requirements WDDM 2.5 drivers will need to ensure their DirectX11 UMD, DirectX12 UMD, KMDs, and any other DLL loaded by these components, adhere to the Universal API. SRV-Only Tiled Resource Tier 3 In Windows 10, version 1809, Tiled Resource Tier 3 capabilities can be supported less-orthogonally by GPUs. Direct3D12 now supports sparse volume textures without requiring unordered-access and render-target operations. SRV-Only Tiled Resource Tier 3 is a conceptual tier that fits between Tier 2 and Tier 3. Hardware support is optional, just like orthogonal Tiled Resource Tier 3 support currently is. But, supporting SRV-Only Tiled Resource Tier 3 is a super-set tier that requires support for Tiled Resource Tier 2. Drivers that already advertise support for orthogonal Tiled Resource Tier 3 merely have to update their drivers to support the latest “options caps” DDI structure version. The runtime will advertise SRV-Only Tiled Resource Tier 3 support to applications for any hardware that already supports orthogonal Tiled Resource Tier 3. Render Pass The Render Pass feature was added to: Allow new APIs to be run on existing drivers. Allow user mode drivers to choose optimal rendering path without heavy CPU penalty. Meta-commands A Meta-command is Direct3D12 object that represents an IHV-accelerated algorithm. It’s an opaque reference to a command generator implemented by the driver. Meta-command updates include Descriptor Table Binding and Texture binding. See D3D12DDI_META_COMMAND_PARAMETER_TYPE and D3D12DDIARG_META_COMMAND_PARAMETER_DESC. Enable Compute Algorithms to use Texture Resources (swizzled memory) Enable Graphics Pipeline Algorithms HDR Brightness Compensation A new SDR brightness boost was introduced to raise the reference white of SDR content to the user-desired value, allowing SDR content to be reproduced to a typical 200-240 nits, which is equivalent to what users have expected for SDR displays. SDR brightness boost affects overall Brightness3 behavior in two ways: 1. This boost is applied pre-blend only on SDR content. HDR content is not affected. Meanwhile, for most laptop/brightness3 scenarios, users expect all content (SDR and HDR) to be adjusted. 2. When the Brightness3 stack in the OS determines the desired nits value, it is not aware of the already applied SDR boost. The driver must then apply a compensation to the desired nits value coming from Brightness3 DDIs for HDR. Since Graphics drivers (and downstream TCON etc.) will be modifying the pixel values of the content to get desired nits value, there should also be a compensation applied to the HDR content metadata as provided by the applications via D3DDDI_HDR_METADATA_HDR10 or OS defaults via DxgkDdiSetTargetAdjustedColorimetry. Since Graphics driver (TCONs) are responsible for modifying the pixel data, it is the driver’s responsibility to compensate the HDR content metadata. HDR Pixel Format Support This kernel mode device driver interface (DDI) change is part of WDDM 2.5 to expose new capabilities to be reported by driver/device, providing information regarding the HDR functionality supported by the driver/device. Currently, OS determines if the driver/device supports HDR based on the HighColorSpace bit of the DXGK_MONITORLINKINFO_CAPABILITIES structure as read from DdiUpdateMonitorLinkInfo. The HighColorSpace bit gives a combination of driver/link/monitor capability to run in HDR mode. The HDR capabilities reporting by the driver now includes a Driver/Device level capabilities, which will let OS know if the Driver/Device supports true HDR (i.e. FP16HDR), or only supports a limited form of HDR (i.e. ARGB10HDR), as defined below: FP16HDR: Driver/device can take FP16 pixel format surfaces with scRGB/CCCS colorspace and apply PQ/2084 encoding and BT.2020 primaries during scanout pipeline to convert output signal to HDR10. ARGB10HDR: Driver/device can take ARGB10 pixel format surfaces which are already PQ/2084 encoded and scan out HDR10 signal. Driver/device can’t handle FP16HDR as defined above or cannot handle the extended numeric range of scRGB FP16. Graphics drivers can only report support for either FP16HDR or ARGB10HDR as they are not really superset/subset configurations and OS will fail the Start Adapter if both are reported as supported at the same time. See DXGK_MONITORLINKINFO_CAPABILITIES and _DXGK_DISPLAY_DRIVERCAPS_EXTENSION. SDR White Level A kernel mode device driver interface change includes adding new parameters to existing DDIs to let the Graphics drivers know the “SDR white level” value that is being applied by the OS compositor for all the SDR content, for a display which is running in HDR mode. See _DXGK_COLORIMETRY.
W indows kernel Several new APIs have been added in the core kernel: RtlQueryRegistryValueWithFallback function: Querying the registry value entry by using a fallback handle in absence of a primary handle. PsGetSiloContainerId function and PsGetThreadServerSilo function New information classes added to: _FILE_INFORMATION_CLASS FileLinkInformationExBypassAccessCheck FileCaseSensitiveInformationForceAccessCheck FileStorageReserveIdInformation FileLinkInformationEx Extended version of NtCreateSection added NtCreateSectionEx function to indicate that this is actually an AWE section. New Ex macros grant direct access to actual push lock APIs exported by Ntoskernel. ExAcquirePushLockExclusive macro ExAcquirePushLockShared macro ExInitializePushLock function ExReleasePushLockExclusive macro ExReleasePushLockShared macro KzLowerIrql and KzRaiseIrql were moved to a supported extern forceinline for kernel components targeting Windows 8 and later versions, instead of relying on the forwarders to instantiate a special case of the inline functions. Flattening Portal Bridge (FPB) for PCI is now supported. For more information, see the Official Specification. The new APIs (PCI_FPB*) are declared in Ntddk.h.
N etworking NetAdapterCx New INF files for NetAdapterCx client drivers topic. Transmit and receive queues have been consolidated into one object type called a packet queue, to simplify the API surface. A new section called Polling model has been added to the Transmit and receive queues topic. Hardware offloads have been added to NetAdapterCx, which also automates the registration of associated packet extensions for client drivers. Network interfaces are now decoupled from the driver's WDF device object. The EvtNetAdapterSetCapabilities callback function was removed to support this. NetAdapterCx client drivers can now have multiple network interfaces, including a default one. Topics updated to support network interface/device object decoupling include the following: Summary of NetAdapterCx objects Device and adapter initialization Power-up sequence for a NetAdapterCx client driver Power-down sequence for a NetAdapterCx client driver DDIs supporting NetAdapterCx Receive side scaling (RSS) have been simplified. Packet context token helper macros have been removed.
NDIS Receive side scaling version 2 (RSSv2) has been updated to version 1.01.
M obile broadband New OID and DDIs to support multiple packet data protocol (MPDP) interfaces for MBB devices. New Device-based Reset and Recovery feature for more robust reset recovery for MBB devices and drivers.
Mobile Broadband WDF class extension (MBBCx) MBBCx power management methods have been simplified. Though preview content for MBBCx was available in Windows 10, version 1803, MBBCx now ships in the Windows 10, version 1809 version of the WDK. Mobile operators The AutoConnectOrder setting is now supported in desktop COSA.
S ensors Support for auto Brightness feature: The PKEY_SensorData_IsValid data field has been added to support auto brightness in sensors. See Light sensor data fields for more info.
U SB New feature for USB Type-C driver developers: If your hardware is UCSI compliant and requires communication over a non-ACPI transport, you can utilize the new class extension — (UcmUcsiCx.sys). This implements the UCSI specification in a transport agnostic way. With minimal amount of code, your driver, which is a client to UcmUcsiCx, can communicate with the USB Type-C hardware over non-ACPI transport. This topic describes the services provided by the UCSI class extension and the expected behavior of the client driver. Write a UCSI client driver UcmUcsiCx class extensions reference UcmUcsiCx client driver sample New feature for USB Type-C driver developers that allows you to monitor the activities of USB Type-C connectors and/or get involved in policy decisions on USB Type-C connectors. For example, control their device’s charging based on thermal conditions, so that the device won’t be overheated. Write a USB Type-C Policy Manager client driver New APIs are available in Usbpmapi.h New versions of the class extensions available for emulated USB devices (UDE) -- 1.1 and USB host controller (Ucx) 1.5: Emulated devices now support better reset recovery through function (FLDR) and platform (PLDR) resets. The client driver can now inform the system that the device needs a reset and the type of reset: function or platform. UdecxWdfDeviceNeedsReset function The host controller can also opt for FLDR and PLDR resets through: EVT_UCX_USBDEVICE_DISABLE
W i-fi The WLAN device driver interface (WDI) spec has been updated to version 1.1.7. Added support for the latest 802.11ax PHY type for WDI drivers. Added support for unsolicited device service indications.
What's new in Windows 10, version 1803 This section describes new features and updates for driver development in Windows 10, version 1803 (Windows 10 April 2018 Update). Back to Top
A CPI Windows 10, version 1803 includes updates to ACPI DDIs to support platform capabilities and physical device location.
A udio The voice activation topic was updated to include additional information on APO requirements.
B luetooth Windows 10, version 1803 introduces support for Swift Pair. Users no longer need to navigate the Settings App and find their peripheral to pair. Windows can now do this for them by popping a notification when a new peripheral is nearby and ready. There are two sets of requirements to ensure your peripheral works with Swift Pair. One set is for the peripheral’s behavior, and another for the structure and values in a Microsoft defined vendor advertisement section. For more information, see: Bluetooth Swift Pair Bluetooth Features and Recommendations Windows 10, version 1803 supports Bluetooth version 5.0. For information about profile support, see Bluetooth Version and Profile Support in Windows 10.
C amera Updates to Camera driver development include: DShow (DirectShow) Bridge implementation guidance for UVC devices - Implementation guidance for configuring DShow Bridge for cameras and devices that comply with the USB Video Class (UVC) specification. The platform uses Microsoft OS Descriptors from the USB bus standard to configure DShow Bridge. The Extended Properties OS Descriptors are an extension of USB standard descriptors and are used by USB devices to return Windows specific device properties that are not enabled through standard specifications. 360 camera video capture - Provides support for 360 camera preview, capture, and record with existing MediaCapture APIs. This enables the platform to expose spherical frame sources (for example, equirectangular frames ), enabling apps to detect and handle 360 video camera streams as well as to provide a 360 capture experience.
D isplay The following are updates to Display driver development in Windows 10, version 1803: Indirect Display UMDF class extension - The Indirect Display driver can pass the SRM to the rendering GPU and have a mechanism to query the SRM version being used. IOMMU hardware-based GPU isolation support - Increases security by restricting GPU access to system memory. GPU paravirtualization support - Enables display drivers to provide rendering capabilities to Hyper-V virtualized environments. Brightness - A new brightness interface to support multiple displays that can be set to calibrated nit-based brightness levels. D3D11 bitstream encryption - Additional GUIDS and parameters to D3D11 to support exposing CENC, CENS, CBC1, and CBCS with 8 or 16 byte initialization vectors. D3D11 and D3D12 video decode histogram - A luminance histogram allows the media team to leverage fixed function hardware for histogram to improve tone mapping quality for HDR/EDR scenarios. Fixed function hardware is useful when GPU is already saturated in these scenarios and to enable parallel processing. This feature is optional and should only be implemented if fixed function hardware is available. This feature should not be implemented with 3D or Compute. D3D12 video decode now supports Decode Tier II, indicating driver supports Array of Textures that enable applications to amortize allocation cost and reduce peak memory usage during resolution change. Tiled resource tier and LDA atomics - A new cross node sharing tier to add support for atomic shader instructions working across linked adapter (LDA) nodes. This improves ISVs ability to implement multiple GPU rendering techniques like split frame rendering (SFR) and clearly advances the capabilities over what is possible in D3D11. GPU dithering support - Drivers can report the ability to perform dithering on the wire signal for a given timing mode. This allows the OS to explicitly request dithering in scenarios where a higher effective bit depth is needed than is physically available on the monitor link, for example for HDR10 over HDMI 2.0. Post-processing color enhancement override - Adds the ability for the OS to request that the driver temporarily disable any post-processing that enhances or alters display colors. This is to support scenarios where specific applications want to enforce colorimetrically accurate color behavior on the display, and safely coexist with OEM or IHV-proprietary display color enhancements. Direct3D12 and Video - New API and DDI to provide access to the following capabilities: Hardware accelerated video decoding Content Protection Video processing DisplayID - A new DDI, designed to allow the VESA’s DisplayID descriptor to be queried from a display controlled by a graphics adapter and shall support DisplayID v1.3 and DisplayID v2.0. The DDI is an extension of existing DxgkDdiQueryAdapterInfo DDI and shall be supported by all drivers with DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM2_3, including kernel mode display only drivers and indirect display drivers. GPU performance data - Extensions to DdiQueryAdapterInfo will expose information such as temperature, fan speed, clock speeds for engines and memory, memory bandwidth, power draw, and voltages Miscellaneous - A new SupportContextlessPresent driver cap to help IHV onboard new driver. Improvements to External/Removable GPU support in the OS. As a first step to add better support, Dxgkrnl needs to determine if a GPU is “detachable”, i.e. hot-pluggable. For RS4 we would like to leverage the driver’s knowledge about this instead of building our own infrastructure. For this purpose, we are adding a “Detachable” bit to DXGK_ DRIVERCAPS struct. Driver will set this bit during adapter initialization if the adapter is hot-pluggable. Display Diagnostics - Kernel mode device driver interface (DDI) changes to allow the driver for a display controller to report diagnostic events to the OS. This provides a channel through which the driver can log events which would otherwise be invisible to the OS as the events are not a response to an OS request or something the OS needs to react to. Shared graphics power components - Allows non-graphics drivers to participate in the power management of a graphics device. A non-graphics driver will use a driver interface to manage one or more of these shared power components in coordination with the graphics driver. Shared texture improvements - Includes increasing the types of textures that can be shared across processes and D3D devices. This design enables the frame server OS component to support monochrome with minimal memory copying.
D river security Updates to Windows Driver Security Guidance and the Driver security checklist, which provides a driver security checklist for driver developers.
W indows kernel This section describes the new and updated features for Windows kernel driver development in Windows 10, version 1803. A set of new APIs has been added to the kit to enable third parties to create their own KDNET extensibility modules or KdSerial transport layers. For sample code, see “Kernel Transport Samples” (ddk\samples\kdserial and ddk\samples\kdnet) in the Debuggers folder. Support was added to provide drivers with a sanctioned location (that the operating system knows about) where they can store file state. With this approach, the system can associate files in that location with a device or driver. There are distinct locations to store file states specific to the internals of a driver and specific to a device. For drivers that have file state, you can decide if the state written to disk is: Driver state (IoGetDriverDirectory): global to the driver that might be controlling multiple devices), or Device state (IoGetDeviceDirectory): specific to the driver-controlled single device and other devices might have different values for similar state. Function drivers (FDO) can now negotiate additional power when their respective PCIe devices are in a D3Cold state. This includes: Auxiliary power requirement D3COLD_REQUEST_AUX_POWER. Core power rail D3COLD_REQUEST_CORE_POWER_RAIL. Requirement for a fixed delay time between the message is received at the PCI Express Downstream Port and the time the platform asserts PERST# to the slot during the corresponding endpoint’s or PCI Express Upstream Port’s transition to D3cold while the system is in an ACPI operational state. See D3COLD_REQUEST_PERST_DELAY. NT services and kernel-mode and user-mode drivers can raise a custom trigger for a device by using the RtlRaiseCustomSystemEventTrigger function. A custom trigger, owned by the driver developer, notifies system event broker to start an associated background task with it, which is identified by a custom trigger identifier. You can now register for active session change notification and get a callback when the notification is fired. As part of this notification, some data is also shared with the caller. This associated data is delivered via the PO_SPR_ACTIVE_SESSION_DATA structure.
N etworking This section outlines new features and improvements for Windows Networking driver development in Windows 10, version 1803. NDIS and NetAdapterCx Updates to NDIS include: Receive side scaling V2 has been updated with further details about steering parameters The Synchronous OID interface now supports NDIS light weight filter drivers The following topics are new for the Network Adapter WDF class extension (NetAdapterCx): Introduction to NetAdapterCx 1.2 Packet descriptors and extensions Network data buffer management NetAdapterCx receive side scaling (RSS) Additionally, new topics are available for a preview-only feature, the Mobile Broadband class extension (MBBCx), which uses the NetAdapterCx model for mobile broadband connectivity. Mobile Broadband Class Extension (MBBCx) Writing an MBBCx client driver MBBCx API reference
M obile broadband In mobile broadband, a new topic detailing MB low level UICC access is available. Mobile operators New Hotspot and AppID settings are now a part of desktop COSA. Mobile operators are strongly encouraged to transition from broadband app experience apps with Sysdev metadata packages to MO UWP Apps and the COSA database.
P CIe New ACPI _DSD methods have been added to support these Modern Standby and PCI hot plug scenarios: Directed Deepest Runtime Idle Power State (DDRIPS) support on PCIe Root Ports Identifying PCIe Root Ports supporting hot plug in D3 Identifying externally exposed PCIe Root Ports For information, see ACPI Interface: Device Specific Data (_DSD) for PCIe Root Ports.
S ensors The SENSOR_CONNECTION_TYPES enumeration was added to clarify connection type properties.
U SB New APIs were added to simulate detach for shared connectors. If a USB device is attached to a host or has shared connector while the stack is being removed while the device is attached to a host or has shared connectors, you can simulate a detach event. At this point all attach/detach notification mechanisms are disabled. For more information, see UfxDeviceNotifyFinalExit function.
W i-fi Updates to Wi-fi driver development include a new TLV for the Nic Auto Power Saver (NAPS) advanced power management feature and updates to the platform level device recovery service (PLDR).
What's new in Windows 10, version 1709 This section describes new features and updates for driver development in Windows 10, version 1709. Back to Top
A udio The following is a list of updates to Windows Audio driver development in Windows 10, version 1709: New Configure and query audio device modules Extensive updates to voice activation More details on chained and keyword only activation A new glossary of terms Additional information on training and recognition, such as pin and audio format information An updated keyword system overview Updated information on wake on voice
A CPI The following is a list of new Advanced Configuration and Power Interface (ACPI) DDIs to support input/output buffers. ACPI_EVAL_INPUT_BUFFER_COMPLEX_V1 ACPI_EVAL_INPUT_BUFFER_COMPLEX_V1_EX ACPI_EVAL_INPUT_BUFFER_COMPLEX_V2 ACPI_EVAL_INPUT_BUFFER_COMPLEX_V2_EX ACPI_EVAL_INPUT_BUFFER_SIMPLE_INTEGER_V1 ACPI_EVAL_INPUT_BUFFER_SIMPLE_INTEGER_V2 ACPI_EVAL_INPUT_BUFFER_SIMPLE_INTEGER_V2_EX ACPI_EVAL_INPUT_BUFFER_SIMPLE_STRING_V1 ACPI_EVAL_INPUT_BUFFER_SIMPLE_STRING_V1_EX ACPI_EVAL_INPUT_BUFFER_SIMPLE_STRING_V2 ACPI_EVAL_INPUT_BUFFER_SIMPLE_STRING_V2_EX ACPI_EVAL_INPUT_BUFFER_V1 ACPI_EVAL_INPUT_BUFFER_V1_EX ACPI_EVAL_INPUT_BUFFER_V2 ACPI_EVAL_INPUT_BUFFER_V2_EX ACPI_EVAL_OUTPUT_BUFFER_V1 ACPI_EVAL_OUTPUT_BUFFER_V2 ACPI_METHOD_ARGUMENT_V1 ACPI_METHOD_ARGUMENT_V2 GIC_ITS
B iometric There are new signing requirements for Windows Biometric Drivers. For more information, see Signing WBDI Drivers.
D isplay The following is a list of new features for Windows Display driver development in Windows 10, version 1709. Display ColorSpace Transform DDIs provide additional control over color space transforms applied in the post- composition display pipeline. The D3D12 Copy Queue Timestamp Queries feature will allow applications to issue timestamp queries on COPY command lists/queues. These timestamps are specified to function identically to timestamps on other engines. Enhanced Video integration into Direct3D12 Runtime through: 1. Hardware accelerated video decoding 2. Content protection 3. Video processing H ardware notifications In Windows 10, version 1709, there is support for hardware-agnostic support of notification components such as LEDs and vibration mechanisms. For more information, see: Hardware notifications support Hardware notifications reference
W indows kernel In Windows 10, version 1709, several new routines to the Windows Kernel for drivers have been added. ExGetFirmwareType and ExIsSoftBoot – Executive library support routines. PsSetLoadImageNotifyRoutineEx – An extended image notify routine for all executable images, including images that have a different architecture from the native architecture of the operating system. MmMapMdl – A memory manager routine for mapping physical pages described by a memory descriptor list (MDL) into the system virtual address space. PoFxSetTargetDripsDevicePowerState – A PoFx routine to notify the power manager of the device's target device power state for DRIPS. The following is a list of new options for the ZwSetInformationThread routine, that are related to process policies: PROCESS_MITIGATION_CHILD_PROCESS_POLICY PROCESS_MITIGATION_PAYLOAD_RESTRICTION_POLICY PROCESS_READWRITEVM_LOGGING_INFORMATION PsGetServerSiloActiveConsoleId and PsGetParentSilo – New Silo APIs to get information about server silos that are created and destroyed on a machine. The following is a list of new RTL functions for using correlation vector to reference events and the generated logs for diagnostic purposes. CORRELATION_VECTOR RtlExtendCorrelationVector RtlIncrementCorrelationVector RtlInitializeCorrelationVector RtlValidateCorrelationVector
M obile broadband The following is a list of new features for Windows Mobile Broadband and Mobile Operator Scenarios for driver development in Windows 10, version 1709: UICC reset and modem reset Protocol Configuration Operations (PCO) Base stations information query eSIM and MBIM ReadyState guidance In Windows 10, version 1709, the desktop COSA documentation was updated to include new branding-related fields. See the list of deprecated features for other changes to Mobile Operator Scenarios.
N etworking This section outlines new features and improvements for Windows Networking driver development in Windows 10, version 1709. The following is a list of new and updated features for NDIS: Introduction to NetAdapterCx 1.1, which includes new NewAdapterCx features: More packet context options Finer link state control Improved receive buffer management and performance General performance improvements New Synchronous OID request interface in NDIS 6.80 New Receive Side Scaling Version 2 (RSSv2) in NDIS 6.80 Introduction to NDIS 6.80 Porting NDIS 6.x drivers to NDIS 6.80
V irtualized PCI There are new programming interfaces for writing a Physical Function driver for devices that conform to the PCI Express Single-Root I/O Virtualization (SR-IOV) specification. The interfaces are declared in Pcivirt.h. For more information, see PCI virtualization.
P ulse Width Modulation (PWM) Controllers In Windows 10, version 1709, to provide access to a Pulse width modulation (PWM) controller that is part of the SoC and memory-mapped to the SoC address space, you need to write a kernel-mode driver. For more information, see PWM driver for an on-SoC PWM module. To parse and validate pin paths and extract the pin number, kernel mode drivers should use PwmParsePinPath. An app can send requests to the controller driver by sending PWM IOCTLs requests.
S torage and File Systems In File Systems and Storage, the ufs.h header was added in Windows 10, version 1709 to provide additional support to Universal Flash Storage. Posix updates include new functions delete and rename. The following is a list of headers that were updated in Windows 10, version 1709: ata.h fltKernel.h minitape.h ntddscsi.h ntddstor.h ntddvol.h ntifs.h scsi.h storport.h
U SB This section describes the new features for USB in Windows 10, version 1709. Media Agnostic USB (MA-USB) protocol The USB driver stack can send USB packets over non-USB physical mediums such as Wi-Fi by using the Media Agnostic USB (MA-USB) protocol. To implement this feature, new programming interfaces have been released. The new DDIs allow the driver to determine the delays associated with the _URB_GET_ISOCH_PIPE_TRANSFER_PATH_DELAYS. That information can be retrieved by building a new URB request. For information about this new feature, see the following topics: USB client drivers for Media-Agnostic (MA-USB) _URB_GET_ISOCH_PIPE_TRANSFER_PATH_DELAYS USB Request Blocks (URBs) To support MA-USB, the host controller driver must provide the transport characteristics by implementing specific callback functions. The following table shows the callback functions and structures that support MA-USB.
CALLBACK FUNCTIONS STRUCTURES
EVT_UCX_USBDEVICE_GET_CHARACTERISTIC UCX_ENDPOINT_ISOCH_TRANSFER_PATH_DELAYS
EVT_UCX_USBDEVICE_RESUME UCX_CONTROLLER_ENDPOINT_CHARACTERISTIC_PRIORITY
EVT_UCX_USBDEVICE_SUSPEND UCX_ENDPOINT_CHARACTERISTIC
EVT_UCX_ENDPOINT_GET_ISOCH_TRANSFER_PATH_DELAYS UCX_ENDPOINT_CHARACTERISTIC_TYPE
EVT_UCX_ENDPOINT_SET_CHARACTERISTIC UCX_ENDPOINT_ISOCH_TRANSFER_PATH_DELAYS
Synchronized system QPC with USB frame and microframes There are new programming interfaces that retrieve the system query performance counter (QPC) value synchronized with the frame and microframe. This information is retrieved only when the caller enables the feature in the host controller. To enable the feature, a host controller driver must implement the following callback functions. EVT_UCX_CONTROLLER_GET_FRAME_NUMBER_AND_QPC_FOR_TIME_SYNC EVT_UCX_CONTROLLER_START_TRACKING_FOR_TIME_SYNC EVT_UCX_CONTROLLER_STOP_TRACKING_FOR_TIME_SYNC An application can use these APIs to enable/disable the feature and retrieve the information: WinUsb_GetCurrentFrameNumberAndQpc WinUsb_StartTrackingForTimeSync WinUsb_StopTrackingForTimeSync Other drivers can send these IOCTL requests to enable/disable the feature and retrieve the information: IOCTL_USB_GET_FRAME_NUMBER_AND_QPC_FOR_TIME_SYNC IOCTL_USB_START_TRACKING_FOR_TIME_SYNC IOCTL_USB_STOP_TRACKING_FOR_TIME_SYNC Here are the supporting structures for synchronized system OPC with USB frame and microframes: USB_START_TRACKING_FOR_TIME_SYNC_INFORMATION USB_STOP_TRACKING_FOR_TIME_SYNC_INFORMATION USB_FRAME_NUMBER_AND_QPC_FOR_TIME_SYNC_INFORMATION
IOCTL_UCMTCPCI_PORT_CONTROLLER_DISPLAYPORT_DISPLAY_OUT_STATUS_CHANGED The IOCTL_UCMTCPCI_PORT_CONTROLLER_DISPLAYPORT_DISPLAY_OUT_STATUS_CHANGED request is a new request in USB Type-C Port Controller Interface framework extension. This request notifies the client driver that the display out status of the DisplayPort connection has changed. Here are the structures that support the IOCTL_UCMTCPCI_PORT_CONTROLLER_DISPLAYPORT_DISPLAY_OUT_STATUS_CHANGED request: UCMTCPCI_PORT_CONTROLLER_DISPLAYPORT_DISPLAY_OUT_STATUS_CHANGED_IN_PARAMS UCMTCPCI_PORT_CONTROLLER_DISPLAYPORT_DISPLAY_OUT_STATUS What's new in Windows 10, version 1703 This section describes new and improved features for driver development in Windows 10, version 1703. Back to Top
A udio The following is a list of new topics for Audio driver development in Windows 10, version 1703: Implementing Audio Module Communication - Describes the support for communication from Universal Windows Platform (UWP) apps to kernel mode audio device drivers. New DDIs and properties reference topics to support APO Module Communications discovery: KSPROPSETID_AudioModule - A new KS Property Set that defines three properties specific to audio modules. KSPROPERTY_AUDIOMODULE_COMMAND property - Allows Audio Module clients to send custom commands to query and set parameters on Audio Modules. IPortClsNotifications - New Port Class Notifications that provide notification helpers to miniports, to support audio module communication.
B luetooth The following is a list of updates to Bluetooth in Windows 10 version 1703: Hands-Free Profile (HFP) 1.6 specification with Wideband speech on Windows 10 for desktop editions. Support for Call Control APIs on Windows 10 for desktop editions. Support for GATT Server, Bluetooth LE Peripheral and non-paired support for Bluetooth LE. See our developer post for more details. For more information about what's new for Bluetooth, see Bluetooth and Bluetooth LE pre-pairing.
C amera The following is a list of updates to Camera driver development in Windows 10, version 1703: USB Video Class (UVC) driver implementation guide Microsoft extensions to USB Video Class 1.5 specification Device transform manager (DTM) events IMFDeviceTransform interface KSCategory_Xxx Device Interface Classes KSCATEGORY_SENSOR_CAMERA KSCATEGORY_VIDEO_CAMERA
W indows kernel Windows Kernel-Mode Process and Thread Manager - Starting in Windows 10 version 1703, the Windows Subsystem for Linux (WSL) enables a user to run native Linux ELF64 binaries on Windows, alongside other Windows applications. For more information about WSL architecture and the user-mode and kernel-mode components that are required to run the binaries, see the posts on the Windows Subsystem for Linux blog.
M obile broadband Updates to Mobile Broadband (MB) include improved LTE attach features, support for Multi-SIM Operations, support for provisioning contexts into the modem, support for the Specific Absorption Rate platform, and support for network blacklisting. Updates to Mobile Operator Scenarios (MOs) include a new database format called COSA FAQ, for MOs to provision Windows Desktop MB devices. See these topics for more updates: Planning your COSA/APN database submission Submitting the COSA/APN database update Testing your COSA/APN database submission
N etworking Updates to Networking driver development in Windows 10, version 1703 includes a new type of socket called Stream Sockets, which support Linux networking applications on Windows. See Winsock Kernel for more info. New functions and structures include WskConnectEx, WskListen, WSK_CLIENT_STREAM_DISPATCH, and WSK_PROVIDER_STREAM_DISPATCH
P OS The following is a list of new topics for POS in Windows 10, version 1703: Bluetooth barcode scanner UUIDs BarcodeSymbologyDecodeLenthType enumeration BarcodeSymbologyAttributesData structure There is a new Gs1DWCode symbology to the BarcodeSymbology enumeration.
U SB Windows 10 version 1703 provides a new class extension (UcmTcpciCx.sys) that supports the Universal Serial Bus Type-C Port Controller Interface Specification. A USB Type-C connector driver does not need to maintain any internal PD/Type-C state. The complexity of managing the USB Type-C connector and USB Power Delivery (PD) state machines is handled by the system. You only need to write a client driver that communicates hardware events to the system through the class extension. For more information, see USB Type-C Controller Interface driver class extensions reference.
What's new in Windows 10, version 1607 Back to Top This section describes new features and improvements for driver development in Windows 10, version 1607.
A udio The following is a list of new topics for Audio driver development in Windows 10, version 1607. Windows Audio Architecture Structures and properties to better support the Cortana experience: KSPROPERTY_AUDIO_MIC_SENSITIVITY KSPROPERTY_AUDIO_MIC_SNR KSAUDIO_PACKETSIZE_CONSTRAINTS2 PKEY_AudioEndpoint_Default_VolumeInDb – An INF key that provides the user a better experience when appropriate gain or attenuation is applied to the audio signal.
C amera Camera driver development in Windows 10, version 1607 includes new and updated topics to support Windows Hello and face authentication: Windows Hello camera driver bring up guide Extended camera controls KSPROPERTY_CAMERACONTROL_EXTENDED_FACEAUTH_MODE
L ocation Location driver development in Windows 10, version 1607 includes the following new GNSS Breadcrumb DDIs: GNSS_BREADCRUMB_LIST GNSS_BREADCRUMB_V1 GNSS_BREADCRUMBING_ALERT_DATA GNSS_BREADCRUMBING_PARAM IOCTL_GNSS_LISTEN_BREADCRUMBING_ALERT IOCTL_GNSS_POP_BREADCRUMBS IOCTL_GNSS_START_BREADCRUMBING IOCTL_GNSS_STOP_BREADCRUMBING
P rint Printer driver development in Windows 10, version 1607 includes JSConstraintsDebug, a command-line tool that provides debugging support for JavaScript Constraints while developing a V4 printer driver.
W LAN In Windows 10, version 1607, there are new and updated topics for WLAN Device Driver Interface (WDI) version 1.0.21. For details, see WDI doc change history.
What's new in Windows 10, version 1507 Back to Top This section describes new and updated features for driver development in Windows 10.
B luetooth In Windows 10, new Microsoft-defined Bluetooth HCI extensions have been added.
B uses and Ports Driver programming interfaces and in-box drivers for Simple Peripheral Bus (SPB) such as I2C and SPI, and GPIO are part of OneCoreUAP-based editions of Windows. Those drivers will run on both Windows 10 for desktop editions and Windows 10 Mobile, as well as other Windows 10 versions.
C amera The camera driver DDIs have converged into a Universal Windows driver model, including new camera DDIs. Additional features include: Digital video stabilization Variable frame rate Face detection Video high dynamic range (HDR) Optical stabilization Scene analysis: photo HDR, flash no flash, ultra low light Capture stats: metadata framework/attributes, histograms Smooth zoom Hardware optimization hints Camera profiles
C ellular Cellular architecture and implementation for Windows 10 has been updated.
D isplay The display driver model from Windows 8.1 and Windows Phone have converged into a unified model for Windows 10. A new memory model is implemented that gives each GPU a per-process virtual address space. Direct addressing of video memory is still supported by WDDMv2 for graphics hardware that requires it, but that is considered a legacy case. IHVs are expected to develop new hardware that supports virtual addressing. Significant changes have been made to the DDI to enable this new memory model.
H uman Interface Device (HID) The new Virtual HID Framework (VHF) eliminates the need for writing a kernel-mode transport minidriver. The framework comprises a Microsoft-provided static library (Vhfkm.lib) that exposes programming elements used by your driver. It also includes a Microsoft-provided in-box driver (Vhf.sys) that enumerates one or more child devices and proceeds to build a virtual Human Interface Device (HID) tree. Write a HID source driver by using Virtual HID Framework (VHF) Virtual HID Framework
L ocation The Global Navigation Satellite System (GNSS) driver DDIs have converged to a GNSS Universal Windows driver model (UMDF 2.0).
N ear Field Communication (NFC) The NFC DDIs have a new converged driver model to support mobile and desktop solutions. NFC Class Extension: A new NFC class extension driver is available. The NFC class extension driver implements all of the Windows-defined DDIs to interact with the NFC controller, secure elements, and remote RF endpoints.
N etworking The new PacketDirect Provider Interface (PDPI) is available as an extension to the existing NDIS miniport driver model. The PDPI provides an I/O model that allows applications to manage their own buffers, poll processors, and directly manage sending and receiving packets over a miniport adapter. The combination of these capabilities allow the application to completely control its own contexts leading to a much higher packet-per-second (pps) ratio.
P rint The print driver is updated with v4 Print driver improvements and changes to support wireless printing from mobile devices, as well as the following: V4 Driver Manifest – Provides information on changes to the v4 print driver manifest to support the PWG Raster rendering filter, including updated DriverConfig and DriverRender directives, and an updated example manifest. WS-Discovery Mobile Printing Support – Describes the WS-Discovery requirements to enable mobile printing from Windows 10 Mobile devices to Windows 10 Mobile compatible printers. IXpsRasterizationFactory2 interface – Supports printer content conversion from XPS to PWG Raster using the XPS Rasterization Service. PWG Raster supports non-square DPIs. Print Pipeline Property Bag – New PrintDeviceCapabilities property to enable XPS rendering filters to retrieve the new PrintDeviceCapabilities XML files from the Print filter pipeline property bag. GetWithArgument Request and Response Schemas – Provides support for mobile printing with a formal definition and example for the GetWithArgument request and response bidirectional communications schemas. IBidiSpl::SendRecv method – Adds support for mobile printing with the GetWithArgument bidirectional schema value.
S mart Card In Windows 10, there is a new class extension module, Wudfsmcclassext.dll, which handles complex driver operations. Smart card hardware-specific tasks are handled by your client driver. There are new programming interfaces that your client driver can use to send information about the card to the class extension so that it can process requests. Those driver programming interfaces are part of OneCoreUAP-based editions of Windows. Smart card client driver event callback functions Smart card client driver support methods
S torage In Windows 10, new protocol-specific interfaces have been added to allow apps to talk with storage devices using their native device protocol. These updates include: Storage protocol pass through – The updated storage pass through IOCTL interface supports newer protocols including non-volatile memory express (NVMe). Expanded storage query interfaces – The expanded storage query interface allows applications to query protocol-dependent information.
S ystem-Supplied Driver Interfaces The GUID_DEVICE_RESET_INTERFACE_STANDARD interface defines a standard way for function drivers to attempt to reset and recover a malfunctioning device.
U SB Here are the new features for USB in Windows 10. For more information, see Windows 10: What's new for USB. Native support for USB Type-C as defined in the USB 3.1 specification. If you are building a system with USB Type-C connectors, you can use the in-box USB Type-C Connector System Software Interface (UCSI) driver or write a USB Type-C connector driver.. The dual role feature allows a mobile device, such as a phone, a phablet or a tablet, to designate itself as being a device or a host. See USB Dual Role Driver Stack Architecture for more information. Support for writing a driver for USB emulated devices by using the Microsoft-provided USB device emulation class extension (UdeCx). Support for writing a driver for a host controller that is not xHCI specification-compliant or a virtual host controller. To write such a driver, see Developing Windows drivers for USB host controllers. Support writing function controller driver by using USB function class extension (UFX). See Developing Windows drivers for USB function controllers.
W LAN WDI (WLAN Device Driver Interface) is a new WLAN Universal Windows driver model that converges the WLAN drivers on Windows 10 for desktop editions and Windows 10 Mobile. Back to Top
Deprecated features The following table describes Windows driver development features that have been removed in Windows 10.
DRIVER TECHNOLOGY FEATURE DEPRECATED IN
GNSS/Location Geolocation driver sample for Windows Windows 10, version 1709 8.1 and related documentation
Mobile Operator Scenarios AllowStandardUserPinUnlock Windows 10, version 1709 (Networking)
Scan/Image WSD (Web Services for Devices) Windows 10, version 1709 Challenger functionality and related documentation DRIVER TECHNOLOGY FEATURE DEPRECATED IN
Mobile Operators Mobile broadband app experience apps Windows 10, version 1803 with Sysdev metadata packages are deprecated in favor of MO UWP APPS and COSA. Download the Windows Driver Kit (WDK) 8/27/2019 • 2 minutes to read • Edit Online
The WDK is used to develop, test, and deploy Windows drivers. The latest public version of WDK is available below. Join the Windows Insider Program to get WDK Insider Preview builds. For installation instructions for the Windows Insider Preview builds, see Installing preview versions of the Windows Driver Kit (WDK). Learn what's new in driver development Review known issues WDK for Windows 10, version 1903
Step 1: Install Visual Studio 2019 The following editions of Visual Studio 2019 support driver development: Download Visual Studio Community 2019 Download Visual Studio Professional 2019 Download Visual Studio Enterprise 2019 When you install Visual Studio 2019, select the Desktop development with C++ workload. The Windows 10 Software Development Kit (SDK) is automatically included, and is displayed in the right-hand Summary pane. However, the version of the SDK that is compatible with the WDK for Windows 10, version 1903 is not currently the default SDK. To select the correct SDK: In Visual Studio Installer, on the Workloads tab, under Installation Details, expand Universal Windows Platform development. Under Optional, select Windows 10 Preview SDK (10.0.18362.0). Continue with the install. If you already have Visual Studio 2019 installed, you can install the Windows 10 Preview SDK (10.0.18362.0) by using the Modify button in Visual Studio install. For ARM/ARM64 driver development, choose Individual components and under Compilers, build tools, and runtimes select Visual C++ compilers and libraries for ARM/ARM64. For each architecture you intend to build drivers for, install the Spectre mitigated libraries thru Individual Components -> Compilers, build tools, and runtimes -> MSVC v142 - VS 2019 C+ x64/x86 Spectre-mitigated libs (v14.21).
Step 2: Install WDK for Windows 10, version 1903 Download WDK for Windows 10, version 1903 New as of 1709 release: The WDK installation will by default install the WDK Visual Studio extension. This must be done in order for WDK VS integration to work. Enterprise WDK for Windows 10, version 1903 (EWDK) The EWDK is a standalone self-contained command-line environment for building drivers. It includes the Visual Studio Build Tools, the SDK, and the WDK. The latest public version of the EWDK contains Visual Studio 2019 Build Tools 16.0.0. To get started, mount the ISO and run LaunchBuildEnv.
EWDK with Visual Studio Build Tools Download EWDK for Windows 10, version 1903 Additional information Release notes and run-time requirements WDK requires Visual Studio, for more information more info on system requirements for Visual Studio please review Visual Studio 2019 System Requirements. EWDK will additionally need .NET 4.7.2, for more information on what .NET runs on please review .NET Framework system requirements. You can use the WDK to develop drivers for these operating systems:
CLIENT OS SERVER OS
Windows 10 Windows Server 2019, Windows Server 2016
Windows 8.1 Windows Server 2012 R2
Windows 8 Windows Server 2012
Windows 7 Windows Server 2008 R2 SP1
Universal Windows driver samples To get universal Windows driver samples, do one of the following: Go to the driver samples page on GitHub and click Clone or download > Download ZIP on the right side of the page. Download the GitHub Extension for Visual Studio to connect to the GitHub repositories. Browse the driver samples on the Microsoft Samples portal. Related downloads Download the WDK Insider Preview Download previous versions of the WDK Download the Windows Assessment and Deployment Kit (Windows ADK) Download the Windows HLK, HCK, or Logo Kit Download the debugging Tools for Windows (WinDbg) Download Windows Symbol Packages Installing preview versions of the Windows Driver Kit (WDK) 8/30/2019 • 2 minutes to read • Edit Online
This page contains installation instructions for Insider Preview (pre-release) versions of the Windows Driver Kit (WDK). The download links for the latest pre-release version of the WDK and the EWDK are on https://www.microsoft.com/software-download/windowsinsiderpreviewWDK. For info about the latest released versions of the WDK, see Download the Windows Driver Kit (WDK). For downloads of earlier versions of the WDK, see Other WDK downloads. Install Windows Driver Kit (WDK) Insider Preview 1. Install Visual Studio The WDK now supports Visual Studio 2019. All editions are supported. The WDK no longer supports Visual Studio 2017. Download from https://visualstudio.microsoft.com/vs/preview/. Select workload: Development with C++. ARM: To build ARM drivers you must additionally install the component: Individual components -> Compilers, build tools, and runtimes -> Visual C++ compilers and libraries for ARM. ARM64: Currently not supported. 2. Disable strong name validation The WDK Visual Studio Extensions are currently not strong name signed. Run the following commands from an elevated command prompt to disable strong name validation:
reg add HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\StrongName\Verification\*,31bf3856ad364e35 /v TestPublicKey /t REG_SZ /d 00240000048000009400000006020000002400005253413100040000010001003f8c902c8fe7ac83af7401b14c1bd103973b26dfafb2b7 7eda478a2539b979b56ce47f36336741b4ec52bbc51fecd51ba23810cec47070f3e29a2261a2d1d08e4b2b4b457beaa91460055f78cc89 f21cd028377af0cc5e6c04699b6856a1e49d5fad3ef16d3c3d6010f40df0a7d6cc2ee11744b5cfb42e0f19a52b8a29dc31b0 /f
reg add HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\StrongName\Verification\*,31bf3856ad364e35 /v TestPublicKey /t REG_SZ /d 00240000048000009400000006020000002400005253413100040000010001003f8c902c8fe7ac83af7401b14c1bd103973b26dfafb2b7 7eda478a2539b979b56ce47f36336741b4ec52bbc51fecd51ba23810cec47070f3e29a2261a2d1d08e4b2b4b457beaa91460055f78cc89 f21cd028377af0cc5e6c04699b6856a1e49d5fad3ef16d3c3d6010f40df0a7d6cc2ee11744b5cfb42e0f19a52b8a29dc31b0 /f
3. Install SDK Insider Preview Get SDK Insider Preview 4. Install WDK Insider Preview Get WDK Insider Preview
NOTE During installation you will see the Visual Studio installer install the WDK Visual Studio Extensions.
Install Enterprise WDK (EWDK) Insider Preview The EWDK is a standalone self-contained command-line environment for building drivers. It includes Build Tools for Visual Studio 2019, the SDK, the WDK and support for ARM64 driver development. See more at Installing the Enterprise WDK. Get the Enterprise Windows Driver Kit (EWDK) Insider Preview To get started mount the ISO and click LaunchBuildEnv. Run-time requirements for the WDK and the EWDK The WDK requires Visual Studio. For more info about system requirements for Visual Studio, see Visual Studio 2019 System Requirements. In addition, the EWDK requires .NET 4.7.2. For more info about what .NET runs on, see .NET Framework system requirements. You can use the WDK Insider Preview and the EWDK Insider Preview to develop drivers for these operating systems:
CLIENT OS SERVER OS
Windows 10 Windows Server 2016
Windows 8.1 Windows Server 2012 R2
Windows 8 Windows Server 2012
Windows 7 Windows Server 2008 R2 SP1 Other WDK downloads 6/25/2019 • 6 minutes to read • Edit Online
This topic contains information about earlier versions of the Windows Driver Kit (WDK), Enterprise WDK (EWDK), and additional downloads for support purposes. To develop drivers, use the latest public versions of the Windows Driver Kit (WDK) and tools, available for download on Download the Windows Driver Kit (WDK). The Windows Driver Kit (WDK) is used to develop, test, and deploy Windows drivers. To develop drivers, use the latest public versions of the Windows Driver Kit (WDK) and tools, available for download on Download the Windows Driver Kit (WDK). This topic contains information about earlier versions of the WDK, the Enterprise WDK (EWDK), and additional downloads for support purposes. To use these earlier versions, you must first install the version of Visual Studio that is appropriate for your targeted platform. Step 1: Install Visual Studio Development of drivers is supported for specific versions of Visual Studio. To develop a driver for a specific version of Windows, you must use one of the versions of Visual Studio that are identified (and linked for download) in the following table.
TARGETED VERSIONS OF WINDOWS EDITION(S) OF VISUAL STUDIO
Windows 10, version 1809 Visual Studio Community 2017 Windows 10, version 1803 Visual Studio Professional 2017 Windows 10, version 1709 Visual Studio Enterprise 2017
Windows 10, version 1703 Visual Studio Express 2015 for Desktop Windows 10, version 1607 Visual Studio Community 2015 Visual Studio Professional 2015 Visual Studio Enterprise 2015
Windows 8.1 Update Visual Studio 2013 Windows 8.1
Windows 8 Visual Studio Professional 2012 Visual Studio Ultimate 2012
Configure Visual Studio for Windows 10, versions 1709, 1803, and 1809 When you install Visual Studio, select the Desktop development with C++ workload. The Windows 10 Software Development Kit (SDK) is automatically included and is displayed in the right-hand Summary pane. To develop drivers for ARM/ARM64, choose Individual components and under Compilers, build tools, and runtimes select Visual C++ compilers and libraries for ARM/ARM64. Install the Windows SDK to target Windows 10, versions 1607 and 1703 If your development targets systems that run Windows 10, version 1607 or Windows 10, version 1703, you should install Visual Studio 2015, and then also download and install the version of the Windows SDK for the targeted version of Windows 10, as identified in the following table. TARGETED VERSIONS OF WINDOWS VERSION OF WINDOWS SDK
Windows 10, version 1703 Windows SDK for Windows 10.0.15063.468
Windows 10, version 1607 Windows SDK for Windows 10.0.14393.795
Windows 8.1 Windows SDK for Windows 8.1
Windows 8 Windows SDK for Windows 8
The Windows SDK was not included in Visual Studio 2015, so you must install the SDK separately. Later versions of Visual Studio include the Windows SDK. Step 2: Install the WDK The WDK is integrated with Visual Studio and Debugging Tools for Windows (WinDbg). This integrated environment gives you the tools you need to develop, build, package, deploy, test, and debug drivers.
NOTE Starting with Windows 10, version 1709, installing the WDK will by default install the WDK extensions for Visual Studio. These extensions are required for integration of the WDK with Visual Studio.
VERSIONS OF WINDOWS WDK AND RELATED DOWNLOADS
Windows 10, version 1809 WDK for Windows 10, version 1809
Windows 10, version 1803 WDK for Windows 10, version 1803
Windows 10, version 1709 WDK for Windows 10, version 1709
Windows 10, version 1703 WDK for Windows 10, version 1703
Windows 10, version 1607 WDK for Windows 10, version 1607
Windows 8.1 Update WDK 8.1 Update (English only) WDK 8.1 Update Test Pack (English only) WDK 8.1 Samples
Windows 8 WDK 8 (English only) WDK 8 redistributable components (English only) WDK 8 Samples
Windows XP WDK 7.1.0 Windows Server 2003 IMPORTANT If you have installed the WDK for Windows 10, version 1703 on a system that had the WDK for Windows 10, version 1607 installed, some files from the earlier version of the WDK might have been removed. To restore these files: 1. On the Start menu, enter Apps & features in the search box, and select Apps & features from the results. 2. Find Windows Driver Kit - Windows 10.0.15063.0 in the list of Apps & Features, and then select the program. 3. Select Modify, select Repair, and then follow the directions on the screen. 4. The files will be restored.
Optional: Install the EWDK The Enterprise WDK (EWDK) is a standalone, self-contained, command-line environment for building drivers and basic Win32 test applications. It includes the Visual Studio Build Tools, the SDK, and the WDK. This environment doesn't include all the features available in Visual Studio, such as the integrated development environment (IDE). Using the EWDK requires .NET Framework 4.6.1. For more information about which systems run this version of the framework, see .NET Framework system requirements. For links to download the .NET Framework, see Install the .NET Framework for developers. For more information about the EWDK, see Using the Enterprise WDK 10.
VERSIONS OF WINDOWS EWDK
Windows 10, version 1809 EWDK for Windows 10, version 1809
Windows 10, version 1803 EWDK for Windows 10, version 1803
Windows 10, version 1709 EWDK for Visual Studio with Build Tools 15.6 (Recommended) EWDK for Visual Studio with Build Tools 15.4 EWDK for Visual Studio with Build Tools 15.2
Windows 10, version 1703 EWDK for Windows 10, version 1703
NOTE Starting in Windows 10 version 1709, the EWDK is ISO-based. To get started, download and mount the ISO, and then run LaunchBuildEnv.
Optional: Install updated test certificates for HAL extensions To work with HAL Extensions, prepare your development system, running Windows 10, version 1709 or a later version of Windows 10. Also install the WDK or the EWDK, and then install the updated version of the Windows OEM HAL Extension Test Cert 2017 (TEST ONLY), available for download as a ZIP file: HAL_Extension_Test_Cert_2017.zip. For more information about using this updated certificate, see Update for "Windows OEM HAL Extension Test Cert 2017 (TEST ONLY)" test certificate on Windows Support. Optional: Install WinDbg Preview WinDbg Preview is a new version of WinDbg with more modern visuals, faster windows, a full-fledged scripting experience, built with the extensible debugger data model front and center. WinDbg Preview supports debugging every version of Windows 10. For download links and more information about WinDbg Preview, see Download WinDbg Preview. Standalone tools for debugging Windows XP and Windows Vista If you're debugging Windows XP, Windows Server 2003, Windows Vista, or Windows Server 2008 (or using one of these operating systems to run Debugging Tools for Windows), you need to use the Windows 7 release of the debugging tools. It's included in the SDK for Windows 7 and .NET Framework 4.0.
IMPORTANT Newer versions of the Visual C++ 2010 Redistributable can cause issues when you install the SDK for Windows 7. For more information, see Windows SDK Fails to Install with Return Code 5100 on Microsoft Support.
Get the standalone debugging tools for Windows XP by first downloading the Windows 7 SDK: Microsoft Windows SDK for Windows 7 and .NET Framework 4. To install the Debugging Tools for Windows as a standalone component, start the SDK installer, and in the installation wizard, select Debugging Tools for Windows, and clear all other components. Related downloads Download the Windows Assessment and Deployment Kit (Windows ADK) Download the Windows HLK, HCK, or Logo Kit Download the debugging Tools for Windows (WinDbg) Download Windows Symbol Packages Download the WDK Insider Preview Bring up guide 6/25/2019 • 2 minutes to read • Edit Online
NOTE Some topics in this section may apply only to Windows 10 Mobile and certain processor architectures.
This section of the partner documentation is designed for hardware engineers and developers who need to understand how to get started with bringing up hardware on Windows 10 and Windows Server 2016. In this section
TOPIC DESCRIPTION
Firmware Windows Engineering Guide (WEG) The Firmware Windows Engineering Guide (WEG) provides a roadmap to follow through in implementing system firmware-related best practices.
Boot and UEFI Provides guidance about the boot process and UEFI implementation requirements for devices that run Windows 10 and Windows Server 2016.
Windows ACPI design guide for SoC platforms The Advanced Configuration and Power Interface Specification, Revision 5.0 (ACPI 5.0 specification), defines a new set of features to support low-power, mobile devices that are based on System on a Chip (SoC) integrated circuits and that implement the connected standby power model. Starting with Windows 8 and Windows 8.1, and Windows Server 2012 and 2012 R2, Windows supports the new ACPI 5.0 features for SoC- based platforms.
Security Use the topics in this section to learn more about security in Windows 10 Mobile and Windows Server 2016.
Windows 10 Mobile partition layout Learn how to configure storage partitions and partitions sizes on Windows 10 Mobile devices. Developing, Testing, and Deploying Drivers 8/26/2019 • 2 minutes to read • Edit Online
The Windows driver development environment and the Windows debuggers are integrated into Microsoft Visual Studio. In this integrated driver development environment, most of the tools you need for coding, building, packaging, deploying, and testing a driver are available in the Visual Studio user interface. To set up the integrated development environment, first install Visual Studio and then install the WDK. You can find information about how to get Visual Studio and the WDK here. Debugging Tools for Windows is included when you install the WDK. The WDK uses MSBuild.exe, which is available both in the Visual Studio user interface and as a command-line tool. Drivers created in the Visual Studio environment use Project and Solution files to describe a project or group of projects. The Visual Studio environment provides a tool for converting legacy Sources and Dirs files to Project and Solution files. The Visual Studio environment provides templates for: New drivers Driver packages New tests Enhancement of existing tests Custom driver deployment scripts In the Visual Studio environment, you can configure the build process so that it automatically creates and signs a driver package. Static and run-time analysis tools are available in Visual Studio. You can configure a target computer for testing your driver and automatically deploy your driver to the target computer each time you rebuild. You can choose from an extensive set of run-time tests, and you can write your own tests. The topics in this section show you how to use Visual Studio to perform several of the tasks involved in driver development, deployment, and testing. Additional Videos You'll find videos on the following pages in the Windows driver docs: What's New in HID Capture and view USB traces with Microsoft Message Analyzer Using the Windows Performance Toolkit (WPT) with WDF Video: Accessing driver IFR logs without a debugger Video: Debugging your driver with WDF source code Videos: Debugging UMDF Drivers The Partner Center for Windows Hardware enables you to create and manage your system and driver submissions quickly and easily. It replaces the legacy (Sysdev) dashboard for hardware tasks including: hardware certification, collaborative driver development, and driver distribution through Windows Update. To get started, watch our introductory video series, and see Get started with the hardware program for registration details.