Programming reference for developing Windows drivers

This section contains information about each of the supported Windows driver technologies. For design guidance in creating drivers, see the Windows programming guide for driver technologies.

The majority of the driver technology information is the same for all editions of Windows 10. When you must make special considerations for a particular edition of Windows, such as for Windows 10 Mobile, we explicitly called these out in each technology area. For general information about developing drivers see Write your first driver.

Universal Windows drivers

You can create a Universal Windows driver—a driver that uses a subset of the interfaces that are available to a Windows driver—to run on all editions of Windows 10. Where possible, use a Universal Windows driver to enable deployment of your drivers on multiple devices. For more information about how to build, install, deploy, and debug a Universal Windows driver for Windows 10, see Getting Started with Universal Windows drivers and Deploying a Driver to a Test Computer.

Device drivers and Windows 10 for desktop computers

For information about the tools used to develop desktop drivers, see Device and Driver Development Tools and Tools for Verifying Drivers. For information about deploying drivers to Windows 10 on a desktop, see Device and Driver Installation. For information about troubleshooting driver installation, see Troubleshoot Driver Configuration.

Device drivers and Windows 10 Mobile

Windows 10 Mobile is optimized for the unique needs of mobile devices. Instead of copying the driver to the desktop or installing it using device manager, you add a driver to the OS on a mobile device by using a package. For more information about working with packages see Creating mobile packages. Also, a driver on a mobile device needs to be signed using a specific process to maintain integrity of the OS, as explained in Mobile code signing. For a walkthrough of adding a device driver to a mobile device such as a phone, see Adding a driver to a test image.

This section describes the following Windows driver technologies:

Technology Description
ACPI reference

Reference information for device drivers that interface with Advanced Configuration and Power Interface (ACPI) devices. ACPI devices are defined by the Advanced Configuration and Power Interface (ACPI) Specification.

For conceptual information, see the ACPI design guide.

Audio Devices reference

Reference pages for audio drivers that conform to the Windows Driver Model (WDM) and reference pages for interfaces for audio processing objects.

For conceptual information, see the Audio Devices Design Guide.

Battery Devices reference

Reference pages for battery devices.

For conceptual information, see the Battery Devices Design Guide.

Biometric Devices reference

Reference pages for Biometric error codes, IOCTLs, and structures.

For conceptual information, see the Biometric Devices Design Guide.

Bluetooth Devices reference

Reference pages for Bluetooth Profile Drivers.

For conceptual information, see Bluetooth Profile Drivers.

Device and Driver Installation Reference

Reference pages for device and driver installation.

For conceptual information, see Device and Driver Installation.

Display Devices (Adapters and Monitors) reference

Reference pages for display drivers.

For conceptual information, see the Display Devices Design Guide.

Driver Development Tools reference

Reference pages for driver development tools.

For conceptual information, see the Driver Development Tools.

Windows Device Testing Framework reference

The interfaces, methods, and properties that you can use in the Microsoft Windows Device Testing Framework (WDTF).

For conceptual information, see the Windows Device Testing Framework (WDTF) design guide.

GPIO driver reference

Reference information about Windows driver support for general-purpose I/O (GPIO) controllers. Additionally, this section describes the GPIO-specific I/O control codes (IOCTLs), which peripheral device drivers use to send I/O requests to their GPIO-connected peripheral devices.

For conceptual information, see the General-Purpose I/O (GPIO) Driver Design Guide.

Human Interface Devices reference

Reference pages for HID.

For conceptual information, see HID drivers.

IEEE 1394 Bus reference

Reference pages for IEEE 1394 bus.

For conceptual information, see the IEEE 1394 bus driver design guide.

Imaging Devices (Scanner) reference

Reference information for Windows Image Acquisition (WIA) drivers and for Still Imaging (STI) drivers. These drivers control devices, including scanners and cameras, that capture still images. For more information about these drivers, see Windows Image Acquisition Drivers and Still Image Drivers.

For conceptual information, see the Imaging Devices Design Guide.

Infrared Devices reference

Reference pages for infrared devices.

For conceptual information, see the Infrared Design Guide.

Installable File System Drivers

Reference documentation for developing drivers for installable file systems.

For information about using the DDIs, see the Installable file systems driver design guide.

Kernel-Mode Driver reference

Reference material that includes specific details about the routines, structures, and data types that you will need to use to write kernel-mode drivers.

For conceptual information, see the Kernel-Mode Driver Architecture Design Guide.

MCA reference

Microsoft Windows generic hardware abstraction layers (HAL) for Intel architectures support the Machine Check Architectures (MCA) for the Intel Pentium Pro and Itanium processors. The HAL enables Machine Check Exception (MCE) reporting for all implementation-defined errors.

Modem Devices reference

Reference pages for modem devices.

For conceptual information, see the Modem Devices Design Guide.

Multifunction Devices reference

Driver and installation requirements for various types of multifunction devices.

For conceptual information, see the Multifunction device driver design guide.

Windows Vista and Later Networking reference

Functions, callbacks, macros, structures, and enumerations used in Windows networking device drivers starting with Windows Vista. The header files that contain the topics defined in this section are included in the WDK.

For conceptual information, see the Network Driver Design Guide.

Network Drivers Prior to Windows Vista reference

