デバイス稼働状態 D0

D0 デバイス電源状態では、デバイスは完全にオンで動作します。 この状態では、デバイス ドライバーは I/O 操作を実行するデバイスと対話でき、デバイスは割り込みを生成できます。 デバイスに、メモリまたは I/O アドレス空間にマップされたハードウェア レジスタがある場合、ドライバーはこれらのレジスタにアクセスできます。

Windows 8 以降、デバイス ドライバーはパッシブ レベルの割り込みサービス ルーチン (ISR) をデバイスからの割り込みに接続できます。 デバイスは、D0 状態であるかどうかにかかわらず割り込みを生成できます。 低電力 Dx 状態の場合、デバイスは、デバイスを D0 に戻すためのトリガーとして機能する割り込みを生成できます。 デバイスが D0 になった後、ISR は IRQL = PASSIVE_LEVEL で実行されるようにスケジュールされます。 Windows 7 を含む以前のバージョンの Windows では、デバイスが D0 以外のデバイス電源状態にある場合に割り込みを生成しないでください。

D0 から低電力 Dx 状態への遷移は、デバイス ドライバーがデバイスの電源ポリシー オーナーとして機能している状態で、PoRequestPowerIrp ルーチンを呼び出して遷移を開始する場合にのみ発生します。 電源マネージャーが電源 IRP (IIRP_MN_SET_POWER) を送信してこの呼び出しに応答すると、デバイス ドライバー、バス ドライバー、プラットフォーム ファームウェアが (Windows ACPI ドライバー、Acpi.sys を介して) 協調してこの IRP を処理し、デバイスの電源状態を変更します。

通常、デバイス ハードウェアは、デバイスの構成方法に応じて、ランタイム割り込みまたはウェイク シグナルを生成できる一連の内部イベントを監視します。 ドライバーは、1 つのコード パスを割り込みへの応答用に、もう 1 つをウェイク イベントへの応答用に実装します。 割り込みコード パスでウェイク イベントを処理する必要がない場合、およびウェイク コード パスが割り込みに対処する必要がない場合は、ドライバー コードを簡略化できます。 ベスト プラクティスとして、ドライバーは、デバイスが D0 状態の場合にのみ割り込みを生成し、デバイスが低電力 Dx 状態の場合にのみウェイク信号を生成するようにデバイスを構成する必要があります。 通常、ドライバーは、デバイスが D0 を終了する直前にウェイク信号を生成し、デバイスが D0 になった直後に割り込みを生成するようにデバイスを構成します。

通常、デバイスは、ハードウェア リセット信号がアサートされたときに D0 状態になります。 実際、PCI や PCI Express などのバスの仕様には、この動作が必要です。

D0 状態の特徴は次のとおりです。

消費電力
デバイスの最高レベルの連続消費電力。

デバイスのコンテキスト
すべてのコンテキストが保持されます。

デバイス ドライバーの動作
通常の運用。

復元時間
該当なし。

ウェイクアップ機能
該当なし。