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_INFORMATIONPipes 成员指向USBD_PIPE_INFORMATION结构的数组。 USB 总线驱动程序使用与接口终结点关联的管道的信息填充 USBD_PIPE_INFORMATION 结构数组。 客户端驱动程序可以从 获取管道句柄, Pipes[i].PipeHandle 并使用它们将 I/O 请求发送到特定管道。

使用返回的 URB 完成所有操作后,必须通过调用 ExFreePool 释放 URB

可以从非分页池或分页池中分配配置描述符和数组。 如果 ConfigurationDescriptorInterfaceList 指向的内存是从非分页池分配的,则此例程的调用方可以在 IRQL <= DISPATCH_LEVEL 运行。 否则,调用方必须在 IRQL < DISPATCH_LEVEL运行。

要求

要求
目标平台 通用
标头 usbdlib.h (包括 Usbdlib.h)
Library Usbd.lib
IRQL DISPATCH_LEVEL (请参阅备注)

另请参阅

如何为 USB 设备选择配置

USB device driver programming reference(USB 设备驱动程序编程参考)

USBD_INTERFACE_INFORMATION

_URB_SELECT_CONFIGURATION