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

本节中的主题提供 USB 管道(I/O 请求的 URB),并介绍客户端驱动程序如何使用设备驱动程序接口 (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 带宽的指南。

 

相关主题

USB 驱动程序开发指南

 

 

显示:
© 2015 Microsoft