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.InputBufferLengthsizeof(USB_PORT_CONNECTOR_PROPERTIES). После успешного завершения элемент ActualLengthUSB_PORT_CONNECTOR_PROPERTIES указывает фактический размер буфера. Если существует символическое имя ссылки, полученное значение включает размер строки, в которую хранится имя ссылки.

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

Требования

Требование Значение
Минимальная версия клиента Windows 8
Минимальная версия сервера Ни одна версия не поддерживается
Верхняя часть usbioctl.h (включая Usbioctl.h)

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

IOCTL_USB_GET_PORT_CONNECTOR_PROPERTIES

USB_HUB_INFORMATION_EX

USB_PORT_CONNECTOR_PROPERTIES