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 указывает размер этого буфера. После успешного завершения элемент HubName элемента USB_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 |