如何使用 Windows API 获取 USB 3.2 Gen 2x2(20Gb/s) 设备的当前链接通道数

问题描述 投票:0回答:1

我可以使用 IOCTL_USB_GET_NODE_CONNECTION_INFORMATION_EX_V2 从 DeviceIsOperatingAtSuperSpeedPlusOrHigher 获取 USB 3.2 Gen 2(10Gb/s) 当前链接的单通道信息。 如何使用 Windows API 获取 USB 3.2 Gen 2x2 设备的当前链接通道数?

windows performance winapi usb
1个回答
0
投票

到目前为止,答案是“不,没有办法请求此信息”。

但是 Windows 11 Build 26100 附带了新的 DeviceIoControl 调用 IOCTL_USB_GET_NODE_CONNECTION_SUPERSPEEDPLUS_INFORMATION,它填充了 USB_NODE_CONNECTION_SUPERSPEEDPLUS_INFORMATION 结构。

需要 USB 设备集线器的句柄,输入是 ConnectionIndex(又名端口号)和结构大小。

大多数输出值始终相同,唯一的变体是 RxLaneCount 和 TxLaneCount,它们对于 1 个通道为 0,对于 2 个通道为 1。

IOCTL_USB_GET_NODE_CONNECTION_SUPERSPEEDPLUS_INFORMATION

USB_NODE_CONNECTION_SUPERSPEEDPLUS_INFORMATION sspi = {
    nPort, sizeof(USB_NODE_CONNECTION_SUPERSPEEDPLUS_INFORMATION)
};

DWORD dwBytesReturned;
int res = DeviceIoControl(hHub,
                          IOCTL_USB_GET_NODE_CONNECTION_SUPERSPEEDPLUS_INFORMATION,
                          &sspi, sizeof(sspi),
                          &sspi, sizeof(sspi),
                          &dwBytesReturned, NULL);

如何打开集线器并确定我在此处显示的端口号: 如何重新启动 USB 端口

这是 UsbTreeView V4.4 的组成部分:

            -------- Connection SuperSpeedPlus Information --------
Length                   : 0x18 (24 bytes)
Connection Index         : 0x03 (3)
Rx.SublinkSpeedAttrID    : 0x01 (ID 1)
Rx.LaneSpeedExponent     : 0x03 (Lane Speed Exponent is 9 -> Gbit/s)
Rx.SublinkTypeMode       : 0x00 (Symmetric)
Rx.SublinkTypeDir        : 0x00 (Receive Mode)
Rx.Reserved              : 0x00
Rx.LinkProtocol          : 0x01 (SuperSpeedPlus)
Rx.LaneSpeedMantissa     : 0x000A (Lane Speed Mantissa is 10)
Rx.LaneCount             : 0x00 (1 Lane)
Tx.SublinkSpeedAttrID    : 0x01 (ID 1)
Tx.LaneSpeedExponent     : 0x03 (Lane Speed Exponent is 9 -> Gbit/s)
Tx.SublinkTypeMode       : 0x00 (Symmetric)
Tx.SublinkTypeDir        : 0x01 (Transmit Mode)
Tx.Reserved              : 0x00
Tx.LinkProtocol          : 0x01 (SuperSpeedPlus)
Tx.LaneSpeedMantissa     : 0x000A (Lane Speed Mantissa is 10)
Tx.LaneCount             : 0x00 (1 Lane)
-> Rx speed is 10 Gbps
-> Tx speed is 10 Gbps

不幸的是,微软没有更新 USB 端口功能报告,USB_PROTOCOLS 枚举以“Usb300”结尾,因此仍然无法确定端口是否支持 SuperSpeed 以外的功能。

© www.soinside.com 2019 - 2024. All rights reserved.