WDF_POWER_POLICY_S0_IDLE_CAPABILITIES 枚举 (wdfdevice.h)
[适用于 KMDF 和 UMDF]
WDF_POWER_POLICY_S0_IDLE_CAPABILITIES枚举标识设备在闲行时进入低功耗状态时可以支持的功能。
语法
typedef enum _WDF_POWER_POLICY_S0_IDLE_CAPABILITIES {
IdleCapsInvalid = 0,
IdleCannotWakeFromS0,
IdleCanWakeFromS0,
IdleUsbSelectiveSuspend
} WDF_POWER_POLICY_S0_IDLE_CAPABILITIES;
常量
IdleCapsInvalid 值: 0 仅限内部使用。 |
IdleCannotWakeFromS0 当系统处于工作状态时,设备无法从低功耗状态唤醒自身 (S0) 状态。 |
IdleCanWakeFromS0 当系统处于工作状态时,设备可以从低功耗状态唤醒自身, (S0) 状态。 |
IdleUsbSelectiveSuspend 设备连接到 USB 总线并支持 USB 选择性挂起。 如果连接 USB 的设备支持在计算机处于工作状态时自行闲动和唤醒,请使用此值。 如果 USB 设备仅支持空闲,请使用 IdleCannotWakeFromS0。 (USB 设备的驱动程序不得指定 IdleCanWakeFromS0.) 请参阅以下示例部分中的代码示例。 对于 Windows XP,仅当设备的 USB_CONFIGURATION_DESCRIPTOR 结构显示设备支持 远程唤醒时,框架才支持 USB 选择性挂起。 对于 Windows Vista 和更高版本的 Windows,无论设备是否支持远程唤醒,框架都支持 USB 选择性挂起。 |
注解
WDF_POWER_POLICY_S0_IDLE_CAPABILITIES 枚举在 WDF_DEVICE_POWER_POLICY_IDLE_SETTINGS 结构中使用。
示例
以下代码示例演示如何为 USB 设备启用空闲支持。 在每种情况下,STATUS_POWER_STATE_INVALID返回值表示总线驱动程序已报告设备无法自行唤醒。
KMDF 示例
WDF_DEVICE_POWER_POLICY_IDLE_SETTINGS_INIT(&idleSettings,
IdleUsbSelectSuspend);
status = WdfDeviceAssignS0IdleSettings(device,
&idleSettings);
if (status == STATUS_POWER_STATE_INVALID){
//
// The device probably does not support wake.
// It might support idle without wake.
//
idleSettings.IdleCaps = IdleCannotWakeFromS0;
status = WdfDeviceAssignS0IdleSettings(device,
&IdleSettings);
if (!NT_SUCCESS(status) {...}
}
else {...}
UMDF 示例
hr = pIWDFDevice2->AssignS0IdleSettings(IdleUsbSelectSuspend,
PowerDeviceD3,
IDLEWAKE_TIMEOUT_MSEC,
IdleAllowUserControl,
WdfTrue);
if (hr == HRESULT_FROM_NT(STATUS_POWER_STATE_INVALID)){
//
// The device probably does not support wake.
// It might support idle without wake.
//
hr = pIWDFDevice2->AssignS0IdleSettings(IdleCannotWakeFromS0,
PowerDeviceD3,
IDLEWAKE_TIMEOUT_MSEC,
IdleAllowUserControl,
WdfTrue);
if (!SUCCEEDED(hr)) {...}
}
else {...}
要求
要求 | 值 |
---|---|
最低 KMDF 版本 | 1.0 |
最低 UMDF 版本 | 1.11 |
标头 | wdfdevice.h (包括 Wdf.h) |