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).
Основной код
Входной буфер
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 (включая Usbioctl.h) |