Поддержка системных Wake-Up
В то время как система находится в низком энергопотреблении, некоторые устройства могут обнаружить внешнее событие, например входящий сетевой пакет, а затем разбудить систему. Например, если устройство PCI имеет возможность пробуждения системы, как указано в регистре возможностей управления питанием (PMC) устройства, оно активирует систему, поднимая сигнал события управления питанием (PME) на шине PCI.
Если устройство может вывести систему из состояния с низким энергопотреблением, функция обратного вызова EvtDriverDeviceAddвладельца политики питания должна выполнить следующие два действия.
Вызовите WdfDeviceAssignSxWakeSettings , чтобы указать:
- Состояние с низким энергопотреблением, в которое будет входить устройство
- Могут ли пользователи управлять параметрами простоя устройства
- Включена или отключена возможность пробуждения устройства
Дополнительные сведения об этих параметрах см. в разделе структура WDF_DEVICE_POWER_POLICY_WAKE_SETTINGS .
Вызовите WdfDeviceInitSetPowerPolicyEventCallbacks , чтобы зарегистрировать следующие функции обратного вызова событий, если они необходимы для вашего устройства:
- EvtDeviceArmWakeFromSx или EvtDeviceArmWakeFromSxWithReason, которые позволяют оборудованию устройства реагировать на событие внешнего пробуждения.
- EvtDeviceDisarmWakeFromSx, который отключает возможность устройства реагировать на событие внешнего пробуждения.
- EvtDeviceWakeFromSxTriggered, который сообщает водителю, что автобус обнаружил сигнал пробуждения.
Водители автобусов также участвуют в пробуждении системы. Драйвер шины устройства обычно предоставляет функции обратного вызова EvtDeviceEnableWakeAtBus и EvtDeviceDisableWakeAtBus . Эти функции выполняют все необходимые действия на адаптере шины, чтобы включить и отключить возможность выхода устройства из состояния с низким энергопотреблением.
Когда водитель шины определяет, что устройство активировало сигнал пробуждения, он должен вызвать WdfDeviceIndicateWakeStatus , чтобы сообщить платформе о том, что питание устройства должно быть восстановлено. Затем платформа передает эти сведения остальным драйверам в стеке драйверов.
Сведения о записях реестра, которые управляют возможностями пробуждения устройства, см. в разделе User Control of Device Idle and Wake Behavior.