USB system software consists of two layers: an upper layer of USB device drivers and a lower layer of USB functions implemented by Windows CE. USB device drivers use the USB functions to establish connections to the devices they control and to configure and communicate with the devices. The lower layer of USB functions performs several interrelated tasks:
The lower layer is itself composed of two parts, the upper universal serial bus driver (USBD) module and the lower host controller driver (HCD) module. The USBD module implements the high-level USBD interface functions in terms of the functionality provided by the HCD module. USB device drivers use the USBD interface functions to communicate with their peripherals.
Independent hardware vendores (IHVs) and manufacturers of USB devices should make use of the functions provided by the USBD to implement their USB device drivers. OEMs are responsible for providing an HCD module to their Windows CE–based platforms so that their hardware properly interfaces with the USBD module.
The following illustration shows the two layers of software in the context of the host’s USB hardware and a peripheral device.
During a data transfer, the flow of operation typically proceeds in the following sequence:
All transactions on the bus originate from the host side; the peripherals are totally dependent.
The following sections on USB system software describes the various components of USB support in Windows CE 2.10. The primary goal of Microsoft USB support, aside from enabling IHVs to write device drivers for USB devices, is to help OEMs expand existing USB support on their platforms. Currently, USB support includes only the host side of the USB specification, which enables Windows CE to support USB peripherals. OEMs are free to add device-side support, which would enable Windows CE–based platforms to serve as USB peripherals to other USB hosts.