Developing a Device Driver (Windows Embedded CE 6.0)


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.

This topic applies to an older product version. See documentation for the most current version of Windows Embedded Compact. Or visit Windows Embedded Products & Solutions for the latest information about intelligent systems powered by Microsoft.

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.

Process Drivers

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.

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.

Community Additions