在 USB 客户端驱动程序中发送 USB 数据传输的概述

本部分中的文章提供有关 I/O 请求的 USB 管道和 URI 的信息,并介绍了客户端驱动程序如何使用设备驱动程序接口 (DDI) 向 USB 设备传输数据。

每次在主机控制器和 USB 设备之间移动数据时,都会发生传输。 通常,USB 传输可大致分为控制传输和数据传输。 所有 USB 设备都必须支持控制传输,并且可以支持用于数据传输的终结点。 每种类型的传输都与设备) 缓冲区 (USB 终结点 的类型相关联。 控制传输与默认终结点相关联,数据传输使用单向终结点。 数据传输类型使用中断、批量和常时等量终结点。 USB 驱动程序堆栈为设备支持的每个终结点创建名为 管道 的信道。 管道的一端是设备的终结点。 管道的另一端始终是主控制器。

在向设备发送 I/O 请求之前,客户端驱动程序必须从 USB 设备检索有关配置、接口、终结点、供应商和类特定描述符的信息。 此外,驱动程序还必须配置设备。 设备配置涉及诸如在每个接口中选择配置和备用设置等任务。 每个备用设置都可以指定一个或多个可用于数据传输的 USB 终结点。

有关设备配置的信息,请参阅 如何为 USB 设备选择配置如何在 USB 接口中选择备用设置

客户端驱动程序配置设备后,驱动程序可以访问 USB 驱动程序堆栈为当前所选备用设置中的每个终结点创建的管道句柄。 若要将数据传输到终结点,客户端驱动程序通过设置特定于请求类型的 URB 的格式来创建请求。

本节内容

项目 说明
如何发送 USB 控制传输 本文介绍控件传输的结构,以及客户端驱动程序应如何向设备发送控件请求。
如何枚举 USB 管道 本文概述了 USB 管道,并介绍了 USB 客户端驱动程序从 USB 驱动程序堆栈获取管道句柄所需的步骤。
如何使用连续读取器从 USB 管道读取数据 本文介绍 WDF 提供的连续读取器对象。 本文中的过程提供了有关如何配置对象并使用它从 USB 管道读取数据的分步说明。
如何将发送 USB 大容量传输请求 本文简要概述了 USB 批量传输。 它还提供有关客户端驱动程序如何从设备发送和接收批量数据的分步说明。
如何打开和关闭 USB 大容量终结点中的静态流 本文讨论静态流功能,并说明 USB 客户端驱动程序如何在 USB 3.0 设备的批量终结点中打开和关闭流。
如何将数据传输到 USB 常时等量终结点 本文介绍了客户端驱动程序如何构建 USB 请求块 (URB) ,以在 USB 设备中向和从常时等量终结点传输数据。
如何发送链接的 MDL 本文将介绍 USB 驱动程序堆栈中的链接式 MDL 功能,以及客户端驱动程序如何将传输缓冲区作为 MDL 结构的链发送。
如何从 USB 管道错误中恢复 本文提供有关在数据传输到 USB 管道失败时可以尝试的步骤的信息。 本文中所述的机制涵盖批量、中断和常时常量管道上的中止、重置和循环端口操作。
USB 带宽分配 本部分提供有关仔细管理 USB 带宽的指导。