Windows Advanced Configuration and Power Interface (ACPI) ドライバー (Acpi.sys) は、Windows オペレーティング システムの受信トレイ コンポーネントです。 Acpi.sys の役割には、電源管理とプラグ アンド プレイ (PnP) デバイス列挙のサポートが含まれます。 ACPI BIOS を搭載したハードウェア プラットフォームでは、HAL により、デバイス ツリーのベースでシステムの起動時に Acpi.sys が読み込まれます。 Acpi.sys は、オペレーティング システムと ACPI BIOS の間のインターフェイスとして機能します。 Acpi.sys は、デバイス ツリー内の他のドライバーに対して透過的です。
特定のハードウェア プラットフォームで Acpi.sys によって実行されるその他のタスクには、COM ポートのリソースの再プログラミングや、システム ウェイクアップ用の USB コントローラーの有効化などがあります。
ACPI デバイス
ハードウェア プラットフォーム ベンダーは、プラットフォームのハードウェア トポロジを記述するために、ACPI BIOS の ACPI 名前空間の階層を指定します。 詳細については、「 ACPI 名前空間階層」を参照してください。
ACPI 名前空間階層で説明されている各デバイスについて、Windows ACPI ドライバー Acpi.sysは、フィルター デバイス オブジェクト (フィルター DO) または物理デバイス オブジェクト (PDO) を作成します。 デバイスがシステム ボードに統合されている場合、Acpi.sys は、ACPI バス フィルターを表すフィルター デバイス オブジェクトを作成し、バス ドライバー (PDO) のすぐ上のデバイス スタックに接続します。 ACPI 名前空間に記述されているが、システム ボードには記述されていない他のデバイスの場合、Acpi.sys は PDO を作成します。 Acpi.sys は、これらのデバイス オブジェクトを使用して、デバイス スタックに電源管理と PnP 機能を提供します。 詳細については、 ACPI デバイスのデバイス スタックを参照してください。
Acpi.sys がデバイス オブジェクトを作成するデバイスを ACPI デバイスと呼びます。 ACPI デバイスのセットは、ハードウェア プラットフォームによって異なり、ACPI BIOS とマザーボードの構成によって異なります。 Acpi.sys は、ACPI 名前空間に記述され、ハードウェア プラットフォームに永続的に接続されているデバイスに対してのみ ACPI バス フィルターを読み込みます (通常、このデバイスはコア シリコンに統合されるか、システム ボードにはんだ付けされます)。 すべてのマザーボード デバイスに ACPI バス フィルターがあるわけではありません。
すべての ACPI 機能は、上位レベルのドライバーに対して透過的です。 これらのドライバーは、特定のデバイス スタックで ACPI フィルターの有無に関する想定を行う必要はありません。
Acpi.sys と ACPI BIOS は、ACPI デバイスの基本的な機能をサポートします。 ACPI デバイスの機能を強化するために、デバイス ベンダーは WDM ファンクション ドライバーを提供できます。 詳細については、 ACPI デバイスファンクション ドライバーの操作を参照してください。
ACPI デバイスは、ACPI BIOS の システム記述テーブル の定義ブロックによって指定されます。 デバイスの定義ブロックは、特に、デバイス データへのアクセスに使用されるデバイス メモリの連続したブロックである操作領域を指定します。 操作リージョン内のデータを変更するのは、Acpi.sys だけです。 デバイスのファンクション ドライバーは、操作領域のデータを読み取ることができますが、データを変更することはできません。 操作領域ハンドラーが呼び出されると、操作領域のバイトが、Acpi.sysのデータ バッファーとの間で転送されます。 ファンクション ドライバーと Acpi.sys の組み合わせ操作はデバイス固有であり、ハードウェア ベンダーによって ACPI BIOS で定義されます。 一般に、ファンクション ドライバーと Acpi.sys は、デバイス固有の操作を実行して情報を取得するために、操作領域内の特定の領域にアクセスします。 詳細については、「 操作リージョンのサポート」を参照してください。
ACPI 制御メソッド
ACPI 制御メソッドは、ACPI デバイスのクエリと構成を行う簡単な操作を宣言および定義するソフトウェア オブジェクトです。 制御メソッドは ACPI BIOS に格納され、ACPI マシン言語 (AML) と呼ばれるバイト コード形式でエンコードされます。 デバイスの制御メソッドは、システム ファームウェアからメモリ内のデバイスの ACPI 名前空間に読み込まれ、Windows ACPI ドライバーによって解釈 Acpi.sys。
制御メソッドを呼び出すために、ACPI デバイスのカーネル モード ドライバーは 、Acpi.sys によって処理されるIRP_MJ_DEVICE_CONTROL要求を開始します。 ACPI 列挙デバイスに読み込まれたドライバーの場合、Acpi.sys は常にドライバー スタックに物理デバイス オブジェクト (PDO) を実装します。 詳細については、「 ACPI 制御メソッドの評価」を参照してください。
ACPI 仕様
高度な構成と電源インターフェイスの仕様 (ACPI 6.4 仕様) は、統合拡張ファームウェア インターフェイス フォーラムの Web サイトから入手できます。
ACPI 仕様のリビジョン 5.0 では、システム オン チップ (SoC) の集積回路に基づき、 コネクト スタンバイ 電源モデルを実装する、低電力のモバイル PC をサポートする一連の機能が導入されています。 Windows 8 以降、Windows ACPI ドライバー Acpi.sysは、ACPI 5.0 仕様の新機能をサポートしています。 詳細については、 SoC プラットフォームの Windows ACPI 設計ガイドを参照してください。
ACPI デバッグ
システム インテグレーターと ACPI デバイス ドライバー開発者は、Microsoft AMLI デバッガー を使用して AML コードをデバッグできます。 AML は解釈される言語であるため、AML デバッグには特別なソフトウェア ツールが必要です。
AMLI デバッガーの詳細については、 ACPI デバッグを参照してください。
Microsoft ACPI ソース言語 (ASL) コンパイラ
ACPI ソース言語 (ASL) を ACPI マシン言語 (AML) にコンパイルする方法については、 Microsoft ASL コンパイラを参照してください。
Microsoft ASL コンパイラのバージョン 5.0 では、 ACPI 5.0 仕様の機能がサポートされています。
ASL コンパイラは、 Windows Driver Kit (WDK) と共に配布されます。
ASL コンパイラ (asl.exe) は、インストールされている WDK の Tools\<build>\<architecture>\ACPIVerify
フォルダー (たとえば、 C:\Program Files (x86)\Windows Kits\10\Tools\10.0.22631.0\x64
) にあります。