USBD_CreateConfigurationRequestEx 函数 (usbdlib.h)
USBD_CreateConfigurationRequestEx例程分配和格式化 URB 以选择 USB 设备的配置。
USBD_CreateConfigurationRequestEx 替换 USBD_CreateConfigurationRequest。
语法
PURB USBD_CreateConfigurationRequestEx(
[in] PUSB_CONFIGURATION_DESCRIPTOR ConfigurationDescriptor,
[in] PUSBD_INTERFACE_LIST_ENTRY InterfaceList
);
参数
[in] ConfigurationDescriptor
指向调用方分配 的USB_CONFIGURATION_DESCRIPTOR 结构的指针,该结构包含要选择的配置的配置描述符。 通常,客户端驱动程序提交类型的 URB,URB_FUNCTION_GET_DESCRIPTOR_FROM_DEVICE (查看 _URB_CONTROL_DESCRIPTOR_REQUEST) ,以从 USB 设备检索有关配置、接口、终结点、供应商和类特定描述符的信息。 当客户端驱动程序将 USB_CONFIGURATION_DESCRIPTOR_TYPE 指定为描述符类型时,请求将检索 USB_CONFIGURATION_DESCRIPTOR 结构中的所有设备信息。 然后,驱动程序将收到的指针传递到 ConfigurationDescriptor 参数中的 USB_CONFIGURATION_DESCRIPTOR 结构。
[in] InterfaceList
指向调用方分配的 USBD_INTERFACE_LIST_ENTRY 结构的数组的第一个元素的指针。 数组的长度取决于配置描述符中的接口数。 数组中的元素数必须比配置中的接口数多一个。 通过调用 RtlZeroMemory 初始化数组。 数组中最后一个元素的 InterfaceDescriptor 成员必须设置为 NULL。
返回值
USBD_CreateConfigurationRequestEx 分配 URB 结构,为URB_FUNCTION_SELECT_CONFIGURATION请求格式化 (选择配置请求) ,并返回指向 URB 的指针。 然后,客户端驱动程序可以使用返回的 URB 将选择配置请求发送到主机控制器驱动程序以设置配置。 使用完 URB 后,必须释放它。
注解
有关如何生成选择配置请求和代码示例的信息,请参阅 如何为 USB 设备选择配置。
返回的值是指向 URB 结构的指针,可用于将选择配置请求提交到主机控制器驱动程序以设置指定配置。
USB 驱动程序堆栈完成选择配置请求后,可以检查 USBD_INTERFACE_INFORMATION 结构。 USBD_INTERFACE_INFORMATION 的 Pipes 成员指向USBD_PIPE_INFORMATION结构的数组。 USB 总线驱动程序使用与接口终结点关联的管道的信息填充 USBD_PIPE_INFORMATION 结构数组。 客户端驱动程序可以从 获取管道句柄, Pipes[i].PipeHandle
并使用它们将 I/O 请求发送到特定管道。
使用返回的 URB 完成所有操作后,必须通过调用 ExFreePool 释放 URB。
可以从非分页池或分页池中分配配置描述符和数组。 如果 ConfigurationDescriptor 和 InterfaceList 指向的内存是从非分页池分配的,则此例程的调用方可以在 IRQL <= DISPATCH_LEVEL 运行。 否则,调用方必须在 IRQL < DISPATCH_LEVEL运行。
要求
要求 | 值 |
---|---|
目标平台 | 通用 |
标头 | usbdlib.h (包括 Usbdlib.h) |
Library | Usbd.lib |
IRQL | DISPATCH_LEVEL (请参阅备注) |
另请参阅
USB device driver programming reference(USB 设备驱动程序编程参考)