You can add hardware devices to your Windows CE–based target platform that are not directly supported by Windows CE. However, if you do, you must supply device drivers for the additional devices.
Windows CE currently supports several classes of device through the GWES module. OEMs cannot add new device classes through this module because this would require adding code to the module to enable it to handle I/O events for the new device classes. The Platform Builder does not include source code for the GWES module, which means that only Microsoft can add support for new device classes through the module.
Because the GWES module is not extensible, OEMs must provide drivers for any new types of device by using the other Windows CE–based driver model, the stream interface driver model. Stream interface drivers are user-mode DLLs managed by the Device Manager. Unlike native device drivers, each of which has its own interface to the GWES module, all stream interface drivers expose the same basic interface to the kernel. This interface consists of a set of functions that presents the capabilities of a device in terms of standard file I/O functions.
Windows CE versions 1.01 and later provide kernel support to enable stream interface drivers to access additional built-in hardware devices. Stream interface drivers can call the KernelIOControl function, which provides a generic method for OEMs to expose new functionality on their Windows CE–based platforms. KernelIOControl passes its parameters to the OEMIoControl function in the OAL, which OEMs can use to provide whatever hardware access is necessary. The Platform Builder has complete documentation on KernelIOControl and on the OAL.
For more information, see Writing a Stream Interface Driver DLL.