IOCTL_ACPI_GET_DEVICE_INFORMATION IOCTL (acpiioct.h)

设备的驱动程序可以使用IOCTL_ACPI_GET_DEVICE_INFORMATION设备控制请求来获取有关其设备的精细标识信息。 此 IOCTL 通常由支持设备多个版本或修订版的驱动程序使用,并且需要检查构成设备的 HW ID 字符串的组件部件,以识别确切的设备。 驱动程序应调用 IoBuildDeviceIoControlRequest 并传递以下输入和输出参数来生成此请求。

主要代码

IRP_MJ_DEVICE_CONTROL

输入缓冲区

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

  • IoControlCode 设置为 IOCTL_ACPI_GET_DEVICE_INFORMATION。
  • 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_GET_DEVICE_INFORMATION来获取有关其设备的精细标识信息。 此 IOCTL 通常用于支持设备的多个硬件版本或修订版本的驱动程序,并且需要检查构成设备的 HW ID 字符串的组件部件,以识别确切的设备。 例如,驱动程序可能支持同一设备的不同修订,其中编程接口的某些方面或设备的行为是不同的。 驱动程序可以确切地标识其运行的修订。

请求的输出参数在 OutBuffer 指针提供的可变长度ACPI_DEVICE_INFORMATION_OUTPUT_BUFFER结构中返回。 ACPI_DEVICE_INFORMATION_OUTPUT_BUFFER包含一个长度可变的数组,其中每个数组返回一个分别表示子系统 ID 字符串、供应商 ID 字符串和实例 ID 字符串的输出参数。

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

要求

要求
最低受支持的客户端 Windows 8 及更高版本的 Windows。
标头 acpiioct.h (包括 Acpiioct.h)

另请参阅

ACPI_DEVICE_INFORMATION_OUTPUT_BUFFER