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.Usb200 элемент USB_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 (include Usbioctl.h) |