Reference pages for network drivers prior to Windows Vista.

For conceptual information, see the Windows 2000 and Windows XP Networking Design Guide.

Parallel Devices reference

Reference pages for parallel devices.

For conceptual information, see the Parallel Device Driver Design Guide.

PCMCIA Bus Driver reference

Reference pages for PCMCIA bus drivers.

For conceptual information, see the PCMCIA Bus Driver Design Guide.

Point of Service reference

The Microsoft POS API provides applications with a simple and consistent interface for communicating with Point of Service (POS) peripheral devices, such as bar code scanners and magnetic card readers.

For conceptual information, see the POS design guide.

Power Metering and Budgeting Reference

Describes the data types that are supported by the Power Metering and Budgeting (PMB) infrastructure and the WDM-based Power Meter Interface (PMI).

For conceptual information, see the Power Metering and Budgeting Design Guide.

Energy Metering Interface Starting in Windows 10, drivers can implement the Energy Metering Interface (EMI) to expose energy consumption data to clients. This interface consists of a set of standardized IOCTLs for clients to get energy data as well as data about the metering hardware and the hardware being metered.
Print Devices reference

Functions, structures, methods, and properties used in printer drivers and spooler components.

For conceptual information, see the Printer driver design guide.

NFC reference

Reference documentation for developing drivers for near field communication (NFC) or near field proximity (NFP) devices.

For information, see Near field communication (NFC) design guide.

Radio Management reference

The Radio Management API enables the creation of a wireless radio manager for portable devices. For each radio technology, a radio manager reports radio state changes on a radio device to the UX and is also responsible for passing any commands to third-party radio management software.

SD driver reference

Reference for writing SD bus drivers.

For conceptual information, see the SD Bus Driver Design Guide.

Windows SideShow Devices reference

Reference pages for Windows SideShow devices.

For conceptual information, see the Windows SideShow Driver Design Guide.

Sensor Devices reference

Reference information for sensor and GNSS device driver DDIs.

For conceptual information, see the GNSS driver design guide.

Serial Controller Driver reference

Reference information for the Windows serial I/O request interface that is used by drivers and applications to send I/O requests to serial ports. Also described is the device driver interface (DDI) that an extension-based serial controller driver uses to communicate with version 1 or 2 of the serial framework extension (SerCx or SerCx2). The serial I/O request interface is supported by SerCx and SerCx2, and by the inbox serial driver, Serial.sys. Serial.sys is augmented by the Serenum service and the COM port database.

For conceptual information, see the Serial Controller Driver Design Guide.

Smart Card Reader Devices reference

Reference guide for developing drivers for smart card reader devices. Starting with Windows 10, the driver interfaces for smart card reader devices are contained within the smart card class extension module, Wudfsmcclassext.dll. This inbox component is a part of OneCoreUAP-based editions of Windows, and recommended when writing non-legacy smart card drivers. These drivers will run on both Windows 10 for desktop editions (Home, Pro, Enterprise, and Education) and Windows 10 Mobile, as well as other Windows 10 versions. For step-by-step guidance, see Getting Started with Universal Windows drivers.

For conceptual information, see the Smart Card Reader Devices Design Guide.

SPB driver reference

Reference information about Windows driver support for simple peripheral buses (SPBs). The SPB category includes synchronous serial buses such as I²C and SPI. The SpbCx I/O Control Codes subsection applies both to SPB controller drivers and to device drivers for SPB-connected peripherals. The remaining subsections apply only to SPB controller drivers, and describe the device driver interface (DDI) between the SPB framework extension (SpbCx) and the SPB controller driver.

For conceptual information, see the Simple Peripheral Bus (SPB) Driver Design Guide.

Storage Devices reference

Reference documentation for developing storage drivers.

For information about using the DDIs, see the Storage driver design guide.

Streaming Media Devices reference

Reference pages for streaming media devices.

For conceptual information, see the Streaming media devices design guide.

Software Device API reference

You can use the Software Device API to create a PnP device from an app. The API lets you enumerate the device as a child of any existing parent device. The API also lets you register device interfaces against the enumerated devices and set properties for the devices and interfaces.

Windows Touch Drivers reference

Windows Pointer Device refers to devices that support pen (stylus input), touch, or multi-touch functionality.

USB reference

The system-defined enumerations and constants that are used by Universal Serial Bus (USB) client drivers on Windows Driver Model (WDM) platforms.

For conceptual information, see Universal Serial Bus (USB).

Windows Driver Frameworks reference

Starting in User-Mode Driver Framework (UMDF) version 2.0, you can write a UMDF driver in the C programming language that calls many of the methods that are available to Kernel-Mode Driver Framework (KMDF) drivers.

These topics contain reference information that applies to both KMDF and UMDF 2.0 drivers. The last section contains information that applies only to UMDF 1.x drivers.

For conceptual information, see the Using WDF to Develop a Driver.

Windows Hardware Error Architecture reference

Reference pages for Windows Hardware Error Architecture (WHEA).

For conceptual information, see the Windows Hardware Error Architecture (WHEA) design guide.

Windows Portable Devices reference

Reference pages for portable devices.

For conceptual information, see the Windows Portable Devices.

 

 

 

Send comments about this topic to Microsoft

Show: