次の方法で共有


IOCTL_ACPI_EVAL_METHOD IOCTL (acpiioct.h)

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

メジャー コード

IRP_MJ_DEVICE_CONTROL

入力バッファー

IoBuildDeviceIoControlRequest 入力パラメーターを次のように設定します。

  • IoControlCode は IOCTL_ACPI_EVAL_METHOD に設定されます。
  • 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を使用して、デバイスがサポートする制御メソッドを同期的に評価できます。 たとえば、デバイスが ACPI 名前空間の "ABCD" という名前で、"ABCD" デバイスが '_FOO' という名前のメソッドをサポートしている場合、この IOCTL を使用して、要求を 'ABCD' デバイスに送信し、制御メソッド名 '_FOO' を指定することで、制御メソッド '_FOO' を評価できます。

IOCTL_ACPI_EVAL_METHODでは、次の種類の入力バッファー構造体がサポートされています。

ACPI_EVAL_INPUT_BUFFER

ACPI_EVAL_INPUT_BUFFER_SIMPLE_INTEGER

ACPI_EVAL_INPUT_BUFFER_SIMPLE_STRING

ACPI_EVAL_INPUT_BUFFER_COMPLEX

制御メソッドの出力引数は、OutBuffer ポインターによって提供される可変長 ACPI_EVAL_OUTPUT_BUFFER 構造体で返されます。 ACPI_EVAL_OUTPUT_BUFFERには可変長 ACPI_METHOD_ARGUMENT 構造体の配列が含まれており、それぞれが出力引数を返します。

制御メソッドを同期的に評価する方法の詳細については、「ACPI 制御メソッドの同期的の評価」を参照してください。

Windows Server 2008 および Windows Vista 以降では、ドライバーは IOCTL_ACPI_EVAL_METHOD_EX 要求を使用して、デバイスの直接の子オブジェクトではない制御メソッドを同期的に評価することもできます。

Windows Server 2008 および Windows Vista 以降で ACPI 制御メソッドを非同期的に評価する方法については、「IOCTL_ACPI_ASYNC_EVAL_METHODIOCTL_ACPI_ASYNC_EVAL_METHOD_EX」を参照してください。

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

必要条件

要件 価値
サポートされる最小クライアント Windows 2000 以降のバージョンの Windows。
ヘッダー acpiioct.h (Acpiioct.h を含む)

関連項目

ACPI_EVAL_INPUT_BUFFER

ACPI_EVAL_INPUT_BUFFER_COMPLEX

ACPI_EVAL_INPUT_BUFFER_SIMPLE_INTEGER

ACPI_EVAL_INPUT_BUFFER_SIMPLE_STRING

ACPI_EVAL_OUTPUT_BUFFER

ACPI_METHOD_ARGUMENT

IOCTL_ACPI_ASYNC_EVAL_METHOD

IOCTL_ACPI_ASYNC_EVAL_METHOD_EX

IOCTL_ACPI_EVAL_METHOD_EX