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_NAME 的 HubName 成员包含控制器的名称,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 |