次の方法で共有


Acpi.sys (Windows ACPI ドライバー)

Windows 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 の仕様

Advanced Configuration and Power Interface Specification (ACPI 6.4 仕様) は、Unified Extensible Firmware Interface Forum の 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) にあります。