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> 成员将设置为输出缓冲区中返回的字节数;否则,信息成员设置为零。
注解
设备的驱动程序可以使用 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