支持系统唤醒
当系统处于低功耗状态时,某些设备可以检测外部事件(如传入的网络数据包),然后唤醒系统。 例如,如果 PCI 设备具有系统唤醒功能(如设备的电源管理功能 (PMC) 寄存器中所述),它会通过在 PCI 总线上引发电源管理事件 (PME) 信号来唤醒系统。
如果设备可以从系统范围的低功耗状态唤醒系统,电源策略所有者中的 EvtDriverDeviceAdd 回调函数必须执行以下两个步骤:
调用 WdfDeviceAssignSxWakeSettings 以指定:
- 设备将进入的低功耗状态
- 用户是否可以控制设备的空闲设置
- 是启用还是禁用设备的唤醒功能
有关这些设置的详细信息,请参阅 WDF_DEVICE_POWER_POLICY_WAKE_SETTINGS 结构。
调用 WdfDeviceInitSetPowerPolicyEventCallbacks 以注册以下事件回调函数(如果需要它们用于设备):
- EvtDeviceArmWakeFromSx 或 EvtDeviceArmWakeFromSxWithReason,使设备硬件能够响应外部唤醒事件。
- EvtDeviceDisarmWakeFromSx,禁用设备响应外部唤醒事件的能力。
- EvtDeviceWakeFromSxTriggered,通知司机总线检测到唤醒信号。
公共汽车司机也参与唤醒系统。 设备总线的驱动程序通常提供 EvtDeviceEnableWakeAtBus 和 EvtDeviceDisableWakeAtBus 回调函数。 这些函数在总线适配器上执行任何必要的操作,以启用和禁用设备从低功耗状态唤醒的功能。
当总线驱动程序确定设备已触发唤醒信号时,它必须调用 WdfDeviceIndicateWakeStatus 来通知框架应恢复设备的电源。 然后,框架将此信息传递给驱动程序堆栈中的其余驱动程序。
有关控制设备唤醒功能的注册表项的信息,请参阅 用户控制设备空闲和唤醒行为。