デバイスのパフォーマンス状態の管理
Windows Vista は、ドライバー スタックがデバイスの電源ポリシーをより適切に管理できるようにする強化された電源管理インフラストラクチャを備えています。 ドライバーは、システム定義の電源設定が変更されたとき、またはシステム電源イベントが発生したときに、通知を受け取るように登録することができます。 デバイスの電源ポリシー所有者は、これらの通知を使用して、デバイスの電力使用量を適切に調整できます。 さらに、デバイス固有の電源およびパフォーマンス機能へのアクセスを提供するカスタム電源設定を作成でき、これらの機能を、システムの電源ポリシーに緊密に統合させることができます。 デバイスのパフォーマンス状態と省電力動作をシステム電源ポリシーと統合するための、2 つの主要なアプローチを次に示します。
アクティブな電源スキーム、電源スキームのパーソナリティ、または電源の変更の通知を受信するための登録
デバイスのカスタム電源設定の作成
デバイスのパフォーマンス状態または省電力動作を構成するために使用できる、カスタム電源設定を定義することができます。 カスタム電源設定に関する情報は、電源マネージャーによって保存および管理されます。 デバイス ドライバー、サービス、アプリケーションなど、システム内の他のコンポーネントは、カスタム電源設定の値が変更されたときに通知されるように登録できます。 一般的に、パフォーマンスと電力消費量をトレードオフする機能を備えたデバイスには、対応するカスタム電源設定が必要です。 カスタム電源設定の作成は、電力消費量をシステム電源ポリシーと緊密に統合するための最も柔軟なアプローチであり、次の利点があります。
ユーザーがカスタム電源設定にアクセスできるようにするために、カスタム ユーザー インターフェイスは必要ありません。 カスタム電源設定を含むすべての電源設定は、[電源オプション] コントロール パネルの [詳細設定] ページでユーザーに表示されます。
ユーザーとシステム管理者は、電源管理コマンド ライン ツールである Powercfg.exe を使用して、カスタム電源設定の構成を簡単にスクリプト化できます。
必要に応じてシステム管理者は、管理用テンプレート (.ADM) ファイルを作成して、新しい電源設定のグループ ポリシー ベースの構成を有効にすることができます。
個々の電源設定には、電源設定の値を一意に識別し、名前を付け、説明し、指定するために必要なすべての情報が含まれています。 各電源設定は、GUID、設定名、説明、および AC と DC の電源スキームの既定の設定で定義されます。 カスタム電源設定は、INF AddPowerSetting ディレクティブを使用してデバイス用に静的に作成することも、Microsoft Windows SDK ドキュメントに記載されている電源管理リファレンスに含まれている Win32 電源管理機能を呼び出すことによって動的に作成することもできます。
ドライバーは、PoRegisterPowerSettingCallback を呼び出して、電源設定の変更をドライバーに通知するために電源マネージャーが呼び出すコールバック ルーチンを登録します。 設定が変更されると、電源マネージャーはコールバック ルーチンを呼び出し、新しい設定値を渡します。 これによりドライバーは、電源設定に適したアクションを実行することができます。 各設定は、電源設定の GUID によって識別されます。 電源設定のシステム定義 GUID は、Wdm.h と Ntpoapi.h で定義されます。
たとえば、モニター電源がオンまたはオフになったときに通知を受け取るために、ドライバーは PoRegisterPowerSettingCallback を呼び出し、モニター電源設定 (GUID_MONITOR_POWER_ON) を識別する GUID と、モニター電源設定の値が変更されたときに電源マネージャーが呼び出すコールバック ルーチンへのポインターを指定します。
アクティブな電源スキーム、電源スキームのパーソナリティ、または電源の変更の通知を受信するための登録
アクティブな電源スキームのパーソナリティは、システムの全体的な節電動作に対するユーザーの意図を伝えるものです。 カスタム スキームを含むすべての電源スキームには、スキームの全体的な意図を示すパーソナリティがあります。 これにより、スキームの意図を知ることのすべての利点を提供しながら、追加のカスタム電源スキームを作成することができます。 Windows Vista には、次の 3 つのシステム定義の電源スキームとそれに対応するパーソナリティが含まれています。
最大節電
パフォーマンスを低下させて、電力消費量を最小限に抑えます。
自動 (バランス)
全体的な電力消費量に基づいて最適な電力状態レベルをシステムが選択します。
最大パフォーマンス
電力消費量に関係なく、最大のパフォーマンスを提供します。
電源には、AC または DC のいずれかの電源を使用できます。
デバイス電源ポリシー所有者は、アクティブな電源スキーム、電源スキームのパーソナリティ、および電源に関する情報を使用して、デバイスの電源ポリシーを調整することができます。 たとえば、電源スキームのパーソナリティが最大節電に変わると、デバイスの電源ポリシー所有者はデバイスの電源を積極的にオフにする可能性があります。 一方で、電源スキームのパーソナリティが最大パフォーマンスに変更された場合、デバイスの電源ポリシー所有者は、電力消費量を減らすのではなく、デバイスのパフォーマンス レベルを維持し、最高レベルのパフォーマンスを確保するためにデバイスに常に電力を供給したままにする可能性があります。
ドライバーは、アクティブな電源スキーム、電源スキームのパーソナリティ、または電源に変更が発生したときに通知されるように登録することができます。 ドライバーは PoRegisterPowerSettingCallback を呼び出して、次のように、電源マネージャーがこのような変更をドライバーに通知するために呼び出すコールバック ルーチンを登録します。
アクティブな電源スキームへの変更の通知を登録するには、電源スキーム (GUID_ACTIVE_POWERSCHEME) の設定を表す GUID を指定します。 その後、電源マネージャーは、新しい電源スキームのパーソナリティが前の電源スキームと同じであっても、アクティブな電源スキームが変更されるたびにコールバック ルーチンを呼び出します。
電源スキームのパーソナリティの変更を通知するように登録するには、電源スキームのパーソナリティ (GUID_POWERSCHEME_PERSONALITY) の設定を表す GUID を指定します。 その後、電源マネージャーは、アクティブな電源スキームが変更され、新しい電源スキームのパーソナリティが前の電源スキームのパーソナリティと異なる場合は常に、コールバック ルーチンを呼び出します。
電源への変更があったときに通知するように登録するには、電源 (GUID_ACDC_POWER_SOURCE) の設定を表す GUID を指定します。 その後。電源マネージャーは、電源設定が変更されるたびにコールバック ルーチンを呼び出します。
アクティブな電源スキームが変更されたとき、または電源スキームのパーソナリティが変更されたときに、電源マネージャーはコールバック ルーチンを呼び出し、新しい電源スキームまたは電源スキームのパーソナリティを表す GUID を渡します。 これにより、ドライバーは変更に適したアクションを実行することができます。
アクティブな電源スキーム設定と電源スキームのパーソナリティ設定では、次の GUID を使用してそれぞれの値を識別します。
GUID_MAX_POWER_SAVINGS。最大節電電力スキームとそれに対応するパーソナリティに対応します。
GUID_MIN_POWER_SAVINGS。最大パフォーマンス電力スキームとそれに対応するパーソナリティに対応します。
GUID_TYPICAL_POWER_SAVINGS。自動 (バランス) 電源スキームとそれに対応するパーソナリティに対応します。
電源が変更されると、電源マネージャーはコールバック ルーチンを呼び出し、電源設定を表す GUID と、コンピューターが AC 電源、DC 電源、または短期的な DC 電源のいずれによって電源を供給されているかを示す電源設定の値を渡します。