ACPI 制御方法の評価
Advanced Configuration and Power Interface (ACPI) 制御メソッドは、システム ハードウェアのクエリと構成の操作を宣言および定義するソフトウェアです。 ACPI 互換システムは、最小限の制御メソッドのセットを提供します。 制御メソッドは、ACPI ソース言語 (ASL) で記述され、ASL コンパイラによって ACPI Machine Language (AML) にコンパイルされ、システム ファームウェアから ACPI 名前空間に読み込まれ、ACPI ドライバーによって解釈されます。
カーネルモードドライバーフレームワーク (KMDF) または Windows Driver Model (WDM) の要件に準拠するカーネルモード デバイス ドライバーは、デバイス制御要求を使用して ACPI 制御メソッドを評価することができます。 Windows 8 以降、ユーザーモード ドライバー フレームワーク (UMDF) の要件に準拠するユーザーモード ドライバーは、デバイス制御要求を使用して ACPI 制御メソッドを評価することができます。 通常、ドライバーは、プラットフォーム固有の機能を開始または構成する ACPI 制御メソッドを評価します。 ドライバーは、それがロードされている物理デバイス オブジェクト (PDO) の名前空間内で、ACPI 制御メソッドを評価することができます。 ACPI 列挙デバイスのデバイス スタックに読み込まれたドライバーの場合、ACPI ドライバーは常に、デバイス スタックで PDO を作成して操作するバス ドライバーです。 この機能には、親デバイスの子孫である子オブジェクトでサポートされている制御メソッドの評価が含まれます。
ドライバーは、次の IRP_MJ_DEVICE_CONTROL 要求のいずれかをデバイスに送ることで、制御メソッドを評価します。
-
この要求は、要求の送信先デバイスでサポートされている制御メソッドを同期的に評価します。 この IOCTL を使用するには、デバイスのドライバーは、入力および出力メソッドの引数バッファー、メソッドの名前、および要求が完了するのを待機するイベント オブジェクトを提供します。 このメソッドは、要求が送信されるデバイスの ACPI 名前空間内の直接の子オブジェクトである必要があります。
-
この要求は、要求の送信先デバイスでサポートされている制御メソッドを非同期的に評価します。 この IOCTL を使用するには、デバイスのドライバーが、入出力メソッドの引数バッファー、メソッドの名前、およびすべての下位レベル ドライバーが要求を完了した後に I/O マネージャーが呼び出す IoCompletion ルーチンを供給します。 このメソッドは、要求が送信されるデバイスの ACPI 名前空間内の直接の子オブジェクトである必要があります。
-
この要求は、デバイスまたは要求の送信先デバイスの子孫の子オブジェクトでサポートされている制御メソッドを同期的に評価します。 この IOCTL を使用するには、デバイスのドライバーは、入力と出力メソッドの引数バッファー、デバイスの ACPI 名前空間内の制御メソッドのパスと名前、および要求の完了を待機するイベント オブジェクトを提供します。
IOCTL_ACPI_ASYNC_EVAL_METHOD_EX
この要求は、デバイスまたは要求の送信先デバイスの子孫の子オブジェクトでサポートされている制御メソッドを非同期的に評価します。 この IOCTL を使用するために、デバイスのドライバーは、入出力メソッドの引数バッファー、デバイスの ACPI 名前空間内の制御メソッドのパスと名前、およびすべての下位レベル ドライバーが要求を完了した後に I/O マネージャーが呼び出す IoCompletion ルーチンを供給します。
ACPI 制御メソッドを同期的に評価する方法について詳しくは、「ACPI 制御メソッドを同期的に評価する」を参照してください。 ACPI 制御メソッドを非同期的に評価する方法について詳しくは、「IOCTL_ACPI_ASYNC_EVAL_METHOD」と「IOCTL_ACPI_ASYNC_EVAL_METHOD_EX」を参照してください。
デバイスのドライバーが、デバイスの直接の子オブジェクトではない制御メソッドを評価するには、ドライバーは、デバイスの ACPI 名前空間内のメソッドのパスと名前を指定する必要があります。 Windows はデバイスの子オブジェクトのパスと名前を取得するために、デバイスのドライバーが次の列挙に使用できる IOCTL_ACPI_ENUM_CHILDREN 要求をサポートしています。
デバイスとその直接の子デバイス。
デバイスとそのすべての子孫の子デバイス。
特に制御メソッドを含む、デバイスの ACPI 名前空間内の、指定された名前の子孫の子オブジェクト。
デバイスの名前空間でデバイスとメソッドを列挙する方法については、「子デバイスと制御メソッドの列挙」を参照してください。
ドライバーが制御メソッドの評価に使用できるシステム提供のマクロについては、「制御メソッド マクロ」を参照してください。
ACPI デバイス、制御メソッド、名前空間の詳細については、「Advanced Configuration and Power Interface Specification」を参照してください。