IOCTL_USB_GET_NODE_CONNECTION_INFORMATION_EX_V2 IOCTL (usbioctl.h)
IOCTL_USB_GET_NODE_CONNECTION_INFORMATION_EX_V2 I/O 控件由应用程序发送,用于检索集线器上特定 USB 端口支持的协议的相关信息。 请求还会检索端口的速度功能。
IOCTL_USB_GET_NODE_CONNECTION_INFORMATION_EX_V2 是用户模式 I/O 控制请求。 此请求面向通用串行总线 (USB) 集线器设备 (GUID_DEVINTERFACE_USB_HUB) 。
主要代码
输入缓冲区
AssociatedIrp.SystemBuffer 指向调用方分配 的USB_NODE_CONNECTION_INFORMATION_EX_V2 结构。
在输入时,调用方必须按如下所示设置结构成员:
- 调用方必须在 ConnectionIndex 成员中指定端口号。 ConnectionIndex 必须是介于 1 到 n 范围内的值,其中 n 是上一 个 IOCTL_USB_GET_HUB_INFORMATION_EX I/O 控制请求中检索到的最高端口号。
- 调用方必须在 SupportedUsbProtocols 成员中设置协议标志, (请参阅 USB_PROTOCOLS) 。 在 Windows 8 中,SupportedUsbProtocols.Usb300 必须设置为 1。 否则,请求将失败并显示STATUS_INVALID_PARAMETER错误代码。
- 调用方必须将 Length 成员设置为 AssociatedIrp.SystemBuffer 指向的调用方分配缓冲区的大小(以字节为单位)。 缓冲区的大小必须为
sizeof (USB_NODE_CONNECTION_INFORMATION_EX_V2)
。
输入缓冲区长度
Parameters.DeviceIoControl.InputBufferLength 成员指示其大小等于 的调用方分配的缓冲区的大小(以字节为单位sizeof(USB_NODE_CONNECTION_INFORMATION_EX_V2)
)。
输出缓冲区
在输出时,AssociatedIrp.SystemBuffer 指向的USB_NODE_CONNECTION_INFORMATION_EX_V2结构将填充有关附加设备的信息。
输出缓冲区长度
Parameters.DeviceIoControl.OutputBufferLength 成员指示输出缓冲区 SystemBuffer 的大小(以字节为单位)。
状态块
如果请求成功,USB 堆栈会将 Irp-IoStatus.Status> 设置为STATUS_SUCCESS。 否则,USB 驱动程序堆栈会将 “状态” 设置为适当的错误条件,例如STATUS_INVALID_PARAMETER或STATUS_INSUFFICIENT_RESOURCES。
注解
如果设备连接到端口, 则IOCTL_USB_GET_NODE_CONNECTION_INFORMATION_EX_V2 请求查询指定端口的中心以获取有关端口支持的协议和运行速度功能的信息。
如果请求成功完成,则 USB_NODE_CONNECTION_INFORMATION_EX_V2 的 SupportedUsbProtocols.Usb200 成员指示端口支持的协议。 例如,如果端口支持 USB 2.0 规范定义的信号协议,则 SupportedUsbProtocols.Usb200 设置为 1。
请注意,对于高速和全速集线器, SupportedUsbProtocols.Usb110 始终设置为 1。 这是因为支持高速的集线器通过拆分事务和事务转换器支持 USB 1.1 协议。 对于 USB 3.0 端口,SupportedUsbProtocols.Usb110 永远不会设置为 1。
此外,请求还确定端口和附加设备是否能够在 SuperSpeed 中运行。 如果是, 则 Flags.DeviceIsSuperSpeedCapableOrHigher 成员设置为 1。 如果连接到端口的设备当前在 SuperSpeed 中运行,则 DeviceIsOperatingAtSuperSpeedOrHigher 设置为 1。
要求
要求 | 值 |
---|---|
最低受支持的客户端 | Windows 8 |
最低受支持的服务器 | 无受支持的版本 |
标头 | usbioctl.h (包括 Usbioctl.h) |