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 指示整个控制器名称字符串。

要求

要求
Header usbioctl.h

另请参阅

USB_HUB_NAME