IOCTL_ACPI_GET_DEVICE_INFORMATION IOCTL (acpiioct.h)

Драйвер для устройства может использовать IOCTL_ACPI_GET_DEVICE_INFORMATION запрос на управление устройством для получения детализированных идентификационных сведений об устройстве. Этот IOCTL обычно используется драйверами, поддерживающими несколько версий или редакций устройства, и необходимо изучить компоненты, составляющие строку идентификатора HW устройства, чтобы определить точное устройство. Драйвер должен вызвать 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> устанавливается количество байтов, возвращаемых в выходном буфере; в противном случае элементу Information присваивается значение 0.

Комментарии

Драйвер для устройства может использовать 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 (включая Acpiioct.h)

См. также раздел

ACPI_DEVICE_INFORMATION_OUTPUT_BUFFER