USB 客户端驱动程序开发的首要步骤
本节介绍 USB 驱动程序开发概念和工具。 本节适用于希望为 Microsoft 未提供开箱驱动程序的 USB 设备实施驱动程序的驱动程序开发人员。 这些驱动程序在本文档中称为 USB 客户端驱动程序。 本节的主题描述了高级 USB 概念,并提供了有关执行 USB 客户端驱动程序常见任务的分步说明。 有关这些概念的详细信息,请参阅 USB 文档中的 USB 规范。
驱动程序开发人员必须具备 C++ 编程语言的编码经验,并理解函数指针、回调函数和事件处理程序的概念。 如果基于用户模式驱动程序框架编写驱动程序,开发人员必须熟悉 C++ 和 COM。
USB 客户端驱动程序开发人员的学习途径
阅读 USB 规范 3.2。
- 了解行业规范和架构的不同组件(设备、主控制器和集线器)。 了解数据流模型、主机和设备之间的通信方式以及设备期望的请求格式非常重要。
获取测试 USB 设备。
具备 USB 设备及其硬件规格。 该规范描述了设备功能和支持的供应商命令。 使用规范确定设备驱动程序的功能和相关设计决策。
如果您是 USB 驱动程序开发的新手,需具有 OSR USB FX2 学习套件。 此工具包最适合学习本文档集中包括的 USB 示例。
配备 Microsoft USB 测试工具 (MUTT) 设备。 MUTT 硬件可从 JJG Technologies购买。 设备未安装固件。 要安装固件,请下载 MUTT 软件包。 更多信息,请参阅软件包随附的文档。
-
- 通过读取配置描述符、各支持备用设置的接口描述符及其端点描述符来描述设备功能。 通过使用 USBView,开发人员可以浏览所有 USB 控制器及其连接的 USB 设备,还可以检查设备配置。
-
- 根据目标设备的设计,确定驱动程序应该是自定义驱动程序还是使用微软提供的驱动程序。 选择最佳驱动程序型号,并说明每种型号支持的功能。
回顾微软提供的 USB 驱动程序栈和驱动程序开发概念。
- Windows 中的 USB 主机端驱动程序。
- 面向所有驱动程序开发人员的概念。
- 面向所有 USB 开发人员的概念。
- 设备节点和设备堆栈。
- 使用由 Penny Orwick 和 Guy Smith 编写的 Windows Driver Foundation 开发驱动程序。 更多信息,请参见利用 WDF 开发驱动程序。
- USB 驱动程序示例。
- 了解驱动程序在 Windows 操作系统中工作的基本原理。 了解基本原理有助于做出适当的设计决策和简化开发流程。
- 区分用户模式和内核模式的驱动程序架构模型。
- 了解驱动程序加载以及 Windows 如何在设备树和设备节点中组织即插即用 (PnP) 设备。 开发人员还应了解 PnP 管理器如何构建设备栈,以及驱动程序及其设备对象在设备栈中的位置。
准备开发和调试环境。
- 安装最新的 Windows 驱动程序工具包 (WDK)。
- 安装 Microsoft Visual Studio。
- 设置调试。
- 确保 USB 客户端驱动程序所需的标头和库可用。
- 如果通过以太网网络在主机和目标计算机上编写内核模式驱动程序调试,必须配置 1394 电缆、USB 2.0 或 3.0 调试电缆或 null 调制解调器电缆。
- 如果编写用户模式驱动程序,可使用 Microsoft Visual Studio 环境中的用户模式调试器。 开发人员应熟悉如何附加到进程或在调试器下启动进程。
写出你的第一个驱动程序。
- 如何编写第一个 USB 客户端驱动程序 (KMDF)。
- 如何编写第一个 USB 客户端驱动程序 (UMDF)。
- 使用 Visual Studio 2012 附带的 USB 模板编写、构建和安装第一个 USB 客户端驱动程序。 开发人员应能描述框架驱动程序、设备和队列对象,并了解框架如何与驱动程序通信。
发送 USB 控制传输请求,扩展驱动程序。
- 向设备发送标准控制请求和供应商指令。 更多信息,请参阅如何发送 USB 控制传输。
扩展驱动程序,使用 WDF USB I/O 目标对象执行 USB 数据传输。
- 扩展驱动程序以执行 USB 客户端驱动程序的常见任务中概述的常见任务。
USB 社区资源
-
查看 Microsoft USB 团队撰写的博文。 此博客重点介绍 Windows USB 驱动程序堆栈,该堆栈适用于 Windows 电脑中的各种 USB 主控制器和 USB 集线器。 适用于 USB 客户端驱动程序开发人员和 USB 硬件设计人员的资源,方便他们了解驱动程序堆栈实现、解决常见问题以及如何使用工具来收集跟踪和日志文件。
-
由 OSR Online 管理的讨论列表,适用于内核模式驱动程序开发人员。
-
Windows 驱动程序工具包,通过 Windows 硬件实验室工具包学习 Windows 驱动程序示例,确保产品可靠并与 Windows 兼容。