IOCTL_INTERNAL_USB_GET_CONTROLLER_NAME IOCTL (usbioctl.h)

IOCTL_INTERNAL_USB_GET_CONTROLLER_NAME I/O 请求查询总线驱动程序,以获取 USB 主机控制器的设备名称。

IOCTL_INTERNAL_USB_GET_CONTROLLER_NAME 是内核模式 I/O 控制请求。 此请求面向 USB 中心 PDO。 此请求必须在PASSIVE_LEVEL的 IRQL 发送。

主要代码

IRP_MJ_INTERNAL_DEVICE_CONTROL

输入缓冲区

Parameters.Others.Argument1 应该是指向 USB_HUB_NAME 结构的指针,该结构将用主机控制器的名称填充。

输入缓冲区长度

Parameters.Others.Argument2 应该是一个 ULONG,用于指定 Parameters.Others.Argument1中的缓冲区长度(以字节为单位)。

输出缓冲区

总线驱动程序将使用主机控制器设备名称填充 Parameters.Others.Argument1 指向的缓冲区。

输出缓冲区长度

仅填充 Parameters.Others.Argument2中指定的长度。

状态块

总线或端口驱动程序 Irp->IoStatus.Status 设置为STATUS_SUCCESS或适当的错误状态。

言论

调用方必须提供足够大的缓冲区来容纳 USB_HUB_NAME 结构。 Parameters.Others.Argument2 值指示该缓冲区的大小。 成功完成后,USB_HUB_NAMEHubName 成员包含控制器的名称,ActualLength 成员指示控制器名称字符串的长度。 请注意,ActualLength 不指示整个 USB_HUB_NAME 结构的大小。 如果 Parameters.Others.Argument1 中提供的缓冲区不足以容纳字符串,则 HubName 值可能会显示截断字符串。

若要获取保存字符串所需的缓冲区大小,请发送两次请求。 在第一个请求中,指定至少 sizeof(USB_HUB_NAME) 字节的缓冲区。 否则,ActualLength 不指示字符串的正确长度,并且请求失败并STATUS_BUFFER_TOO_SMALL。

第一个请求成功完成后,分配一个 ActualLength + sizeof(ULONG) 字节的缓冲区,然后再次发送请求。 请求完成后,HubName 指示整个控制器名称字符串。

要求

要求 价值
标头 usbioctl.h

另请参阅

USB_HUB_NAME