WUDF_DEVICE_POWER_POLICY_IDLE_SETTINGS 構造体 (wudfddi_types.h)

[警告: UMDF 2 は UMDF の最新バージョンであり、UMDF 1 よりも優先されます。 すべての新しい UMDF ドライバーは、UMDF 2 を使用して記述する必要があります。 UMDF 1 には新機能が追加されておらず、新しいバージョンのWindows 10では UMDF 1 のサポートが制限されています。 ユニバーサル Windows ドライバーでは、UMDF 2 を使用する必要があります。 詳細については、「UMDF を使用したはじめに」を参照してください。

WUDF_DEVICE_POWER_POLICY_IDLE_SETTINGS構造体には、デバイスがアイドル状態で、システムがシステムの動作状態 (S0) のときにフレームワークが使用するドライバー提供の情報が含まれています。

構文

typedef struct _WUDF_DEVICE_POWER_POLICY_IDLE_SETTINGS {
  ULONG                                 Size;
  WDF_POWER_POLICY_S0_IDLE_CAPABILITIES IdleCaps;
  DEVICE_POWER_STATE                    DxState;
  ULONG                                 IdleTimeout;
  WDF_POWER_POLICY_S0_IDLE_USER_CONTROL UserControlOfIdleSettings;
  WDF_TRI_STATE                         Enabled;
  WDF_TRI_STATE                         PowerUpIdleDeviceOnSystemWake;
  WDF_TRI_STATE                         ExcludeD3Cold;
} WUDF_DEVICE_POWER_POLICY_IDLE_SETTINGS, *PWUDF_DEVICE_POWER_POLICY_IDLE_SETTINGS;

メンバー

Size

この構造体のサイズ (バイト単位)。

IdleCaps

システム 動作 (S0) 状態のまま、低電力状態に設定された後にデバイスがスリープ解除する機能を識別する、WDF_POWER_POLICY_S0_IDLE_CAPABILITIES型の列挙子。

DxState

アイドル タイムアウト期間が終了した後にデバイスが入力する 低電力状態 を識別する、DEVICE_POWER_STATE型の列挙子。 DEVICE_POWER_STATE値は wdm.h で定義されます。

IdleTimeout

フレームワークによって DxState 提供の低電力状態になるまでにデバイスがアイドル状態のままになる時間 (ミリ秒単位)。 フレームワークの既定のアイドル タイムアウト値を使用するには、 IdleTimeoutDefaultValue を指定します。 フレームワークがデバイスをアイドル状態と見なすタイミングの詳細については、「 UMDF ベースのドライバーでのアイドル Power-Down のサポート」を参照してください。

UserControlOfIdleSettings

ユーザーがデバイスのアイドル状態の設定を変更できるかどうかを示す、 WDF_POWER_POLICY_S0_IDLE_USER_CONTROL型指定の列挙子。

Enabled

WDF_TRI_STATE型の列挙子。デバイスがアイドル状態のままで、システム電源が S0 の間にデバイスの電源がオフになるかどうかを示します。 このメンバーには、次のいずれかの値を指定できます。

WdfTrue - 電源を切る機能が有効になっています。

WdfFalse - 電源を切る機能は無効です。

WdfUseDefault - 電源の停止は、最初は既定で有効になっています。ただし、 UserControlOfIdleSettings メンバーが IdleAllowUserControl に設定されている場合、 ユーザーの設定またはドライバーの INF ファイル が初期値をオーバーライドします。

電源オフが有効になっている場合、デバイスにウェイクアップ機能があり、アイドル タイムアウト値が期限切れになると、フレームワークはドライバーの IPowerPolicyCallbackWakeFromS0::OnArmWakeFromS0 メソッドを呼び出してから、デバイスが低電力状態になります。

PowerUpIdleDeviceOnSystemWake

システム 動作 (S0) 状態に戻ったときにデバイスが動作 (D0) 状態に戻るかどうかを示す、WDF_TRI_STATE型の列挙子。 このメンバーは、ドライバーが IdleCaps メンバーを IdleCannotWakeFromS0 に設定する場合にのみ有効です。 PowerUpIdleDeviceOnSystemWake メンバーには、次のいずれかの値を指定できます。

WdfTrue - デバイスとシステムの両方が低電力状態の場合、システムが動作状態に戻ると、デバイスは動作状態に戻ります。

WdfFalse - デバイスとシステムの両方が低電力状態の場合、システムが動作状態に戻ったときに、デバイスは低電力状態のままです。

WdfUseDefault - ドライバーが別の値を設定していない場合にフレームワークで使用される既定値。 この値の意味は WdfFalse と同じです。

PowerUpIdleDeviceOnSystemWake メンバーが WdfFalse または WdfUseDefault に設定されている場合、アプリケーションがデバイスに I/O 要求を送信するときなど、ソフトウェアがデバイスにアクセスしたときにのみ、デバイスは動作状態に戻ります。 詳細については、「 デバイスが動作状態に戻る」を参照してください。

ExcludeD3Cold

アイドル タイムアウト期間の有効期限が切れたときに、フレームワークがデバイスを D3cold 電源状態にできるかどうかを示す、 WDF_TRI_STATE型の列挙子。 ExcludeD3Cold メンバーには、次のいずれかの値を指定できます。

WdfTrue - フレームワークは、アイドル タイムアウト期間が経過すると、デバイスを低電力 D 状態に移動します。 その D 状態が D3 の場合、デバイスは D3hot に移動されます。 ExcludeD3ColdWdfTrue に設定されている場合、D3hot から D3cold へのそれ以上の切り替えは許可されません。

WdfFalse - 次のすべての条件が満たされている場合、アイドル タイムアウト期間が経過すると、デバイスは D3cold 電源状態になる可能性があります。

  • この構造体の DxState メンバーは 、PowerDeviceD3 または PowerDeviceMaximum を指定します。
  • ACPI ファームウェアは、デバイスが D3cold 電源状態をサポートしていることを示します。
  • ドライバーがこの構造体の IdleCaps メンバーで IdleCanWakeFromS0 または IdleUsbSelectiveSuspend を指定した場合、デバイスは D3cold 電源状態の間に外部ウェイクアップ イベントに応答できます。 それ以外の場合、この要件は適用されません。
WdfUseDefault - フレームワークは DDInstall を調べますドライバーの INF ファイルの HW セクション。 次の行が存在する場合、この値は WdfFalse と同じ意味を持ちます。
Include = machine.inf
Needs = PciD3ColdSupported
それ以外の場合、この値は WdfTrue と同じ意味を持ちます。

ExcludeD3Cold メンバーは UMDF バージョン 1.11 以降で使用でき、Windows 8より前のオペレーティング システムでは無視されます。 詳細については、「解説」を参照してください。

注釈

WUDF_DEVICE_POWER_POLICY_IDLE_SETTINGS構造体は、IWDFDevice3::AssignS0IdleSettingsEx への入力として使用されます。

ドライバーが IWDFDevice3::AssignS0IdleSettingsEx を初めて呼び出す場合、次のアクションが発生します。

  • フレームワークには、すべてのWUDF_DEVICE_POWER_POLICY_IDLE_SETTINGS構造体メンバーの値 格納されます。
  • UserControlOfIdleSettings メンバーが IdleAllowUserControl に設定されていて、Enabled メンバーが WdfUseDefault に設定されている場合、フレームワークはレジストリを読み取って、ユーザーがアイドル状態のときにデバイスの電源を切り下げ有効にしたかどうかを確認します。
後続の IWDFDevice3::AssignS0IdleSettingsEx の呼び出し中、フレームワークには DxStateIdleTimeout、Enabled の各メンバーの値のみが格納されます。 また、フレームワークは、次の規則に従って IdleCaps メンバーの値を格納します。
  • ドライバーが AssignS0IdleSettingsEx の以前の呼び出しで IdleCaps パラメーターの値に IdleCanWakeFromS0 を指定したことがある場合、その値を IdleUsbSelectiveSuspend に変更することはできません。
  • ドライバーが AssignS0IdleSettingsEx への以前の呼び出しで IdleCaps パラメーターの値に IdleUsbSelectiveSuspend を指定したことがある場合、その値を IdleCanWakeFromS0 に変更することはできません。

DxState メンバーに指定する値には、次の規則が適用されます。

  • 値を PowerDeviceD0 にすることはできません。
  • USB デバイスの場合、値を PowerDeviceD0 または PowerDeviceD3 にすることはできません。
  • DevicePowerMaximum を指定した場合、フレームワークは、WDF_DEVICE_POWER_CAPABILITIES構造体のDeviceWake メンバーに指定されたデバイスのバスのドライバーの値を使用します。
  • IdleCaps メンバーの値が IdleCanWakeFromS0 の場合、バス ドライバーのWDF_DEVICE_POWER_CAPABILITIES構造体の DeviceWake メンバーで、デバイスの電源状態よりも低いデバイスの電源状態を指定することはできません。 (つまり、バス ドライバーの DeviceWake 値が PowerDeviceD2 の場合、関数ドライバーの DxState 値を PowerDeviceD3 にすることはできません)。
Windows 8より前のオペレーティング システムでは、D3 の電源状態は、デバイスが低電力状態にあるものの、バスに対する何らかの電力が維持されていることを示します。 Windows 8以降、以前の D3 電源状態は D3hot と呼ばれ、新しい電源状態 (D3cold) が使用可能になります。 デバイスは、システムが動作中 (S0) 状態であるか低電力状態である間に D3cold 状態に入ることができます。 デバイスが D3cold 電源状態の場合、バスは非アクティブであり、外部アクション (ネットワーク ケーブルに接続するなど) によってハードウェア イベントが発生したときに、デバイスが独自のウェイク 信号をトリガーする必要があります。

アイドル状態の電源ダウンをサポートするデバイスでは、この構造体の ExcludeD3Cold メンバーを使用して、D3cold 電源状態を、アイドル タイムアウト期間の終了後にデバイスが入力する低電力状態に対して許容される選択肢にするかどうかを指定できます。

デバイスのアイドル機能を制御するレジストリ エントリの詳細については、「 UMDF でのデバイスのアイドル状態とスリープ解除動作のユーザー制御」を参照してください。

WUDF_DEVICE_POWER_POLICY_IDLE_SETTINGS構造体を初期化するには、ドライバーで WUDF_DEVICE_POWER_POLICY_IDLE_SETTINGS_INIT を呼び出す必要があります。

要件

要件
最小 UMDF バージョン 1.11
Header wudfddi_types.h

こちらもご覧ください

IWDFDevice3::AssignS0IdleSettingsEx

WUDF_DEVICE_POWER_POLICY_IDLE_SETTINGS_INIT