次の方法で共有


即時アイドル タイムアウトのオプトイン

このトピックでは、電源が不要になったときに、Windows 8 ドライバーが即時電源オフ状態へのオプトインに使用できる ImmediateIdle レジストリ値について説明します。

Windows 8 では、「PortCls レジストリの電源設定」で説明されている既定の電源設定に加えて、関連するドライバーの PowerSettings レジストリ キーにも存在する ImmediateIdle レジストリ値が導入されました。

この inf ファイルは、ImmediateIdle を設定する方法を示しています。

[MyAudioDevice.AddReg]
HKR,PowerSettings,ImmediateIdle,%REG_BINARY%, 0x00, 0x00, 0x00, 0x00

ImmediateIdle はデータ型 REG_DWORD であり、既定値は FALSE に相当する "0" です。 上記の構文フラグメントでは、16 進数の値 "0" は、電源が不要になったときにデバイスがすぐに電源を切らないことを意味します。

電源が不要になったときに、ドライバーが即時電源オフ状態にオプトインするには、次の構文を使用する必要があります。

[MyAudioDevice.AddReg]
HKR,PowerSettings,ImmediateIdle,%REG_BINARY%, 0x01, 0x00, 0x00, 0x00

前の例では、"1" の 16 進値は TRUE に相当し、電源が不要になったときにデバイスはすぐに電源をオフにします。

ランタイム電源管理フレームワークが DevicePowerRequired メソッドのコールバックを呼び出し、デバイスに電源が必要なくなったことを示すと、PortCls は IdlePowerState レジストリ値で示される D 状態のデバイス電源 IRP を要求します。 状態が指定されていない場合、既定値 D3 が使用されます。

ドライバーが即時アイドル状態の電源管理にオプトインする場合、システムの電源エンジン プラグイン (PEP) に必要なロジックが含まれていることを確認する必要があります。 I/O 要求のバッチに対してデバイスの電源をオンにしておくには、いくつかの常駐ルールを適用する必要があります。

加えて、Windows 7 で導入されたインターフェイスでは、ドライバーがプログラムによってアイドル状態の電源管理を有効または無効にすることができ、ドライバーがすぐにアイドル状態の電源管理にオプトインしない場合も引き続き受け入れられます。 これは IPortClsPower::SetIdlePowerManagement メソッドを使用して行われ、ImmediateIdle が 1 (TRUE) に設定されている場合を除き、レジストリの設定をオーバーライドします。