In the WDM, a bus driver services a bus controller, adapter, or bridge. It provides per-slot functionality that is device-independent. Bus drivers also detect and report connected child devices. These are required drivers: there is one bus driver for each type of bus on a machine.

Microsoft will provide common bus drivers (like PCI or USB), but vendors can also provide their own bus drivers. A bus driver can service more than 1 bus if there’s more than one bus of the same type on the machine.

A bus driver’s responsibilities are to:

  • Enumerate child devices on its bus.
  • Respond to Plug and Play IRPs and power management IRPs.
  • Multiplex access to the bus.
  • Administer the devices on its bus.

Bus drivers are essentially function drivers that enumerate their children.

Resources