IOCTL_ACPI_EVAL_METHOD_EX IOCTL (acpiioct.h)
デバイスのドライバーは、IOCTL_ACPI_EVAL_METHOD_EXデバイス制御要求を使用して、デバイスの名前空間の子デバイスでサポートされている ACPI 制御メソッドを同期的に評価できます。 ドライバーは IoBuildDeviceIoControlRequest 呼び出し、次の入力パラメーターと出力パラメーターを渡してこの要求をビルドする必要があります。
メジャー コード
入力バッファー
IoBuildDeviceIoControlRequest 入力パラメーターを次のように設定します。
- IoControlCode は IOCTL_ACPI_EVAL_METHOD_EX に設定されます。
- DeviceObject は、デバイスの物理デバイス オブジェクト (PDO) へのポインターに設定されます。
- InputBuffer は、制御メソッドに渡される入力引数の型に依存する入力バッファー構造体へのポインターに設定されます。 この IOCTL でサポートされる型入力引数の詳細については、このトピックで後述する「解説」セクションを参照してください。
- InputBufferLength は、InputBuffer によって提供される入力バッファーのサイズ (バイト単位)設定されます。
- OutputBufferLength 、OutputBuffer によって提供される出力バッファーのサイズバイト単位で提供されます。
- InternalDeviceIoControl は FALSE に設定されます。
- イベント は、呼び出し元によって割り当てられ、初期化されたイベント オブジェクトへのポインターに設定されます。
入力バッファーの長さ
InputBufferLength は、InputBuffer によって提供される入力バッファーのサイズ (バイト単位)設定されます。
出力バッファー
IoBuildDeviceIoControlRequest 出力パラメーターを次のように設定します。
- OutputBuffer は、制御メソッドからの出力引数を含む ACPI_EVAL_OUTPUT_BUFFER 構造体へのポインターを提供します。
- IoStatusBlock は、IO_STATUS_BLOCK 構造体へのポインターに設定されます。
出力バッファーの長さ
OutputBufferLength 、OutputBuffer によって提供される出力バッファーのサイズバイト単位で提供されます。
状態ブロック
要求が成功した場合は、IoStatusBlock ->Status が STATUS_SUCCESS に設定。それ以外の場合、Status メンバーはエラー コードに設定されます。 出力バッファーが出力バッファー ヘッダーを格納するのに十分な大きさでない場合、Status メンバーは STATUS_BUFFER_TOO_SMALL に設定されます。 出力バッファーが出力バッファー ヘッダーを格納するのに十分な大きさであるが、制御メソッドのすべての出力引数を格納するのに十分な大きさでない場合は、Status メンバーが STATUS_BUFFER_OVERFLOW に設定 され、OutputBuffer->Length が出力バッファーの必要な長さに設定されます。
要求が成功した場合、IoStatusBlock->Information メンバーは、出力バッファーで返されるバイト数に設定されます。それ以外の場合、Information メンバーは 0 に設定されます。
備考
デバイスのドライバーは、IOCTL_ACPI_EVAL_METHOD_EXを使用して、デバイスの名前空間内の子オブジェクトでサポートされているコントロール メソッドを同期的に評価できます。 この要求によって提供される制御メソッドのパスと名前は、ACPI 名前空間内のメソッドの完全修飾パスと名前、または要求の送信先デバイスを基準としたメソッドのパスと名前のいずれかである必要があります。 たとえば、"ABCD" という名前のデバイスが ACPI 名前空間のルートの直下の子であり、"ABCD" デバイスが 'CHLD' という名前の子デバイスをサポートしていること、および 'CHLD' デバイスが '_FOO' という名前のメソッドをサポートしているとします。 この場合、"_FOO" メソッドを評価するために、ドライバーは "ABCD" デバイスに評価要求を送信し、パスと名前 '\ABCD" のいずれかを指定します。CHLD._FOO、ACPI 名前空間の完全修飾パスと名前、またはパスと名前 'CHLD._FOO' です。これは、ACPI 名前空間内の 'ABCD' デバイスに対する相対パスと名前です。
IOCTL_ACPI_EVAL_METHOD_EXでは、次の種類の入力バッファー構造体がサポートされています。
ACPI_EVAL_INPUT_BUFFER_SIMPLE_INTEGER_EX
ACPI_EVAL_INPUT_BUFFER_SIMPLE_STRING_EX
ACPI_EVAL_INPUT_BUFFER_COMPLEX_EX
制御メソッドの出力引数は、OutBuffer ポインターによって提供される可変長 ACPI_EVAL_OUTPUT_BUFFER 構造体で返されます。 ACPI_EVAL_OUTPUT_BUFFERには可変長 ACPI_METHOD_ARGUMENT 構造体の配列が含まれており、それぞれが出力引数を返します。
制御メソッドを同期的に評価する方法の詳細については、「ACPI 制御メソッドの同期的の評価」を参照してください。
ドライバーは、IOCTL_ACPI_EVAL_METHOD 要求を使用して、デバイスの直接の子オブジェクトである制御メソッドを同期的に評価することもできます。
Windows Server 2008 および Windows Vista 以降で ACPI 制御メソッドを非同期的に評価する方法については、「IOCTL_ACPI_ASYNC_EVAL_METHOD と IOCTL_ACPI_ASYNC_EVAL_METHOD_EX」を参照してください。
IOCTL_ACPI_EVAL_METHOD_EXは IRQL < DISPATCH_LEVEL でのみ使用できます。
必要条件
要件 | 価値 |
---|---|
サポートされる最小クライアント | Windows Vista 以降のバージョンの Windows。 |
ヘッダー | acpiioct.h (Acpiioct.h を含む) |
関連項目
ACPI_EVAL_INPUT_BUFFER_COMPLEX_EX
ACPI_EVAL_INPUT_BUFFER_SIMPLE_INTEGER_EX
ACPI_EVAL_INPUT_BUFFER_SIMPLE_STRING_EX