USB System Software

USB system software consists of two layers, an upper layer of USB device drivers, and a lower layer of USB functions that are implemented by Microsoft® Windows® CE .NET. 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:

  • Manage all communication between USB device drivers and the host computer's built-in USB root hub.
  • Load and unload USB device drivers at the appropriate times.
  • Translate data to and from the USB protocol's frame and packet formats.
  • Perform generic configuration and status-related tasks by establishing communication with the generic endpoint on all USB devices.

The lower layer is itself composed of two parts, the upper USB driver module, and the lower host controller driver (HCD) module. The USB driver module implements the high-level USB driver interface functions in terms of the functionality provided by the HCD module. USB device drivers use the USB driver interface functions to communicate with their peripherals.

You should make use of the functions that are provided by the USB driver to implement your USB device drivers.

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:

  1. A USB device driver initiates transfers by using USB driver interface functions to issue requests to the USB driver module.
  2. The USB driver module passes the requests to the HCD module.
  3. The HCD module divides requests into individual transactions, based on its knowledge of the bus and on characteristics of the USB devices that are connected to the bus, and schedules these transactions over the bus.
  4. The host controller hardware performs or completes the transactions.

The USB driver module is layered in order to assist you in porting the USB driver module to your USB Host Controller Hardware implementations. Internally, the USB driver module contains a set of USB driver interface functions. This is in the same way that layered drivers contain DDSI functions. USB device drivers are not allowed to invoke the USB driver interface functions directly; they should limit themselves to the USB driver interface functions.

All transactions on the bus originate from the host side; the peripherals are totally dependent.

See Also

Supported and Unsupported USB Features | USB Power Management | USB Connectivity | USB Driver Architecture | USB Topology | USB Transfer Types | USB Host Controller | USB Devices

 Last updated on Tuesday, May 18, 2004

© 1992-2003 Microsoft Corporation. All rights reserved.