IWDFDevice2::AssignSxWakeSettings 方法 (wudfddi.h)

[警告: UMDF 2 是最新版本的 UMDF,取代了 UMDF 1。 所有新的 UMDF 驱动程序都应使用 UMDF 2 编写。 未向 UMDF 1 添加新功能,并且较新版本的 Windows 10 上对 UMDF 1 的支持有限。 通用 Windows 驱动程序必须使用 UMDF 2。 有关详细信息,请参阅使用 UMDF 入门。]

AssignSxWakeSettings 方法提供有关设备在设备和系统都处于低功耗状态时触发唤醒信号的能力的驱动程序信息。

语法

HRESULT AssignSxWakeSettings(
  [in] DEVICE_POWER_STATE                    DxState,
  [in] WDF_POWER_POLICY_SX_WAKE_USER_CONTROL UserControlOfWakeSettings,
  [in] WDF_TRI_STATE                         Enabled
);

参数

[in] DxState

一个DEVICE_POWER_STATE类型的枚举器,用于标识当系统电源状态降至可唤醒的低功耗状态时设备将进入的低设备电源状态。 DxState 的值不能为 PowerDeviceD0。 DEVICE_POWER_STATE值在 wdm.h 中定义。

[in] UserControlOfWakeSettings

一个WDF_POWER_POLICY_SX_WAKE_USER_CONTROL类型的枚举器,指示用户是否能够修改设备的唤醒设置。

[in] Enabled

一个WDF_TRI_STATE类型的枚举器,指示设备是否可以唤醒系统 (即,在系统处于低功耗状态时将系统还原到 S0) 。 此成员可以具有以下值之一:

WdfTrue - 启用唤醒系统。

WdfFalse - 已禁用唤醒系统。

WdfUseDefault - 最初默认启用唤醒系统;但如果 UserControlOfWakeSettings 成员设置为 WakeAllowUserControl,则 用户的设置或驱动程序的 INF 文件 将替代初始值。

如果唤醒系统处于启用状态,并且系统即将进入低功耗状态,框架会在设备进入低功耗状态之前调用驱动程序的 IPowerPolicyCallbackWakeFromSx::OnArmWakeFromSx 回调函数。

返回值

如果操作成功,AssignSxWakeSettings 将返回S_OK。 否则,该方法可能会返回以下值之一:

返回代码 说明
E_INVALIDARG
调用方为输入参数指定了无效值。
HRESULT_FROM_NT (STATUS_INVALID_DEVICE_REQUEST)
调用驱动程序不是设备的 电源策略所有者
HRESULT_FROM_NT (STATUS_POWER_STATE_INVALID)
DxState 参数指定无效的设备电源状态,或者总线驱动程序指示设备无法触发唤醒信号,
 

此方法可能会返回 Winerror.h 包含的其他值之一。

注解

驱动程序首次调用 AssignSxWakeSettings 时,将执行以下操作:

  • 框架存储参数值。
  • 如果 UserControlOfWakeSettings 参数设置为 WakeAllowUserControl ,并且 Enabled 参数设置为 WdfUseDefault,框架将读取注册表,以确定用户是否已启用唤醒系统。
在后续调用 AssignSxWakeSettings 期间,框架不存储 UserControlOfWakeSettings 参数的值。 换句话说,框架在驱动程序首次调用 AssignSxWakeSettings 时执行以下步骤,但在以后的调用期间则不执行以下步骤:
  • 存储 UserControlOfWakeSettings 参数的值。
  • 如果 Enabled 参数的值为 WdfUseDefault,请在注册表中查找用户设置。
以下规则适用于为 DxState 参数指定的值:
  • 该值不能为 PowerDeviceD0
  • 如果指定 DevicePowerMaximum,框架将使用设备总线内核模式驱动程序在其WDF_DEVICE_POWER_CAPABILITIES结构的 DeviceWake 成员中提供的值。
  • 不能在内核模式总线驱动程序的WDF_DEVICE_POWER_CAPABILITIES结构的 DeviceWake 成员中指定低于设备电源状态的设备电源状态。 (换言之,如果总线驱动程序的 DeviceWake 值为 PowerDeviceD2,则函数驱动程序的 DxState 值不能为 PowerDeviceD3.)
有关控制设备唤醒功能的注册表项的信息,请参阅 UMDF 中的设备空闲和唤醒行为的用户控制

有关支持设备的唤醒功能的详细信息,请参阅 支持基于 UMDF 的驱动程序中的系统 Wake-Up

下面的代码示例获取 IWDFDevice2 接口,然后调用 AssignSxWakeSettings

    IWDFDevice2 *pIWDFDevice2 = NULL;
    HRESULT hr;

    //
    // Get a pointer to the IWDFDevice2 interface.
    //
    hr = pIWDFDevice->QueryInterface(__uuidof(IWDFDevice2),
                                     (void**) &pIWDFDevice2);
    if (SUCCEEDED(hr)) 
    {
        hr = pIWDFDevice2->AssignSxWakeSettings(PowerDeviceMaximum,
                                                WakeAllowUserControl,
                                                WdfUseDefault);
    }
...
    SAFE_RELEASE(pIWDFDevice2);

要求

要求
结束支持 在 UMDF 2.0 及更高版本中不可用。
目标平台 桌面
最低 UMDF 版本 1.9
标头 wudfddi.h (包括 Wudfddi.h)
DLL WUDFx.dll

另请参阅

IWDFDevice2

IWDFDevice2::AssignS0IdleSettings