Enabling Device Wake-Up
If a device supports wake-up, its power policy owner must be able to enable and disable wake-up for the device. A driver enables wake up by sending an IRP_MJ_POWER request with minor function code IRP_MN_WAIT_WAKE and disables wake-up by canceling a previously sent IRP_MN_WAIT_WAKE. A device can have only one IRP_MN_WAIT_WAKE request pending at a time.
To determine whether its device supports wake-up, the device power states from which it can signal wake-up, and the system power states from which the device can wake the system, a driver checks the SystemWake, DeviceWake, and WakeFromDx members in the DEVICE_CAPABILITIES structure.
For more information about enabling, disabling, and responding to wake-up signals in a driver, see Supporting Devices that Have Wake-Up Capabilities.