次の方法で共有


デバイスの D3cold 機能

デバイスの電源ポリシー所有者 (PPO) であるドライバーが D3cold を入力できるようにする前に (コンピューターが S0 に残るとき)、ドライバーは、デバイスが応答し、デバイスが D3cold に入った後も正常に動作し続けることを確認する必要があります。

プラグ アンド プレイ (PnP) デバイスの場合、オペレーティング システムは通常、親バス ドライバーからデバイスの D3cold 機能に関する情報を取得します。

たとえば、デバイスが PCI または PCI Express バスに接続されている場合、デバイスの PCI 構成領域には、デバイスの機能を示す Power Management Register Block が含まれます。 このブロックの機能フラグは、デバイスが電源管理イベントを通知できるデバイスの電源状態、または PME (ウェイク イベントの PCI 用語) を指定します。 これらの状態には、D3hot と D3cold が含まれる場合があります。 PCI 電源管理の詳細については、「 PCI Bus 電源管理インターフェイスの仕様」を参照してください。

デバイスが入力した低電力 Dx 状態からウェイク イベントを通知できる必要がある場合は、デバイス、親バス コントローラー、およびハードウェア プラットフォームが D3cold からのウェイク イベントの通知をサポートしていない限り、デバイスは D3cold を入力しないでください。

デバイスの KMDF ドライバーは 、WdfDeviceAssignS0IdleSettings メソッドを呼び出して、デバイスがスリープ解除イベントを通知できる最も電力の低いデバイスの電源状態でデバイスをアイドル状態にします。 KMDF バージョン 1.11 以降、 WdfDeviceAssignS0IdleSettings には、可能な低電力 Dx 状態の範囲に D3cold が含まれています。 このメソッドを使用すると、デバイス、親バス ドライバー、および ACPI システム ファームウェアが D3cold からのウェイク イベントの通知をサポートしている場合にのみ、デバイスを D3cold でアイドル状態にします。

デバイスの WDM ドライバーは、デバイスがアイドル状態のときにデバイスを移動する低電力 Dx 状態を決定する必要があります。 (これに対し、 WdfDeviceAssignS0IdleSettings では、ドライバーが必要としないように、この Dx 状態が自動的に選択されます)。デバイスが入力した低電力 Dx 状態からウェイク イベントを通知できる必要がある場合、ドライバーは GetIdleWakeInfo ルーチンを呼び出して、デバイスがウェイク イベントを通知できる最も低い電力のデバイスの電源状態を判断できます。 この情報を取得するために、 GetIdleWakeInfo は基になるバス ドライバーと ACPI システム ファームウェアを照会します。 GetIdleWakeInfo からの情報に基づいて、ドライバーは SetD3ColdSupport ルーチンを呼び出して、D3cold へのデバイスの遷移を有効または無効にすることができます。

デバイスでは、D3cold からウェイク イベントを通知する機能が必要ない場合があります。 デバイスは、代わりに、ソフトウェアによって開始されたアクションに応答する場合にのみ、D3cold から D0 への移行を行う必要がある場合があります。 たとえば、ドライバーがデバイスの I/O 要求を受け取った場合、ドライバーはデバイスをスリープ解除する必要があります。 いくつかの例外を除き、このようなデバイスのドライバーは、D3cold を入力するデバイスを有効にすることができます。 考えられる例外は、D3cold から D0 への移行に長時間を要するデバイスです。 たとえば、ディスプレイ デバイスには、デバイスが D3cold に入り、デバイスが D3cold を終了した後に復元する前に保存する必要がある大量のメモリが含まれている場合があります。

D3cold の ACPI サポートの詳細については、「 D3cold のファームウェア要件」を参照してください。