EVT_WDF_DEVICE_ARM_WAKE_FROM_SX_WITH_REASON回调函数 (wdfdevice.h)
[适用于 KMDF 和 UMDF]
驱动程序的 EvtDeviceArmWakeFromSxWithReason 事件回调函数臂 (即启用) 设备,以便在设备处于低功耗设备状态时可以触发唤醒信号。 唤醒信号导致设备进入其工作状态 (D0) ,并导致系统进入其工作状态 (S0) 。
语法
EVT_WDF_DEVICE_ARM_WAKE_FROM_SX_WITH_REASON EvtWdfDeviceArmWakeFromSxWithReason;
NTSTATUS EvtWdfDeviceArmWakeFromSxWithReason(
[in] WDFDEVICE Device,
[in] BOOLEAN DeviceWakeEnabled,
[in] BOOLEAN ChildrenArmedForWake
)
{...}
参数
[in] Device
框架设备对象的句柄。
[in] DeviceWakeEnabled
一个布尔值,如果 为 TRUE,则指示设备唤醒系统的能力已启用。
[in] ChildrenArmedForWake
一个布尔值,如果 为 TRUE,则指示启用了一个或多个子设备唤醒系统的能力。
返回值
如果 EvtDeviceArmWakeFromSxWithReason 回调函数未遇到错误,则必须返回STATUS_SUCCESS或其他状态值 ,NT_SUCCESS (状态) 等于 TRUE。 否则,它必须返回状态值,NT_SUCCESS (状态) 等于 FALSE。
如果NT_SUCCESS (状态) 等于 FALSE,框架将调用驱动程序的 EvtDeviceDisarmWakeFromSx 回调函数。 (框架不会向 PnP 管理器报告设备故障。)
注解
除 EvtDeviceArmWakeFromSx 回调函数外,1.7 版及更高版本的 KMDF 还支持 EvtDeviceArmWakeFromSxWithReason 回调函数。
若要注册 EvtDeviceArmWakeFromSxWithReason 回调函数,驱动程序必须调用 WdfDeviceInitSetPowerPolicyEventCallbacks。 驱动程序可以注册 EvtDeviceArmWakeFromSx 回调函数或 EvtDeviceArmWakeFromSxWithReason 回调函数,但不能同时注册两者。
EvtDeviceArmWakeFromSxWithReason 回调函数提供两个参数,使驱动程序能够确定框架调用它的原因:
- 如果WDF_DEVICE_POWER_POLICY_WAKE_SETTINGS结构的 Enabled 成员指示设备可以唤醒系统,则框架会将 DeviceWakeEnabled 参数设置为 TRUE。
- 如果设备的一个或多个子设备可以唤醒系统,并且 WDF_DEVICE_POWER_POLICY_WAKE_SETTINGS 的 ArmForWakeIfChildrenAreArmedForWake 成员设置为 TRUE,则框架会将 ChildrenArmedForWake 参数设置为 TRUE。
- 驱动程序的设备已启用以唤醒系统。
- 启用设备的一个或多个子设备来唤醒系统。
- 同时启用设备及其一个或多个子设备来唤醒系统。
要求
要求 | 值 |
---|---|
目标平台 | 通用 |
最低 KMDF 版本 | 1.7 |
最低 UMDF 版本 | 2.0 |
标头 | wdfdevice.h (包括 Wdf.h) |
IRQL | PASSIVE_LEVEL |