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 输出参数:

输出缓冲区长度

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

状态块

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

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

备注

设备的驱动程序可以使用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。
Header 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