IOCTL_USB_GET_NODE_CONNECTION_INFORMATION_EX_V2 - NtDoc

Native API online documentation, based on the System Informer (formerly Process Hacker) phnt headers
// usbioctl.h

// CTL_CODE(0x0022, 0x117, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define IOCTL_USB_GET_NODE_CONNECTION_INFORMATION_EX_V2 0x0022045C
View the official Windows Driver Kit DDI reference

NtDoc

No description available.

Windows Driver Kit DDI reference (ni-usbioctl-ioctl_usb_get_node_connection_information_ex_v2)

IOCTL_USB_GET_NODE_CONNECTION_INFORMATION_EX_V2 IOCTL

Description

The IOCTL_USB_GET_NODE_CONNECTION_INFORMATION_EX_V2 I/O control is sent by an application to retrieve information about the protocols that are supported by a particular USB port on a hub. The request also retrieves the speed capability of the port.

IOCTL_USB_GET_NODE_CONNECTION_INFORMATION_EX_V2 is a user-mode I/O control request. This request targets the Universal Serial Bus (USB) hub device (GUID_DEVINTERFACE_USB_HUB).

Parameters

Major code

Input buffer

AssociatedIrp.SystemBuffer points to a caller-allocated USB_NODE_CONNECTION_INFORMATION_EX_V2 structure.

On input, the caller must set the structure members as follows:

Input buffer length

The Parameters.DeviceIoControl.InputBufferLength member indicates the size, in bytes, of the caller-allocated buffer whose size equals sizeof(USB_NODE_CONNECTION_INFORMATION_EX_V2).

Output buffer

On output, the USB_NODE_CONNECTION_INFORMATION_EX_V2 structure that is pointed to by AssociatedIrp.SystemBuffer is filled with information about the attached device.

Output buffer length

The Parameters.DeviceIoControl.OutputBufferLength member indicates the size, in bytes, of the output buffer SystemBuffer.

Input/output buffer

Input/output buffer length

Status block

The USB stack sets Irp->IoStatus.Status to STATUS_SUCCESS if the request is successful. Otherwise, the USB driver stack sets Status to the appropriate error condition, such as STATUS_INVALID_PARAMETER or STATUS_INSUFFICIENT_RESOURCES.

Remarks

The IOCTL_USB_GET_NODE_CONNECTION_INFORMATION_EX_V2 request queries the specified port's hub to get information about protocols supported by the port and the operating speed capability, if a device is attached to the port.

If the request completes successfully, the SupportedUsbProtocols.Usb200 member of USB_NODE_CONNECTION_INFORMATION_EX_V2 indicates protocols supported by the port. For instance, if the port supports signaling protocol defined by the USB 2.0 specification, then SupportedUsbProtocols.Usb200 is set to 1.

Note that SupportedUsbProtocols.Usb110 is always set to 1 for high-speed and full-speed hubs. That is because a high speed-capable hub supports USB 1.1 protocol through split transactions and transaction translators. SupportedUsbProtocols.Usb110 is never set to 1 for a USB 3.0 port.

In addition, the request also determines whether the port and the attached device are capable of operating at SuperSpeed. If they are, the Flags.DeviceIsSuperSpeedCapableOrHigher member is set to 1. If the device attached to the port is currently operating at SuperSpeed, then DeviceIsOperatingAtSuperSpeedOrHigher is set to 1.