次の方法で共有


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 を含む)

関連項目

WDF_DEVICE_POWER_POLICY_IDLE_SETTINGS