структура USB_PORT_CONNECTOR_PROPERTIES (usbioctl.h)
Структура USB_PORT_CONNECTOR_PROPERTIES используется с запросом управления IOCTL_USB_GET_PORT_CONNECTOR_PROPERTIES ввода-вывода для получения сведений о порту в определенном концентраторе SuperSpeed.
Синтаксис
typedef struct _USB_PORT_CONNECTOR_PROPERTIES {
ULONG ConnectionIndex;
ULONG ActualLength;
USB_PORT_PROPERTIES UsbPortProperties;
USHORT CompanionIndex;
USHORT CompanionPortNumber;
WCHAR CompanionHubSymbolicLinkName[1];
} USB_PORT_CONNECTOR_PROPERTIES, *PUSB_PORT_CONNECTOR_PROPERTIES;
Члены
ConnectionIndex
Номер порта, запрашиваемый в запросе. ConnectionIndex указывается вызывающим оператором. Если в концентраторе SuperSpeed есть n портов, порты нумеруются от 1 до n. Чтобы получить количество портов, вызывающий объект сначала отправляет запрос управления IOCTL_USB_GET_HUB_INFORMATION_EX ввода-вывода. Запрос получает самый высокий номер порта в концентраторе.
ActualLength
Количество байтов, необходимых для хранения всей USB_PORT_CONNECTOR_PROPERTIES структуры, включая строку, содержащую символьную ссылку для концентратора-компаньона. Эта строка хранится в элементе CompanionHubSymbolicLinkName. Значение ActualLength возвращается запросом IOCTL_USB_GET_PORT_CONNECTOR_PROPERTIES и используется вызывающим объектом для выделения буфера для хранения полученных сведений. Дополнительные сведения см. в разделе IOCTL_USB_GET_PORT_CONNECTOR_PROPERTIES.
UsbPortProperties
Свойства порта. По завершении запроса IOCTL_USB_GET_PORT_CONNECTOR_PROPERTIESUsbPortProperties содержит побитовую OR одного или нескольких флагов, указывающих свойства и возможности порта. Флаги определены в USB_PORT_PROPERTIES.
CompanionIndex
Индекс порта компаньона, связанного с запросом порта (задается ConnectionIndex). Если есть порты-компаньоны n, эти порты индексируются от 0 до n–1.
Если порт сопоставляется с несколькими дополнительными портами, CompanionIndex увеличивается по нескольким запросам для перечисления всех портов-компаньонов.
Для концентраторов SuperSpeed и контроллеров xHCI CompanionIndex всегда равно 0. Дополнительные сведения см. в разделе "Примечания".
CompanionPortNumber
Номер порта порта компаньона, который предоставляется CompanionIndex. Если запрашиваемый порт использует USB-соединитель с портом другого концентратора, CompanionPortNumber указывает номер порта на другом концентраторе.
CompanionHubSymbolicLinkName[1]
Строка Юникода, содержащая символьную ссылку концентратора-компаньона, который использует USB-соединитель. Если концентратор компаньона существует, CompanionPortNumber ненулевое значение. В противном случае CompanionHubSymbolicLinkName [0] null.
Замечания
Концентратор SuperSpeed 3.0 содержит две независимые реализации концентратора. Один — для устройств USB 2.0, а реализация концентратора аналогична существующим центрам 2.0. Другой концентратор предназначен только для устройств SuperSpeed. Так как сигнал usb 2.0 и 3.0 шины являются электрически независимыми, оба этих концентратора работают одновременно. Таким образом, когда концентратор SuperSpeed подключен к узлу, Windows перечисляет два концентратора независимо; один концентратор связан с портом USB 2.0 и другим концентратором с портом USB 3.0. Каждый концентратор имеет свои подчиненные и вышестоящей порты. Физические соединители USB используются между портами, связанными с этими двумя реализациями концентратора.
Аналогичным образом контроллер xHCI должен иметь возможность обрабатывать superSpeed, высокоскоростные, полноскоростные и низкоскоростные устройства. Спецификация USB 3.0 требует, чтобы контроллер xHCI содержал два независимых единиц выполнения для скорости шины USB 3.0 и USB 2.0. Единица выполнения USB 3.0 обрабатывает трафик SuperSpeed на шине. Единица выполнения USB 2.0 должна обрабатывать низкий, полный и высокоскоростной трафик. Это требование можно выполнить различными способами. Например, в одной реализации единица выполнения USB 2.0 может иметь либо нижестоящей единицей выполнения USB 1.1, либо подчиненным концентратором USB 2.0. Другая единица выполнения обрабатывает трафик SuperSpeed на шине. Например, в одной реализации контроллер xHCI может иметь подчиненный концентратор USB 2.0 (вместо контроллера узла USB 2.0) с переводчиком транзакций для обработки полноскоростного и низкоскоростного трафика. Этот подчиненный концентратор использует соединители с портами корневого концентратора SuperSpeed.
В случаях, когда usb-соединители являются общими, порт, запрашиваемый через запрос управления IOCTL_USB_GET_PORT_CONNECTOR_PROPERTIES ввода-вывода, указывается ConnectionIndex, а порт, который использует соединитель, называется портом компаньона. По завершении запроса CompanionIndex, CompanionPortNumberи CompanionHubSymbolicLinkName членов USB_PORT_CONNECTOR_PROPERTIES можно использовать для определения маршрутизации портов в этих случаях.
Если несколько портов-компаньонов связаны с запрашиваемым портом, приложение может получить сведения обо всех портах-компаньонах, отправив запрос управления IOCTL_USB_GET_PORT_CONNECTOR_PROPERTIES ввода-вывода в цикле и добавив значение CompanionIndex в каждой итерации. Когда все порты были перечислены и нет порта, указанного в CompanionIndex, запрос успешно завершается, CompanionPortNumber имеет значение 0, а CompanionHubSymbolicLinkName имеет значение NULL.
Чтобы получить сведения о скорости работы устройства, подключенного к конкретному порту, приложение может отправить запрос на управление IOCTL_USB_GET_NODE_CONNECTION_INFORMATION_EX_V2 ввода-вывода.
Требования
Требование | Ценность |
---|---|
минимальные поддерживаемые клиентские | Windows 8 |
минимальный поддерживаемый сервер | Не поддерживается |
заголовка | usbioctl.h (include Usbioctl.h) |
См. также
IOCTL_USB_GET_NODE_CONNECTION_INFORMATION_EX_V2