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 |
Header | wdfdevice.h (Wdf.h を含む) |