IOCTL_ACPI_ASYNC_EVAL_METHOD_EX IOCTL (acpiioct.h)

设备的驱动程序可以使用IOCTL_ACPI_ASYNC_EVAL_METHOD_EX设备控制请求异步评估设备的子设备支持的 ACPI 控制方法。 驱动程序应调用 IoBuildDeviceIoControlRequest 并传递以下输入和输出参数来生成此请求。

主要代码

IRP_MJ_DEVICE_CONTROL

输入缓冲区

按如下所示设置 IoBuildDeviceIoControlRequest 输入参数:

  • IoControlCode 设置为 IOCTL_ACPI_ASYNC_EVAL_METHOD_EX。
  • DeviceObject 设置为指向物理设备对象的指针, (设备的 PDO) 。
  • InputBuffer 设置为指向输入缓冲区结构的指针,该结构取决于要传递给控件方法的输入参数的类型。 有关此 IOCTL 支持的类型输入参数的详细信息,请参阅本主题后面的“备注”部分。
  • InputBufferLength 设置为 InputBuffer 提供的输入缓冲区的大小(以字节为单位)。
  • OutputBufferLength 提供 OutputBuffer 提供的输出缓冲区的大小(以字节为单位)。
  • InternalDeviceIoControl 设置为 FALSE
  • 事件 设置为 NULL

输入缓冲区长度

InputBufferLength 设置为 InputBuffer 提供的输入缓冲区的大小(以字节为单位)。

输出缓冲区

按如下所示设置 IoBuildDeviceIoControlRequest 输出参数:

输出缓冲区长度

OutputBufferLength 提供 OutputBuffer 提供的输出缓冲区的大小(以字节为单位)。

状态块

如果请求成功,IoStatusBlock-Status> 设置为 STATUS_SUCCESS;否则,Status 成员设置为错误代码。 如果输出缓冲区的大小不足以包含输出缓冲区标头, 则 Status 成员将设置为 STATUS_BUFFER_TOO_SMALL。 如果输出缓冲区足够大,足以包含输出缓冲区标头,但大小不足以包含控制方法中的所有输出参数,则 Status 成员设置为 STATUS_BUFFER_OVERFLOW,OutputBuffer-Length > 设置为输出缓冲区的所需长度。

如果请求成功,IoStatusBlock-Information> 成员将设置为输出缓冲区中返回的字节数;否则,信息成员设置为零。

注解

设备的驱动程序可以使用 IOCTL_ACPI_ASYNC_EVAL_METHOD_EX 异步评估设备命名空间中子对象支持的控件方法。 此请求提供的控制方法的路径和名称必须是 ACPI 命名空间中方法的完全限定路径和名称,或者相对于发送请求的设备的方法的路径和名称。 例如,假设名为“ABCD”的设备是 ACPI 命名空间根的直接子级,“ABCD”设备支持名为“CHLD”的子设备,并且“CHLD”设备支持名为“_FOO”的方法。 在这种情况下,为了评估“_FOO”方法,驱动程序将评估请求发送到“ABCD”设备,并提供路径和名称“\ABCD”。CHLD._FOO“,即 ACPI 命名空间中的完全限定路径和名称,或路径和名称”CHLD._FOO“,即相对于 ACPI 命名空间中”ABCD“设备的路径和名称。

IOCTL_ACPI_ASYNC_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_METHODIOCTL_ACPI_EVAL_METHOD_EX同步评估 ACPI 控制方法

IOCTL_ACPI_ASYNC_EVAL_METHOD_EX只能在 IRQL <= DISPATCH_LEVEL 中使用。

要求

要求
最低受支持的客户端 Windows Vista 和更高版本的 Windows。
标头 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

ACPI_METHOD_ARGUMENT

IOCTL_ACPI_EVAL_METHOD

IOCTL_ACPI_EVAL_METHOD_EX