Developing a Device Driver
Other versions of this page are also available for the following:
A device driver is software that abstracts the functionality of a physical or virtual device. A device driver manages the operation of these devices. Examples of physical devices are network adapters, timers, and universal asynchronous receiver-transmitters (UARTs). An example of a virtual device is a file system. Implementing a device driver allows the functionality of your device to be exposed to applications and other parts of the operating system (OS). While developing a device driver, take advantage of the services provided by the OS. Although Windows Embedded CE device drivers are privileged modules, they do not have to run in kernel mode.
Many Windows Embedded CE device drivers implement the stream interface. The core stream interface entry points are XXX_Open (Device Manager), XXX_Close (Device Manager), XXX_Read (Device Manager), and XXX_Write (Device Manager). For more information, see Stream Interface Drivers.
Network adapters, display adapters, mouse devices, keyboards, and other special-purpose devices do not use the stream interface. These devices use an interface that suits the device's functionality.
Regardless of the interface that your device driver exposes, you might have to implement an interrupt service routine (ISR). For more information about interrupts and ISRs, see Interrupts.
Different processes load different drivers. The following table shows the processes that load drivers and what drivers each process loads.**
File System (FileSys.dll)
FileSys.dll loads file system drivers. For more information, see File Systems.
Device Manager (Device.dll)
Device.dll loads audio drivers, battery drivers, keyboard drivers, mouse drivers, NDIS drivers, notification LED drivers, serial drivers, PC Card drivers, USB drivers, and any other driver that exposes the stream interface. Device.dll loads most of its drivers with ActivateDeviceEx, and these drivers expose a stream interface. For more information, see Device Manager.
Graphics, Windowing, and Events Subsystem (GWES.dll)
GWES.dll loads a device driver if GWES is the only client of a driver. Device drivers loaded by GWES present a standard set of functionality for all similar devices. Drivers that GWES loads might expose the stream interface or they might expose other interfaces. Having alternatives make accessing the drivers much faster. GWES loads display drivers, printer drivers, and touch screen drivers. For more information, see Shell, GWES, and User Interface.
In This Section
- Device Driver Development Overview
Provides links to topics describing the source code for device drivers, the tools provided for device driver development, and where to obtain and certify third-party device drivers and board support packages.
- Device Driver Development Concepts
Provides conceptual information on developing device drivers for Windows Embedded CE.
- ** Migrating a Windows Embedded CE Driver to Windows Embedded CE 6.0 **
Provides information on the Windows Embedded CE 6.0 driver model as well as links to documentation on migrating Windows Embedded CE drivers to CE 6.0.
- Device Driver Development Helper Libraries
Explains the helper libraries that Windows Embedded CE provides to facilitate device driver development.
- Best Practices for Developing a Device Driver
Describes best practices for developing more secure, reliable, power manageable, portable, and maintainable device drivers. Provides information about the production-quality device drivers that Windows Embedded CE provides.
- Device Driver Development How-to Topics
Provides links to all Windows Embedded CE driver development how-to documentation.
- Device Manager
Describes Device Manager, device file names, and the I/O Resource Manager.
- ** Windows Embedded CE Drivers **
Provides links to all the categories of drivers included with Windows Embedded CE.
- ** Bringing Up a Hardware Platform **
Describes how to use board support packages (BSPs) to bring up a hardware platform.
- ** Catalog Item Management **
Explains how to manipulate device drivers and other Catalog items in the Platform Builder IDE.
- ** Creating a Catalog Item that Represents a Device Driver **
Describes how to create and set properties for an item in a Catalog file so that it can represent a device driver in the Platform Builder Catalog.
- ** How to Add a Device Driver to the Catalog **
Describes how to add a device driver to the Catalog in the Platform Builder IDE so that it appears as a Catalog item that can be included in an OS design.
- Diagnostics and Debugging for Mobile and Embedded Development
Provides information on debugging and testing.
- ** Device Driver Libraries **
Explains the source code for device drivers and where the source code is located.
- Message Queue Point-to-Point Reference
Describes the message queue point-to-point reference.
- ** Migrating a BSP to Windows Embedded CE 6.0 **
Explains how to migrate a BSP from a previous version of Windows Embedded CE.
- ** Migrating from an Earlier Version of Windows Embedded CE **
Provides links to information about migrating an OS design from earlier versions of Windows Embedded CE.