2.1.2.6 Device Driver Development
The device drivers are included in every Windows CE operating system image are responsible for direct communication to devices.
A device is a physical or logical entity that requires:
a) Control
b) Resource Management
c) Both (a) and (b) from Operating System
A device driver is a software module that manages the operation of a:
1. Device
2. Protocol
3. Service
A device driver also manages virtual or logical devices. A virtual device exposes a physical device interface, even though there is no physical device to manage it. A device driver for a virtual device is indistinguishable from a device driver for a physical device. Virtual means that there is no physical device to manage but a device like interface is being exposed.
File system drivers are example of virtual device drivers.
Typically one can characterize drivers by the device interface they expose. In the simplest case there is one interface exposed downward to hardware and one interface upwards to the applications.
Interface to Hardware Hardware interface or bus interface
Interface to Application Device interface or client interface
Application, other drivers or the device manager can manipulate the device interfaces. The provider of the interface determines how these modules manipulate the client interface.
Buses are responsible for loading the drivers for the devices on their buses. Bus enumeration is the process of examining the bus and then loading appropriate drivers. Root bus driver is a registry enumerator.
Different processes load different drivers. The following tables show the processes that load drivers and what drivers they load.
Process
|
Drivers
|
Graphics, Windowing and Event
Subsystem(GWES)
|
Battery drivers
Display drivers
Notification LED drivers
Printer drivers
|
Device Manager
(Device.exe)
|
Audio drivers, Keyboard drivers, Mouse driver, Serial drivers, PC card drivers, USB devices and any other driver that exposes the stream interface.
|
File System
(Filesys.exe)
|
File System
Drivers
|
Device driver source code:
1. The device driver source code is separated into platform dependent code.
2. CPU support package (CSP) drivers.
3. Common drivers.
|