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


IOCTL_ACPI_ENUM_CHILDREN IOCTL (acpiioct.h)

Запрос на управление устройствами IOCTL_ACPI_ENUM_CHILDREN можно использовать для перечисления пути и имени устройств или именованных дочерних объектов в пространстве имен ACPI устройства, на которое отправляется этот запрос. Драйвер должен вызывать IoBuildDeviceIoControlRequest и передавать следующие входные и выходные параметры для сборки этого запроса.

Основной код

IRP_MJ_DEVICE_CONTROL

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

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

  • IoControlCode имеет значение IOCTL_ACPI_ENUM_CHILDREN.
  • DeviceObject имеет указатель на объект физического устройства (PDO) устройства.
  • InputBuffer имеет указатель на структуру ACPI_ENUM_CHILDREN_INPUT_BUFFER переменной длины.
  • InputBufferLength имеет размер в байтах входного буфера, предоставленного InputBuffer.
  • OutputBufferLength предоставляет размер в байтах выходного буфера, предоставленного OutputBuffer.
  • InternalDeviceIoControl имеет значение FALSE.
  • событие имеет указатель на объект события, выделенный вызывающим и инициализированным.

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

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

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

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

  • OutputBuffer предоставляет указатель на структуру ACPI_ENUM_CHILDREN_OUTPUT_BUFFER переменной длины, в которой драйвер ACPI возвращает путь и имя перечисленных дочерних устройств.
  • IoStatusBlock имеет IO_STATUS_BLOCK структуру.

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

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

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

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

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

Замечания

IOCTL_ACPI_ENUM_CHILDREN возвращает структуру переменной длины ACPI_ENUM_CHILDREN_OUTPUT_BUFFER, содержащую массив структур переменной длины ACPI_ENUM_CHILD, каждый из которых возвращает полный путь и имя объекта в пространстве имен ACPI устройства, которому был отправлен запрос. Объекты, перечисляемые этим запросом, зависят от параметра флагов члена предоставленной входной структуры ACPI_ENUM_CHILDREN_INPUT_BUFFER следующим образом:

Если выходной буфер, выделенный драйвером, недостаточно велик, чтобы вернуть все запрошенные дочерние имена, драйвер ACPI не возвращает имена дочерних элементов и задает элемент status элемента IO_STATUS_BLOCK запроса на STATUS_BUFFER_OVERFLOW. В этом случае, если размер в байтах выходного буфера составляет по крайней мере размер(ACPI_ENUM_CHILDREN_OUTPUT_BUFFER_SIGNATURE), драйвер ACPI также задает NumberOfChildren размеру в байтах, который требуется для получения запрошенных путей и имен.

Драйвер обычно использует последовательность двух IOCTL_ACPI_ENUM_CHILDREN запросов для перечисления дочерних объектов, интересующих вас. Драйвер отправляет первый запрос, чтобы получить размер выходного буфера, который требуется для хранения пути и имени всех запрошенных объектов. Драйвер отправляет второй запрос, чтобы вернуть путь и имя объектов в выходном буфере.

Дополнительные сведения о перечислении дочерних устройств устройства см. в перечислении дочерних устройств и методов управления.

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

Требования

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

См. также

ACPI_ENUM_CHILD

ACPI_ENUM_CHILDREN_INPUT_BUFFER

ACPI_ENUM_CHILDREN_OUTPUT_BUFFER