IOCTL_USB_GET_PORT_CONNECTOR_PROPERTIES I/O 控制请求由应用程序发送,以检索有关 USB 中心上特定端口的信息。
IOCTL_USB_GET_PORT_CONNECTOR_PROPERTIES 是用户模式 I/O 控制请求。 此请求面向通用串行总线(USB)中心设备(GUID_DEVINTERFACE_USB_HUB)。
主要代码
输入缓冲区
AssociatedIrp.SystemBuffer 指向调用方分配 USB_PORT_CONNECTOR_PROPERTIES 结构。 调用方必须按如下所示设置结构成员:
- 调用方必须指定在 ConnectionIndex 成员中查询的端口的端口号。 ConnectionIndex 必须是 1 到 n范围内的值,其中 n 是上一个 IOCTL_USB_GET_HUB_INFORMATION_EX I/O 控制请求中检索到的最高端口号。
-
调用方必须指定 CompanionIndex 成员。 对于 SuperSpeed 中心,调用方必须将 CompanionIndex 成员设置为 0。
调用方可以使用 CompanionIndex 获取与要查询的端口关联的端口号。 如果多个配套端口与端口相关联,若要获取所有端口号,应用程序可以在循环中发送请求。 首先,CompanionIndex 设置为 0,并在每次迭代中递增 CompanionIndex 值,直到请求完成,CompanionPortNumber 设置为 0,CompanionHubSymbolicLinkName 为 NULL。
输入缓冲区长度
Parameters.DeviceIoControl.InputBufferLength 成员指示由 AssociatedIrp.SystemBuffer指向的调用方分配缓冲区的大小(以字节为单位)。 有关详细信息,请参阅“备注”。
输出缓冲区
在输出中,USB_PORT_CONNECTOR_PROPERTIES(AssociatedIrp.SystemBuffer指向)充满了与端口关联的物理连接器的信息。
输出缓冲区长度
Parameters.DeviceIoControl.OutputBufferLength 成员指示输出缓冲区的大小(以字节为单位)SystemBuffer。
状态块
USB 堆栈 Irp->IoStatus.Status 设置为STATUS_SUCCESS(如果请求成功)。 否则,USB 堆栈会将 状态 设置为适当的错误条件,例如STATUS_INVALID_PARAMETER或STATUS_INSUFFICIENT_RESOURCES。 如果中心尚未启动或功能不正常,则请求将返回STATUS_UNSUCCESSFUL。
言论
如果此类中心与指定端口相关联,则调用方必须提供足够大的缓冲区,以容纳 USB_PORT_CONNECTOR_PROPERTIES 结构和配套中心的符号链接名称。 若要获取要分配的缓冲区的大小,调用方必须发送 IOCTL_USB_GET_PORT_CONNECTOR_PROPERTIES 请求。 在请求中,AssociatedIrp.SystemBuffer 必须是调用方分配的 USB_PORT_CONNECTOR_PROPERTIES 结构,Parameters.DeviceIoControl.InputBufferLength 必须 sizeof(USB_PORT_CONNECTOR_PROPERTIES)。 成功完成后,USB_PORT_CONNECTOR_PROPERTIES 的 ActualLength 成员指示缓冲区的实际大小。 如果存在符号链接名称,则接收的值包括存储链接名称的字符串的大小。
根据 ActualLength 值,调用方随后可以分配缓冲区并再次发送 IOCTL_USB_GET_PORT_CONNECTOR_PROPERTIES 请求。 请求完成后,缓冲区将填充端口信息,CompanionHubSymbolicLinkName 成员是一个 Unicode 字符串,其中包含配套中心的符号链接名称。
要求
| 要求 | 价值 |
|---|---|
| 最低支持的客户端 | Windows 8 |
| 支持的最低服务器 | 不支持 |
| 标头 | usbioctl.h (包括 Usbioctl.h) |