モダン スタンバイ ファームウェアの通知
「モダン スタンバイ システムの状態」で説明されている概要に従って、システムがこれらの状態の間で遷移したことを示す通知が Microsoft から提供されています。 これらは OS レベルの通知ではなくファームウェアの通知である点に注意することが重要です。
これらの通知はデバイス固有メソッド (_DSM) の関数のセットであり、主要なシステム状態遷移に関する電源と機能の最適化のために、オペレーティング システムでシステム ファームウェアと対話するために使用できます。 モダン スタンバイ対応システムを設計する場合、エンジニアは特定のシステム動作を実装する方法と状況を考慮する必要があります。 これらの決定における重要な要因の1つは、システムの電源状態です。デザイナーは、ディスプレイがオフになったとき、システムがスリープ状態になったときなどに、特定のアクションを実行する必要があります。このセクションでは、最新のスタンバイシステムでの電源状態遷移に対して公開される通知の概要を示します。 Microsoft からは、3 つの主要な遷移の開始と終了に対する通知が公開されています。 これらの遷移と対応する通知を次の図に示します。
このセクションでは、読者が ACPI の仕様で定義されているインターフェイスについてよく知っているものとして説明します。 ACPI の最新の仕様については、こちらのページをご覧ください。 以下の _DSM はプラットフォームに依存しないことに注意してください。こちらで説明されている Intel 固有の _DSM と混同しないでください。 この_DSMでは、UUIDによって識別され、関数0、3-6はWindows 10バージョン1903以降でサポートされており、関数7&8はWindows 10バージョン2004で追加されています。 機能 9 は Windows 11 バージョン 22H2 で追加されました。
_DSM 関数 | サポート開始日 |
---|---|
関数 0, 3-6 | Windows 10 バージョン 1903 |
関数 7,8 | Windows 10 2004 |
関数 9 | Windows 11 22H2 |
関数の列挙 (関数 0)
オペレーティング システムでプラットフォームと対話するには、ACPI デバイスが名前空間を介して公開されている必要があります。 このデバイスには、EISAID(「PNP0D80」)を含む_CIDオブジェクトが含まれている必要があります。 このデバイスのスコープには、デバイスがサポートする_DSMsを示す次の_DSM定義が含まれている必要があります。
上記の関数 3 から 8 のサポートを示すために、Enumerate Functions 関数 (関数 0) は Buffer(){0xFF, 0x01} を返す必要があります。 詳しくは、ACPI 仕様の セクション 9.1.1 をご覧ください。
ディスプレイ オフ通知 (関数 3)
この_DSM関数は、オペレーティングシステムがすべてのディスプレイ (ローカルとリモートの場合) がオフになっている状態になったときに呼び出されます。 これは、ボタンが押されたりカバーが閉じられたりしたときのイベント、一部のディスプレイ電源停止タイマーの期限切れなど、ユーザーの操作に基づいて発生する可能性があります。 この関数の呼び出しによるディスプレイ オフ通知を OS でサポートする場合は、次のセクションで説明するディスプレイ オン通知も呼び出す必要があります。
引数:
- Arg0: UUID: 11E00D56-CE64-47ce-837B-1F898F9AA461
- Arg1: リビジョン ID: 0
- Arg2: 関数インデックス: 3
- Arg3: 未使用
結果:
- なし
ディスプレイ オン通知 (関数 4)
この_DSM関数は、ディスプレイオフ通知が発生し、任意の表示 (ローカルまたはリモート) がアクティブな状態に返された場合に呼び出す必要があります。 この関数の呼び出しによるディスプレイ オン通知を OS でサポートする場合は、前のセクションで説明したディスプレイ オフ通知も呼び出す必要があります。
引数:
- Arg0: UUID: 11E00D56-CE64-47ce-837B-1F898F9AA461
- Arg1: リビジョン ID: 0
- Arg2: 関数インデックス: 4
- Arg3: 未使用
結果:
- なし
最低電力状態開始通知 (関数 5)
すべてのソフトウェア アクティビティが停止し (アクティベーターが保持されていない)、システムが最も低い電力状態に入ることができるようになると、この _DSM 関数が呼び出されます。 システムは、明示的に許可された、ユーザーが望む動作を提供するため、モダン スタンバイ セッションの間に、この状態を何度も開始して終了する場合があります。 これがどのように定義され、モダン スタンバイ スリープ開始 (関数 7) とどのように区別されるかについて詳しくは、上の図をご覧ください。 OS でこの最低プラットフォーム電力状態開始通知をサポートする場合は、次のセクション (関数 6) で説明されている対応する終了通知も呼び出す必要があります。
引数:
- Arg0: UUID: 11E00D56-CE64-47ce-837B-1F898F9AA461
- Arg1: リビジョン ID: 0
- Arg2: 関数インデックス: 5
- Arg3: 未使用
結果:
- なし
最低電力状態終了通知 (関数 6)
この _DSM は、システムが最低電力状態からウェイクしてソフトウェア アクティビティを実行する (アクティベーターが取得される) たびに、呼び出される場合があります。 システムは、明示的に許可された、ユーザーが望む動作を提供するため、モダン スタンバイ セッションの間に、これを何度も開始して終了する場合があります。 これがどのように定義され、モダン スタンバイ スリープ開始 (関数 7) とどのように区別されるかについて詳しくは、上の図をご覧ください。 この関数の呼び出しによる最低電力状態終了通知を OS でサポートする場合は、前のセクションで説明した最低電力状態開始通知も呼び出す必要があります。
引数:
- Arg0: UUID: 11E00D56-CE64-47ce-837B-1F898F9AA461
- Arg1: リビジョン ID: 0
- Arg2: 関数インデックス: 6
- Arg3: 未使用
結果:
- なし
スリープ開始通知 (関数 7)
この _DSM 関数は、システムがモダン スタンバイ セッションのスリープ状態を開始すると呼び出されます。 これは、すべての付随するシステム停止動作が完了し、明示的に許可された、ユーザーが希望する、付加価値ソフトウェア アクティビティのみが実行できる、低電力フェーズの開始として定義されます。 この通知を受け取ったら、キーボードのバックライト、電源ボタンの LED、ファンをオフにすることをお勧めします。これは、大きなワークロードを完了する必要があり、システムが正式に長期的なスリープ状態に入ったことを示します。 この関数の呼び出しによるモダン スリープ開始通知を OS でサポートする場合は、次のセクションで説明するモダン スリープ終了通知も呼び出す必要があります。
引数:
- Arg0: UUID: 11E00D56-CE64-47ce-837B-1F898F9AA461
- Arg1: リビジョン ID: 0
- Arg2: 関数インデックス: 7
- Arg3: 未使用
結果:
- なし
スリープ終了通知 (関数 8)
この _DSM 関数は、システムがモダン スタンバイ セッションのスリープ状態を終了すると呼び出されます。 これは、システムが明示的なスリープ状態ではなくなり、大きなワークロードを実行できるようになる、低電力フェーズの終了として定義されます。 この通知を受け取ったら、キーボードのバックライト、電源ボタンの LED、ファンの動作を再開することをお勧めします。これは、大きなワークロードを実行でき、システムが正式に長期的なスリープ状態を終了したことを示します。 この関数の呼び出しによるモダン スリープ終了通知を OS でサポートする場合は、前のセクションで説明したモダン スリープ開始通知も呼び出す必要があります。
引数:
- Arg0: UUID: 11E00D56-CE64-47ce-837B-1F898F9AA461
- Arg1: リビジョン ID: 0
- Arg2: 関数インデックス: 8
- Arg3: 未使用
結果:
- なし
ディスプレイ通知をオンにする (機能 9)
この _DSM は、モダン スタンバイを終了するときにシステムがディスプレイをオンにするときに呼び出されます。 たとえば、OEM 設計がスリープ移行 (機能 7) 後にデバイスの電力制限 (PLx) を意図的に下げるように設定されている場合、その特定の設計は他のデバイスよりも再開時間が長いと苦情が出されます。 その機能 9 は、システム ファームウェアの以前のリリース PL が、ディスプレイをオンにすることだけを目的としている場合にモダン スタンバイからの再開時間を短縮するのに役立つ信号です。 (機能9はWindows 11 バージョン22H2で追加されました。)
引数:
- Arg0: UUID: 11E00D56-CE64-47ce-837B-1F898F9AA461
- Arg1: リビジョン ID: 0
- Arg2: 関数インデックス: 9
- Arg3: 未使用
結果:
- なし