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


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

См. также

USB_HUB_NAME