The Selective Suspend driver

Plug and Play

IRP_MN_START_DEVICE HandleStartDevice()
IRP_MN_QUERY_STOP_DEVICE HandleQueryStopDevice()
IRP_MN_CANCEL_STOP_DEVICE HandleCancelStopDevice()
IRP_MN_STOP_DEVICE HandleStopDevice()
IRP_MN_QUERY_REMOVE_DEVICE HandleQueryRemoveDevice()
IRP_MN_CANCEL_REMOVE_DEVICE HandleCancelRemoveDevice()
IRP_MN_SURPRISE_REMOVAL HandleSurpriseRemoval()
IRP_MN_REMOVE_DEVICE HandleRemoveDevice()
IRP_MN_QUERY_CAPABILITIES HandleQueryCapabilities()

Power Management

IRP_MN_QUERY_POWER(SystemPowerState) HandleSystemQueryPower()
IRP_MN_QUERY_POWER(DevicePowerState) HandleDeviceQueryPower()
IRP_MN_SET_POWER (DevicePowerState) HandleDeviceSetPower()
IRP_MN_SET_POWER (SystemPowerState) HandleSystemSetPower()

Remote Wakeup capability

The selective suspend driver supports the remote wakeup capability. The routines which implement this capability are:
IssueWaitWake()
WaitWakeCallback()
WaitWakeCompletionRoutine()

Selective Suspend feature

The USB core stack supports a new feature called the selective suspend feature. This feature allows the driver to power down the device while the system remains in the S0 power state.

Notes

Selective Suspend model

Please refer the inline comments in the selSusp sample for implementation of the above suggestions.