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错误代码。
- 调用方必须将 长度 成员设置为由 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 请求查询指定端口的中心,以获取有关端口支持的协议和作速度功能的信息(如果设备已附加到端口)。
如果请求成功完成,SupportedUsbProtocols.Usb200 成员 USB_NODE_CONNECTION_INFORMATION_EX_V2 表示端口支持的协议。 例如,如果端口支持 USB 2.0 规范定义的信号协议,则 SupportedUsbProtocols.Usb200 设置为 1。
请注意,对于高速和全速中心,SupportedUsbProtocols.Usb110 始终设置为 1。 这是因为支持高速的中心通过拆分事务和事务翻译支持 USB 1.1 协议。 支持的UsbProtocols.Usb110 永远不会为 USB 3.0 端口设置为 1。
此外,请求还确定端口和附加设备是否能够在 SuperSpeed 中运行。 如果是,则 Flags.DeviceIsSuperSpeedCapableOrHigher 成员设置为 1。 如果附加到端口的设备当前在 SuperSpeed 中运行,则 DeviceIsOperatingAtSuperSpeedOrHigher 设置为 1。
要求
要求 | 价值 |
---|---|
最低支持的客户端 | Windows 8 |
支持的最低服务器 | 不支持 |
标头 | usbioctl.h (包括 Usbioctl.h) |