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


IOCTL_INTERNAL_USB_GET_CONTROLLER_NAME IOCTL (usbioctl.h)

Запрос IOCTL_INTERNAL_USB_GET_CONTROLLER_NAME ввода-вывода запрашивает у драйвера шины имя устройства контроллера узла USB.

IOCTL_INTERNAL_USB_GET_CONTROLLER_NAME — это запрос на управление вводом-выводом в режиме ядра. Этот запрос предназначен для PDO концентратора USB. Этот запрос должен быть отправлен в IRQL PASSIVE_LEVEL.

Основной код

IRP_MJ_INTERNAL_DEVICE_CONTROL

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

Parameters.Others.Argument1 должен быть указателем на структуру USB_HUB_NAME , которая будет заполнена именем контроллера узла.

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

Parameters.Others.Argument2 должен быть ULONG, указывающим длину буфера (в байтах) в Parameters.Others.Argument1.

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

Драйвер шины заполняет буфер, на который указывает Parameters.Others.Argument1 , именем устройства контроллера узла.

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

Он будет заполнен только до длины, указанной в Parameters.Others.Argument2.

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

Драйвер шины или порта устанавливает для параметра Irp-IoStatus.Status> значение STATUS_SUCCESS или соответствующее состояние ошибки.

Комментарии

Вызывающий объект должен предоставить буфер, который достаточно велик для хранения структуры USB_HUB_NAME . Значение Parameters.Others.Argument2 указывает размер этого буфера. После успешного завершения элемент HubNameUSB_HUB_NAME содержит имя контроллера, а элемент ActualLength указывает длину строки имени контроллера. Обратите внимание, что ActualLength не указывает размер всей структуры USB_HUB_NAME . Если буфер, предоставленный в Parameters.Others.Argument1 , недостаточно велик для хранения строки, значение HubName может показать усеченную строку.

Чтобы получить размер буфера, необходимого для хранения строки, отправьте запрос дважды. В первом запросе укажите буфер не менее sizeof(USB_HUB_NAME) байтов. В противном случае ActualLength не указывает правильную длину строки, и запрос завершается сбоем с STATUS_BUFFER_TOO_SMALL.

После успешного завершения первого запроса выделите буфер байтов ActualLength + sizeof(ULONG) и отправьте запрос еще раз. После завершения запроса HubName указывает всю строку имени контроллера.

Требования

Требование Значение
Заголовок usbioctl.h

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

USB_HUB_NAME