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
由于以下情况,其中一个参数或两个参数都可以为 TRUE
  • 驱动程序的设备已启用以唤醒系统。
  • 启用设备的一个或多个子设备来唤醒系统。
  • 同时启用设备及其一个或多个子设备来唤醒系统。
有关 EvtDeviceArmWakeFromSxWithReason 回调函数的详细信息,请参阅 EvtDeviceArmWakeFromSx 的“备注”部分。

要求

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

另请参阅

EvtDeviceArmWakeFromS0

EvtDeviceArmWakeFromSx

EvtDeviceDisarmWakeFromSx