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


структура 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 указывает номер порта на другом концентраторе.

Примечание Для корневого концентратора контроллера xHCI общий порт может находиться в одном концентраторе.
 

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

IOCTL_USB_GET_PORT_CONNECTOR_PROPERTIES

USB_HUB_INFORMATION_EX

USB_PORT_CONNECTOR_PROPERTIES

USB_PORT_PROPERTIES