Поделиться через


IOCTL_ACPI_GET_DEVICE_INFORMATION IOCTL (acpiioct.h)

Драйвер для устройства может использовать запрос IOCTL_ACPI_GET_DEVICE_INFORMATION управления устройствами для получения подробных сведений об идентификации устройства. Обычно это IOCTL используется драйверами, поддерживающими несколько версий или редакций устройства, и необходимо изучить компоненты, составляющие строку идентификатора HW устройства, чтобы определить точное устройство. Драйвер должен вызывать IoBuildDeviceIoControlRequest и передавать следующие входные и выходные параметры для сборки этого запроса.

Основной код

IRP_MJ_DEVICE_CONTROL

Входной буфер

Задайте входные параметры IoBuildDeviceIoControlReque st следующим образом:

  • IoControlCode имеет значение IOCTL_ACPI_GET_DEVICE_INFORMATION.
  • DeviceObject имеет указатель на объект физического устройства (PDO) устройства.
  • InputBuffer имеет указатель на структуру входного буфера, которая зависит от типа входных аргументов, передаваемых методу управления. Дополнительные сведения о типе входных аргументов, поддерживаемых этим IOCTL, см. в разделе "Примечания" далее в этом разделе.
  • InputBufferLength имеет размер в байтах входного буфера, предоставленного InputBuffer.
  • OutputBufferLength предоставляет размер в байтах выходного буфера, предоставленного OutputBuffer.
  • InternalDeviceIoControl имеет значение FALSE.
  • событие имеет значение NULL.

Длина входного буфера

InputBufferLength имеет размер в байтах входного буфера, предоставленного InputBuffer.

Выходной буфер

Задайте параметры вывода IoBuildDeviceIoControlRequest следующим образом:

  • OutputBuffer предоставляет указатель на структуру ACPI_DEVICE_INFORMATION_OUTPUT_BUFFER, содержащую выходные аргументы из метода управления.
  • IoStatusBlock имеет IO_STATUS_BLOCK структуру.

Длина выходного буфера

OutputBufferLength предоставляет размер в байтах выходного буфера, предоставленного OutputBuffer.

Блок состояния

Если запрос выполнен успешно, IoStatusBlock—>состояние имеет значение STATUS_SUCCESS; в противном случае элемент состояния имеет код ошибки. Если выходной буфер недостаточно велик, чтобы содержать заголовок выходного буфера, то для элемента состояния задано значение STATUS_BUFFER_TOO_SMALL. Если выходной буфер достаточно велик, чтобы содержать заголовок выходного буфера, но не достаточно велик, чтобы содержать все выходные аргументы из метода управления, элемент Status имеет значение STATUS_BUFFER_OVERFLOW, а OutputBuffer—>Длина задана для требуемой длины выходного буфера.

Если запрос выполнен успешно, IoStatusBlock— элементсведений> задано число байтов, возвращаемых в выходном буфере; в противном случае элемент Information имеет значение нулю.

Замечания

Драйвер устройства может использовать IOCTL_ACPI_GET_DEVICE_INFORMATION для получения подробных сведений об идентификации устройства. Этот IOCTL обычно используется с драйверами, поддерживающими несколько аппаратных версий или редакций устройства, и необходимо проверить компоненты, составляющие строку идентификатора HW устройства, чтобы определить точное устройство. Например, драйвер может поддерживать различные редакции одного устройства, в которых некоторые аспекты интерфейса программирования или поведение устройства отличается. Драйвер может определить, какая редакция выполняется.

Выходные аргументы запроса возвращаются в структуре ACPI_DEVICE_INFORMATION_OUTPUT_BUFFER переменной длины, предоставленной указателем OutBuffer. ACPI_DEVICE_INFORMATION_OUTPUT_BUFFER включает массив массивов переменной длины, каждый из которых возвращает выходной аргумент, представляющий строку идентификатора подсистемы, строку идентификатора поставщика и строку идентификатора экземпляра соответственно.

IOCTL_ACPI_GET_DEVICE_INFORMATION можно использовать только в IRQL <= DISPATCH_LEVEL.

Требования

Требование Ценность
минимальные поддерживаемые клиентские Windows 8 и более поздних версий Windows.
заголовка acpiioct.h (include Acpiioct.h)

См. также

ACPI_DEVICE_INFORMATION_OUTPUT_BUFFER