Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Запрос IOCTL_USB_GET_PORT_CONNECTOR_PROPERTIES управления ввода-вывода отправляется приложением для получения сведений о конкретном порту в USB-концентраторе.
IOCTL_USB_GET_PORT_CONNECTOR_PROPERTIES — это запрос управления ввода-вывода в пользовательском режиме. Этот запрос предназначен для устройства концентратора универсальной последовательной шины (USB) (GUID_DEVINTERFACE_USB_HUB).
Основной код
Входной буфер
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) |