(usbioctl.h) USB_NODE_CONNECTION_INFORMATION_EX 结构

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 的扩展版本。 这两个结构是相同的,除了一个成员。 在扩展结构中, Speed 成员指示设备速度。

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;
}

要求

要求
Header usbioctl.h (包括 Usbioctl.h)

另请参阅