Windows CE supports two types of device drivers: built-in device drivers and installable device drivers. As the name implies, built-in device drivers are for whatever devices are built into a given Windows CE platform. The manufacturer of a given Windows CE platform is responsible for providing the built-in drivers to operate any devices included with the platform. For example, many Windows CE platforms have a touch-sensitive LCD screen built into them. The manufacturers of those platforms are responsible for providing device driver software for that device in order that the Windows CE operating system can use it for input and output.
Installable device drivers are for any peripheral devices that can be connected to a Windows CE platform. This covers devices such as modems, printers, digital cameras, PC Cards (also known as PCMCIA cards), and others. Windows CE platforms are different than normal PC-class computers when it comes to adding hardware. In a normal PC, you can open the case and plug an expansion card directly into the data bus. This generally means that device driver software for those sort of expansion cards must run in kernel mode because of their need for direct access to whatever memory locations control the hardware. Windows CE platforms, on the other hand, do not offer any end-user access to the data bus. New hardware cannot be added in that fashion. In Windows CE, all additional hardware must be connected to the Windows CE platform via external connectors such as a serial port, PC card slot, or USB port. This puts peripheral devices for Windows CE in a similar situation to printers on normal PCs; device driver software for both runs as user-mode processes that use the services of built-in hardware in order to control their devices.
This document explains the process of creating an installable device driver for the Windows CE operating system. There is no need to explain how to create built-in device drivers since only manufacturers of Windows CE platforms ever need to do that. Sometimes, however, such manufacturers need to know how to create installable device drivers since it is possible to implement the device driver for some types of built-in devices as installable device drivers.
The Windows CE operating system is targeted at a wide variety of platforms, not all of which have the same capabilities. Because of this, Microsoft has created a logo program for Windows CE by which manufacturers can have their Windows CE platforms certified as being compliant with a particular class of Windows CE platform. At times, the difference between those platforms impacts device driver development. You can find information about any idiosyncracies of a particular class of Windows CE platforms later in this document.
In addition, manufacturers can create their own Windows CE platforms which do not comply with any of the classes of Windows CE platforms covered by Microsoft's Windows CE logo program. If you are developing an installable device driver for any of those platforms, you will need to contact the manufacturer of the platform for any information related to installable device driver development for that platform.