DRV232 - Windows Drivers for USB Devices

This seminar covers the specifics of functional drivers for devices on the USB bus.

Level: Intermediate
Audience:

Developers who write or maintain drivers for devices attached to the USB bus; firmware developers for USB devices; and hardware engineers responsible for USB devices.

Description:

This course begins with the theory of operation of the Universal Serial Bus. Drivers for devices attached to the USB are termed function drivers, because they control a USB functional device. USB is a protocol-based bus, and a Windows component called a bus driver – specifically, the USB host controller driver – is responsible for arbitrating access to the bus, as well as sending and receiving packets; the function driver does not communicate with hardware directly, but instead asks the bus driver to do so on its behalf. This involves messaging mechanisms that will be new to most driver writers. This seminar focuses on those mechanisms. 

This seminar is intended as a follow-on to DRV201, Core WDM Device Drivers. This seminar does not cover the details of WDM driver architecture, plug-and-play, power management, etc., addressed in DRV201. Although DRV201 does use a USB device as an example, it does not address all of the details of the USB interfaces presented here.

Topics:
  • Universal Serial Bus design and concepts
  • USB device endpoints and transfer types
  • Bus drivers
  • Communicating with the bus driver
  • Send and receiving requests from the bus driver
Prerequisites:

DRV201,Core WDM Device Drivers, or equivalent knowledge and experience writing WDM device drivers.

Operating systems supported:

Windows 2000 through Windows 10/Windows Server 2012 R2

Durations and formats: 3 days with labs
1 day lecture only
Labs:

We strongly recommend the hands-on labs version of this seminar. We supply a programmable USB device to be used as the "target" device for the lab problems. The lab assignments are broken into a series of exercises interspersed with the lecture. Each lab exercise starts with a complete solution to the previous exercise. At the conclusion of the seminar, each student will of course receive fully commented source code for the solutions to all of the lab exercises.