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).

Основной код

IRP_MJ_DEVICE_CONTROL

Входной буфер

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)