Поддержка системных Wake-Up

В то время как система находится в низком энергопотреблении, некоторые устройства могут обнаружить внешнее событие, например входящий сетевой пакет, а затем разбудить систему. Например, если устройство PCI имеет возможность пробуждения системы, как указано в регистре возможностей управления питанием (PMC) устройства, оно активирует систему, поднимая сигнал события управления питанием (PME) на шине PCI.

Если устройство может вывести систему из состояния с низким энергопотреблением, функция обратного вызова EvtDriverDeviceAddвладельца политики питания должна выполнить следующие два действия.

  1. Вызовите WdfDeviceAssignSxWakeSettings , чтобы указать:

    • Состояние с низким энергопотреблением, в которое будет входить устройство
    • Могут ли пользователи управлять параметрами простоя устройства
    • Включена или отключена возможность пробуждения устройства

    Дополнительные сведения об этих параметрах см. в разделе структура WDF_DEVICE_POWER_POLICY_WAKE_SETTINGS .

  2. Вызовите WdfDeviceInitSetPowerPolicyEventCallbacks , чтобы зарегистрировать следующие функции обратного вызова событий, если они необходимы для вашего устройства:

    • EvtDeviceArmWakeFromSx или EvtDeviceArmWakeFromSxWithReason, которые позволяют оборудованию устройства реагировать на событие внешнего пробуждения.
    • EvtDeviceDisarmWakeFromSx, который отключает возможность устройства реагировать на событие внешнего пробуждения.
    • EvtDeviceWakeFromSxTriggered, который сообщает водителю, что автобус обнаружил сигнал пробуждения.

Водители автобусов также участвуют в пробуждении системы. Драйвер шины устройства обычно предоставляет функции обратного вызова EvtDeviceEnableWakeAtBus и EvtDeviceDisableWakeAtBus . Эти функции выполняют все необходимые действия на адаптере шины, чтобы включить и отключить возможность выхода устройства из состояния с низким энергопотреблением.

Когда водитель шины определяет, что устройство активировало сигнал пробуждения, он должен вызвать WdfDeviceIndicateWakeStatus , чтобы сообщить платформе о том, что питание устройства должно быть восстановлено. Затем платформа передает эти сведения остальным драйверам в стеке драйверов.

Сведения о записях реестра, которые управляют возможностями пробуждения устройства, см. в разделе User Control of Device Idle and Wake Behavior.