IOCTL_USB_GET_NODE_CONNECTION_INFORMATION_EX_V2 IOCTL (usbioctl.h)
Элемент управления IOCTL_USB_GET_NODE_CONNECTION_INFORMATION_EX_V2 ввода-вывода отправляется приложением для получения сведений о протоколах, поддерживаемых определенным USB-портом в концентраторе. Запрос также получает возможность скорости порта.
IOCTL_USB_GET_NODE_CONNECTION_INFORMATION_EX_V2 — это запрос управления вводом-выводом в пользовательском режиме. Этот запрос предназначен для устройства концентратора Универсальной последовательной шины (USB) (GUID_DEVINTERFACE_USB_HUB).
Основной код
Входной буфер
AssociatedIrp.SystemBuffer указывает на структуру, выделенную вызывающим объектом USB_NODE_CONNECTION_INFORMATION_EX_V2 .
При входе вызывающий объект должен задать элементы структуры следующим образом:
- Вызывающий объект должен указать номер порта в элементе ConnectionIndex . ConnectionIndex должно быть значением в диапазоне от 1 до n, где n — это самый высокий номер порта, полученный в предыдущем запросе IOCTL_USB_GET_HUB_INFORMATION_EX управления вводом-выводом.
- Вызывающий объект должен установить флаг протокола в элементе SupportedUsbProtocols (см . USB_PROTOCOLS). В Windows 8 значение SupportedUsbProtocols.Usb300 должно иметь значение 1. В противном случае запрос завершается ошибкой с кодом STATUS_INVALID_PARAMETER.
- Вызывающий объект должен задать для элемента Length размер буфера, выделенного вызывающим объектом, в байтах, на который указывает AssociatedIrp.SystemBuffer. Размер буфера должен быть равным
sizeof (USB_NODE_CONNECTION_INFORMATION_EX_V2)
.
Длина входного буфера
Элемент Parameters.DeviceIoControl.InputBufferLength указывает размер буфера, выделенного вызывающим объектом, в байтах sizeof(USB_NODE_CONNECTION_INFORMATION_EX_V2)
, размер которого равен .
Выходной буфер
В выходных данных структура USB_NODE_CONNECTION_INFORMATION_EX_V2 , на которую указывает AssociatedIrp.SystemBuffer , заполняется сведениями о подключенном устройстве.
Длина выходного буфера
Элемент Parameters.DeviceIoControl.OutputBufferLength указывает размер выходного буфера SystemBuffer в байтах.
Блок состояния
Стек USB задает для параметра Irp-IoStatus.Status> значение STATUS_SUCCESS, если запрос выполнен успешно. В противном случае стек usb-драйвера устанавливает состояние соответствующего состояния ошибки, например STATUS_INVALID_PARAMETER или STATUS_INSUFFICIENT_RESOURCES.
Комментарии
Запрос IOCTL_USB_GET_NODE_CONNECTION_INFORMATION_EX_V2 запрашивает концентратор указанного порта для получения сведений о протоколах, поддерживаемых портом, и о скорости работы, если устройство подключено к порту.
Если запрос завершается успешно, элемент SupportedUsbProtocols.Usb200USB_NODE_CONNECTION_INFORMATION_EX_V2 указывает протоколы, поддерживаемые портом. Например, если порт поддерживает протокол сигнализации, определенный спецификацией USB 2.0, то параметр SupportedUsbProtocols.Usb200 имеет значение 1.
Обратите внимание, что для параметра SupportedUsbProtocols.Usb110 всегда задано значение 1 для высокоскоростных и полноскоростных концентраторов. Это связано с тем, что концентратор с высокой скоростью поддерживает протокол USB 1.1 через разделенные транзакции и переводчики транзакций. Для supportedUsbProtocols.Usb110 никогда не устанавливается значение 1 для порта USB 3.0.
Кроме того, запрос также определяет, могут ли порт и подключенное устройство работать в SuperSpeed. Если это так, для элемента Flags.DeviceIsSuperSpeedCapableOrHigher задано значение 1. Если устройство, подключенное к порту, в настоящее время работает в SuperSpeed, то deviceIsOperatingAtSuperSpeedOrHigher имеет значение 1.
Требования
Требование | Значение |
---|---|
Минимальная версия клиента | Windows 8 |
Минимальная версия сервера | Ни одна версия не поддерживается |
Верхняя часть | usbioctl.h (включая Usbioctl.h) |