Windows Driver Kit: Buses
USB Selective Suspend
In Microsoft Windows XP and later operating systems, the USB core stack supports a modified version of the "selective suspend" feature that is described in revision 2.0 of the Universal Serial Bus Specification.
The USB selective suspend feature allows the hub driver to suspend an individual port without affecting the operation of the other ports on the hub. Selective suspension of USB devices is especially useful in portable computers, since it helps conserve battery power. Many devices, such as finger readers and other kinds of biometric scanners, only require power intermittently. Suspending such devices selectively reduces power consumption. More importantly, as long as any USB device remains powered, it will prevent the system from entering deeper sleep states, such as C3. The Windows selective suspend behavior is different for devices operating in Windows XP and Windows Vista.
There are two different methods for selectively suspending a USB device: idle request IRPs (IOCTL_INTERNAL_USB_SUBMIT_IDLE_NOTIFICATION) and set power IRPs (IRP_MN_SET_POWER). Which method to use depends on the operating system and on whether the device is composite or not.
Selecting Which Selective Suspend Mechanism to Use
Composite device drivers that enable the device for remote wakeup with a wait/wake IRP (IRP_MN_WAIT_WAKE), must use the idle request IRP mechanism to selectively suspend a device.
The version of the Windows operating system determines how drivers for non-composite devices should do a selective suspend.
Windows XP:
In Windows XP all drivers must use idle request IRPs to power down their devices. Drivers must not use WDM power IRPs to selectively suspend their devices. Doing so will prevent other devices from selectively suspending. See Conditions for Global Suspend in Windows XP for more information.
Windows Vista:
Driver writers have more choices for powering down devices in Windows Vista. Although Windows Vista supports the Windows idle request IRP mechanism, drivers are not required to use it.
This section explains the Windows selective suspend mechanism and includes the following topics: