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 的设备在计算机处于工作状态时同时支持 ID 化和唤醒自身,请使用此值。 如果 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) |