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_FUNCTION_GET_DESCRIPTOR_FROM_DEVICE 的 URB(请参阅 _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 成员指向 USBD_PIPE_INFORMATION 结构数组。 USB 总线驱动程序使用与接口终结点关联的管道的相关信息填充 USBD_PIPE_INFORMATION 结构的数组。 客户端驱动程序可以从 Pipes[i].PipeHandle
获取管道句柄,并使用这些句柄将 I/O 请求发送到特定管道。
使用返回 URB完成所有作后,必须通过调用 exFreePool 来释放 URB。
可以从非分页池或分页池分配配置描述符和数组。 如果 ConfigurationDescriptor 指向的内存,并且从非分页池中分配 interfaceList interfaceList,则此例程的调用方可以在 IRQL <= DISPATCH_LEVEL 运行。 否则,调用方必须在 IRQL < DISPATCH_LEVEL 运行。
要求
要求 | 价值 |
---|---|
目标平台 | 普遍 |
标头 | usbdlib.h (包括 Usbdlib.h) |
库 | Usbd.lib |
IRQL | DISPATCH_LEVEL(请参阅备注) |