USB Driver Internal Commands
During the initialization of the system, the USB bus driver issues several commands to discover the topology of each host controller.
These commands are internal to the USBD and are not associated with any client or operating system requests. To issue the requests, the USBD must generate and map the IRPs and the associated data buffers. In addition to topology discovery, the USB Protocol driver must configure the USB devices that are discovered for correct operation. The USB Protocol driver configures the USB devices by reading the descriptors that are associated with the devices and then selecting a configuration on the USB device. After configuration is complete, these devices are ready for operation and can accept the client or operating system commands.
In addition to the boot time, topology, discovery, and device configuration, the USB bus driver must support run time device attachments and removals and configure the devices.