USB_NODE_CONNECTION_INFORMATION_EX结构(usbioctl.h)

USB_NODE_CONNECTION_INFORMATION_EX 结构与 IOCTL_USB_GET_NODE_CONNECTION_INFORMATION_EX 请求结合使用,以获取与指示的 USB 端口关联的连接的相关信息。

语法

typedef struct _USB_NODE_CONNECTION_INFORMATION_EX {
  ULONG                 ConnectionIndex;
  USB_DEVICE_DESCRIPTOR DeviceDescriptor;
  UCHAR                 CurrentConfigurationValue;
  UCHAR                 Speed;
  BOOLEAN               DeviceIsHub;
  USHORT                DeviceAddress;
  ULONG                 NumberOfOpenPipes;
  USB_CONNECTION_STATUS ConnectionStatus;
  USB_PIPE_INFO         PipeList[0];
} USB_NODE_CONNECTION_INFORMATION_EX, *PUSB_NODE_CONNECTION_INFORMATION_EX;

成员

ConnectionIndex

包含一个大于或等于 1 的值,该值指定端口的数目。

DeviceDescriptor

包含 USB_DEVICE_DESCRIPTOR 类型的结构,该结构报告枚举期间附加设备返回的 USB 设备描述符。

CurrentConfigurationValue

包含与 SetConfiguration 请求一起使用的 ID,用于指定连接到所指示端口的设备当前配置。 有关此值的说明,请参阅 USB 文档库提供的通用串行总线 3.1 规范中的第 9.4.7 节。

Speed

包含 USB_DEVICE_SPEED 类型的值,该值指示设备的速度。

DeviceIsHub

指示当 TRUE时,附加到端口的设备是中心。

DeviceAddress

包含附加到端口的设备 USB 分配的总线相对地址。

NumberOfOpenPipes

指示与端口关联的打开 USB 管道的数量。

ConnectionStatus

包含 USB_CONNECTION_STATUS 类型的枚举数,指示连接状态。

PipeList[0]

包含一个 USB_PIPE_INFO 类型的结构数组,该数组描述与端口关联的打开管道。 管道说明包括管道的计划偏移量以及关联的终结点描述符。 此信息可用于计算带宽使用情况。

言论

如果没有设备连接,IOCTL_USB_GET_NODE_CONNECTION_INFORMATION_EX'仅返回有关端口的信息。 如果设备连接到端口 IOCTL_USB_GET_NODE_CONNECTION_INFORMATION_EX 则返回有关端口和已连接设备的信息。

USB_NODE_CONNECTION_INFORMATION_EX 结构是 USB_NODE_CONNECTION_INFORMATION的扩展版本。 这两个结构是相同的,但一个成员除外。 在扩展结构中,速度 成员表示设备速度。

USB_NODE_CONNECTION_INFORMATION_EX 结构的 Speed 成员是 UCHAR,它可以指定 USB_DEVICE_SPEED 枚举器的任何值。 Speed 成员最多支持 UsbHighSpeed (USB 2.0)。 若要确定设备是否支持 UsbSuperSpeed(USB 3.0),请使用 USB_NODE_CONNECTION_INFORMATION_EX_V2 结构。

USBView 示例中的以下C++代码片段 演示如何确定设备是否支持 UsbSuperSpeed(USB 3.0):

// Since the USB_NODE_CONNECTION_INFORMATION_EX is used to display
// the device speed, but the hub driver doesn't support indication
// of superspeed, we overwrite the value if the super speed
// data structures are available and indicate the device is operating
// at SuperSpeed.

if (connectionInfoEx->Speed == UsbHighSpeed 
    && connectionInfoExV2 != NULL 
    && (connectionInfoExV2->Flags.DeviceIsOperatingAtSuperSpeedOrHigher ||
        connectionInfoExV2->Flags.DeviceIsOperatingAtSuperSpeedPlusOrHigher))
{
    connectionInfoEx->Speed = UsbSuperSpeed;
}

要求

要求 价值
标头 usbioctl.h (包括 Usbioctl.h)

另请参阅