Suspending and Resuming

Windows CE supports suspending and resuming USB devices in association with the standard Windows CE power states. When Windows CE issues a POWER_DOWN notification, the HCD module suspends the USB host controller hardware and all devices. To achieve this, the MDD layer of the HCD module calls a function in the PDD layer to enable the HCD module to complete any platform-specific processing needed to suspend the host controller hardware properly. Suspending power to the host controller hardware typically causes USB devices connected to a Windows CE–based platform to enter the suspended state. However, this is not recommended for all devices; USB devices that can collect and store data while the host computer is off should not be suspended.

When the Windows CE–based platform is turned on again, Windows CE sends a POWER_UP notification to the HCD module. Next, the MDD layer of the HCD module calls a function in the PDD layer. Because the PDD layer is used, OEMs can customize the HCD module to perform any necessary platform-specific processing. Following the call to the PDD layer, the HCD module re-initializes the host controller hardware.

When the host controller hardware has been re-initialized, the USB driver module unloads the USB device drivers loaded prior to the POWER_DOWN notification, identifies all the USB devices currently connected to the bus—a process called bus enumeration—and loads the USB device drivers for those devices. This suspend and resume processing is very similar to that performed by the Windows CE Device Manager for PC Card–based devices.