次の方法で共有


IOCTL_ACPI_EVAL_METHOD_EX IOCTL (acpiioct.h)

デバイスのドライバーは、IOCTL_ACPI_EVAL_METHOD_EXデバイス制御要求を使用して、デバイスの名前空間内の子デバイスでサポートされている ACPI 制御メソッドを同期的に評価できます。 ドライバーは IoBuildDeviceIoControlRequest を呼び出し、次の入力パラメーターと出力パラメーターを渡してこの要求をビルドする必要があります。

メジャー コード

IRP_MJ_DEVICE_CONTROL

[入力バッファー]

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_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_METHODIOCTL_ACPI_ASYNC_EVAL_METHOD_EX」を参照してください。

IOCTL_ACPI_EVAL_METHOD_EXは IRQL < DISPATCH_LEVELでのみ使用できます。

要件

要件
サポートされている最小のクライアント Windows Vista 以降のバージョンの Windows。
Header acpiioct.h (Acpiioct.h を含む)

こちらもご覧ください

ACPI_EVAL_INPUT_BUFFER_COMPLEX_EX

ACPI_EVAL_INPUT_BUFFER_EX

ACPI_EVAL_INPUT_BUFFER_SIMPLE_INTEGER_EX

ACPI_EVAL_INPUT_BUFFER_SIMPLE_STRING_EX

ACPI_EVAL_OUTPUT_BUFFER

IOCTL_ACPI_ASYNC_EVAL_METHOD

IOCTL_ACPI_ASYNC_EVAL_METHOD_EX

IOCTL_ACPI_EVAL_METHOD