How to distinguish USB 3.2 gen 2 (10Gb/s) and gen 2*2 (20Gb/s) by c# code?

Copper Contributor

We have a device and a new PC both support USB 3.2 gen 2*2, the transfer speed is about 1GB per second, it's faster than USB 3.2 gen 2.


I want to know how to distinguish it with USB 3.2 Gen 2, the difference is Gen 2 use single lane, and Gen 2*2 use double lane.

But how to get the lane number?


I checked the device property via USBTreeViewer, but there is no property to indicate the difference.


Any one can give some tips? Thanks very much.


C# is better, C++ code is also OK.

1 Reply

Unfortunately, following up on their ongoing trend of pretending that everything that a modern Windows application sees should go no further than a 2016-era Windows 10 PC, probably in order not to irk corporate customers who "don't want to have to update (read: MAINTAIN) their Windows applications ever" (hence, for instance, the reason why the OS version reported by Windows 11 internally has still deliberately been stuck to 10.0), Microsoft has also decided NOT to update their USB driver stack to introduce the long overdue IOCTL_USB_GET_NODE_CONNECTION_INFORMATION_EX_V3 replacement for IOCTL_USB_GET_NODE_CONNECTION_INFORMATION_EX_V2, that would provide a report of 3.2 speeds.


The end result of that is that, as you have found, Microsoft has decided to break the IMPLICIT TRUST CONTRACT that needs to exist between the OS and its developers, whereas an OS is expected to update its APIs, in a timely manner, in order to provide an accurate representation of the underlying hardware, including all the modern features.


Microsoft, if you are reading this, please understand that there needs to be a middle ground between "backwards compatibility über alles" and "allowing application developers to get accurate knowledge of the hardware and software capabilities, even if it may be used to filter application compatibility". Updating your APIs to report USB 3.2 speeds or to reflect the actual version of Windows, should not be considered as providing too much "power" for Windows applications developers to wield...


So, can we please have our USB 3.2 speed reporting at long last?