Windows カーネルモード電源マネージャー
Windows では、電源管理テクノロジを使用して、PC 全般および特にバッテリ駆動のノート PC の電力消費量を削減します。 たとえば、Windows コンピューターをスリープ状態または休止状態にできます。 コンピュータデバイスの複雑な電源管理システムは、コンピュータがシャットダウンを開始したり、低消費電力に移行したりする際に、接続されたデバイスも適切な方法で電源を落とすことができ、データが失われないように進化しました。 ただし、これらのデバイスには、電源状態の変化に関する警告が必要であり、制御デバイスが正常にシャットダウンするまで待機するように指示する通信ループの一部になる必要がある場合もあります。
Windows カーネル モード電源マネージャーは、電源状態の変更をサポートするすべてのデバイスに対して、電源状態の順序どおりの変更を管理します。 これは、多くの場合、他のデバイスを制御するデバイスの複雑なスタックによって行われます。 各制御デバイスは ノード と呼ばれ、デバイス スタックを介して電源状態の変化の通信を処理できるドライバーが必要です。
電源状態の変更の影響を受ける可能性のあるドライバーを作成する場合は、ドライバー コードで次の種類の情報を処理できるようにする必要があります。
システム アクティビティ レベル。
システム バッテリー レベル。
シャットダウン、スリープ、または休止状態に対する現在の要求。
電源ボタンを押すなどのユーザー アクション。
コントロール パネルの設定 (10% のバッテリ電源で自動的にシャットダウンするなど)。
電源マネージャーは、IRP を使用してこれらの要求を処理します。 IRの詳細については、 IRPの処理を参照してください。
電源マネージャーは、電源管理を処理し、電源イベントを調整するポリシー管理と組み合わせて動作し、電源管理 IRP を生成します。 電源マネージャーは、電源状態を変更する要求を収集し、デバイスの電源状態を変更する必要がある順序を決定し、適切な IRP を送信して、適切なドライバーに変更を行うように指示します (場合によっては、サブデバイスにも変更を行うように指示できます)。 ポリシー マネージャーは、システム内のアクティビティを監視し、ユーザーの状態、アプリケーションの状態、デバイス ドライバーの状態を電源ポリシーに統合します。
電源管理の詳細については、「 Windows ドライバーの電源管理」を参照してください。
電源マネージャーは、I/O マネージャーのサブ コンポーネントと見なされます。 詳細については、「 Windows I/O マネージャー」を参照してください。
通常、電源マネージャーに直接インターフェイスを提供するルーチンには、"Po" というプレフィックスが付きます (例: PoSetPowerState)。 電源マネージャー ルーチンの一覧については、「 電源マネージャー ルーチン」を参照してください。
Windows ドライバー フレームワーク (WDF) には、電源管理をより簡単にする一連のライブラリが用意されています。 WDF の詳細については、「 カーネル モード ドライバー フレームワークの概要」を参照してください。