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 |