IOCTL_USB_GET_PORT_CONNECTOR_PROPERTIES IOCTL (usbioctl.h)

Запрос IOCTL_USB_GET_PORT_CONNECTOR_PROPERTIES управления ввода-вывода отправляется приложением для получения сведений о конкретном порту в USB-концентраторе.

IOCTL_USB_GET_PORT_CONNECTOR_PROPERTIES — это запрос управления ввода-вывода в пользовательском режиме. Этот запрос предназначен для устройства концентратора универсальной последовательной шины (USB) (GUID_DEVINTERFACE_USB_HUB).

Основной код

IRP_MJ_DEVICE_CONTROL

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

AssociatedIrp.SystemBuffer указывает на структуру, выделенную вызывающим USB_PORT_CONNECTOR_PROPERTIES. Вызывающий объект должен задать элементы структуры следующим образом:

  • Вызывающий объект должен указать номер порта, запрашиваемого в элементе ConnectionIndex. ConnectionIndex должно быть значением в диапазоне от 1 до n, где n является самым высоким номером порта, извлеченным в предыдущем запросе IOCTL_USB_GET_HUB_INFORMATION_EX управления ввода-вывода.
  • Вызывающий объект должен указать элемент CompanionIndex. Для концентратора SuperSpeed вызывающий объект должен задать для элемента CompanionIndex значение 0.

    Вызывающий объект может использовать CompanionIndex для получения номеров портов, связанных с запросом порта. Если с портом связано несколько дополнительных портов, чтобы получить все номера портов, приложение может отправить запрос в цикле. Начните с CompanionIndex установите значение 0 и добавите значение CompanionIndex в каждой итерации, пока запрос не завершится с CompanionPortNumber значение 0 и CompanionHubSymbolicLinkName имеет значение NULL.

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

Элемент Parameters.DeviceIoControl.InputBufferLength указывает размер буфера, выделенного вызывающим объектом, на который указывает AssociatedIrp.SystemBuffer. Дополнительные сведения см. в разделе "Примечания".

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

В выходных данных USB_PORT_CONNECTOR_PROPERTIES, на которые указывает AssociatedIrp.SystemBuffer, заполняется сведениями о физическом соединителе, связанном с портом.

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

Элемент Parameters.DeviceIoControl.OutputBufferLength указывает размер буфера вывода SystemBuffer.

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

Стек USB устанавливает Irp->IoStatus.Status, чтобы STATUS_SUCCESS, если запрос выполнен успешно. В противном случае usb-стек устанавливает состояние соответствующего условия ошибки, например STATUS_INVALID_PARAMETER или STATUS_INSUFFICIENT_RESOURCES. Если концентратор не запущен или не работает, запрос возвращает STATUS_UNSUCCESSFUL.

Замечания

Вызывающий объект должен предоставить буфер, достаточно большой для хранения USB_PORT_CONNECTOR_PROPERTIES структуры и символьного имени концентратора-компаньона, если такой концентратор связан с указанным портом. Чтобы получить размер выделенных буферов, вызывающий объект должен отправить запрос IOCTL_USB_GET_PORT_CONNECTOR_PROPERTIES. В запросе AssociatedIrp.SystemBuffer должен быть структурой, выделенной вызывающим USB_PORT_CONNECTOR_PROPERTIES, и Parameters.DeviceIoControl.InputBufferLength должен быть sizeof(USB_PORT_CONNECTOR_PROPERTIES). После успешного завершения элемент ActualLengthUSB_PORT_CONNECTOR_PROPERTIES указывает фактический размер буфера. Если имя символьной ссылки существует, полученное значение содержит размер строки, в которой хранится имя ссылки.

На основе значения ActualLength вызывающий объект может выделить буфер и отправить запрос IOCTL_USB_GET_PORT_CONNECTOR_PROPERTIES еще раз. После завершения запроса буфер заполняется сведениями о портах, а элемент CompanionHubSymbolicLinkName представляет собой строку Юникода, содержащую имя символьной ссылки концентратора-компаньона.

Требования

Требование Ценность
минимальные поддерживаемые клиентские Windows 8
минимальный поддерживаемый сервер Не поддерживается
заголовка usbioctl.h (include Usbioctl.h)

См. также

IOCTL_USB_GET_PORT_CONNECTOR_PROPERTIES

USB_HUB_INFORMATION_EX

USB_PORT_CONNECTOR_PROPERTIES