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 结构 已启用 成员指示设备可以唤醒系统,框架会将 DeviceWakeEnabled 参数设置为 TRUE
  • 如果一个或多个设备的子设备可以唤醒系统,并且 ArmForWakeIfChildrenAreArmedForWake 成员的 WDF_DEVICE_POWER_POLICY_WAKE_SETTINGS成员设置为 TRUE,则框架会将 ChildrenArmedForWake 参数设置为 TRUE
由于以下情况,其中一个或两个参数都可以 TRUE
  • 驱动程序的设备已启用唤醒系统。
  • 启用一个或多个设备的子设备来唤醒系统。
  • 设备及其一个或多个子设备都启用唤醒系统。
有关 EvtDeviceArmWakeFromSxWithReason 回调函数的详细信息,请参阅 EvtDeviceArmWakeFromSx的“备注”部分。

要求

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

另请参阅

EvtDeviceArmWakeFromS0

EvtDeviceArmWakeFromSx

EvtDeviceDisarmWakeFromSx