EVT_WDF_DEVICE_ARM_WAKE_FROM_S0回调函数 (wdfdevice.h)

[适用于 KMDF 和 UMDF]

驱动程序的 EvtDeviceArmWakeFromS0 事件回调函数支持 (即启用) 设备,以便在处于低功耗设备状态时触发唤醒信号(如果系统保持工作 状态 (S0) )。

语法

EVT_WDF_DEVICE_ARM_WAKE_FROM_S0 EvtWdfDeviceArmWakeFromS0;

NTSTATUS EvtWdfDeviceArmWakeFromS0(
  [in] WDFDEVICE Device
)
{...}

参数

[in] Device

框架设备对象的句柄。

返回值

如果操作成功,则 EvtDeviceArmWakeFromS0 回调函数必须返回STATUS_SUCCESS或NT_SUCCESS (状态) 等于 TRUE 的其他状态值。 否则,它必须返回NT_SUCCESS (状态) 等于 FALSE的状态值。

如果NT_SUCCESS (状态) 等于 FALSE,则框架不会调用驱动程序的 EvtDeviceDisarmWakeFromS0 回调函数。 (框架不会向 PnP 管理器报告设备故障。)

注解

若要注册 EvtDeviceArmWakeFromS0 回调函数,驱动程序必须调用 WdfDeviceInitSetPowerPolicyEventCallbacks。 此外,驱动程序必须在其 WDF_DEVICE_POWER_POLICY_IDLE_SETTINGS 结构的 IdleCaps 成员中设置 IdleCanWakeFromS0

EvtDeviceArmWakeFromS0 回调函数处理设备特定的操作,使设备能够检测在总线上触发唤醒信号的外部事件。 总线驱动程序的 EvtDeviceEnableWakeAtBus 回调函数处理特定于总线的操作,例如启用 PCI 总线的电源管理事件 (PME) 信号。

如果驱动程序已注册 EvtDeviceArmWakeFromS0 回调函数,框架会在设备仍处于 D0 设备电源状态时调用它,然后总线驱动程序降低设备的电源状态,但在框架代表驱动程序发送 等待/唤醒 IRP 之后调用它。

此过程按以下顺序发生:

  1. 框架确定设备在预设时间内处于空闲状态。
  2. 框架调用驱动程序的 EvtDeviceArmWakeFromS0 回调函数。
  3. 框架请求设备总线的驱动程序以降低设备的功率。
在设备进入低功耗状态之前,框架将立即调用驱动程序的 EvtDeviceD0Exit 回调函数。

有关框架何时调用此回调函数的详细信息,请参阅 PnP 和电源管理方案

如果设备为以下情况,则无需提供 EvtDeviceArmWakeFromS0 回调函数:

  • 支持“选择性挂起”的 USB 设备。
  • 当系统保持完全通电时,无法关闭电源。
  • 不需要使设备能够触发唤醒信号的特殊硬件操作。
如果设备支持 USB“选择性挂起”,并且驱动程序在其 WDF_DEVICE_POWER_POLICY_IDLE_SETTINGS 结构的 IdleCaps 成员中设置了 IdleUsbSelectiveSuspend,则当设备已空闲一段时间时,框架会向 USB 总线驱动程序发送“选择性挂起”请求。

有关此回调函数的详细信息,请参阅 支持空闲电源关闭

要求

要求
目标平台 通用
最低 KMDF 版本 1.0
最低 UMDF 版本 2.0
标头 wdfdevice.h (包括 Wdf.h)
IRQL PASSIVE_LEVEL

另请参阅

EvtDeviceArmWakeFromSx

EvtDeviceDisarmWakeFromS0