2018 年 软 件 2018, Vol. 39, No. 8
第 39 卷 第 8 期
COMPUTER ENGINEERING & SOFTWARE
国际 IT 传媒品牌
作者简介:
怯肇乾(1969
),男,电子与信息技术高级工程师,嵌入式系统设计师/培训师,web网络测控软件系统架构师,研究方向为
软硬件体系及其网络系统软件设计;石保敬(1977
),男,经济师,风险评估师,环保健康探测警报专家,研究方向为危害和易燃易爆气体
探测产品系统及其开发设计;王长荀(1988
),男,嵌入式硬软件开发工程师,研究方向为软硬件体系及其网络系统软件设计。
WinUSB 驱动实现及其通信传输应用
石保敬,王长荀,怯肇乾
(河南驰诚电气,河南 郑州 450001)
摘 要: 微软近年来推出的规范简便的 WinUSB 设备通信模型,编程对接的关键是“底层 USB 设备如何添加
描述使 Windows OS 识别其为 WinUSB 设备”和“可视化测试/应用程序怎样通过 WinUSB.dll 调用与之进行管道数
据传输的实现”,恰到好处的运用定时器或线程是异步快速实时数据接收软件设计的核心,USB 测试/应用程序发布针
对低级操作系统版本需要编写引导安装程序,USB 设备插拔处置和多 USB 设备通信的操控也需要特定处置,如此
编程设计,Windows 下 USB 设备传输通信就如同传统的 RS-232C 通信一样方便自如而且还直截了当和迅速高效了。
关键词: USB 描述符;WinUSB 设备;异步数据传输;定时数据接收;线程数据接收
中图分类号: TP36 文献标识码: B DOI:10.3969/j.issn.1003-6970.2018.08.013
本文著录格式:石保敬,王长荀,怯肇乾. WinUSB 驱动实现及其通信传输应用[J]. 软件,2018,39(8):5764
Implementation of WinUSB Driver and Its Application in Communication Transmission
SHI Bao-jing, WANG Chang-xun, KAI Zhao-qian
(HNCC Electronic Co., LTD, Zhengzhou 450001, China)
【 Abstract 】: Software design key about WinUSB-Device-Model-Application is how to add descriptor to
WinUSB-Device in Windows OS and how to communicate in Windows Application. It’s kernel is how to use timer
and thread with asynchronous-data-transmission. Note WinUSB-Application-Publishing in low operating system
version, account USB-Plug-in-Plug-out handling and multi-USB-devices-communication. So, Windows USB device
data transmission are easy to use such as RS-232C.
【Key words】: USB descriptor; WinUSB device; Asynchronous data transmission; Data reception with timer; Data
reception with thread.
0 引言
[9]
Windows 操作系统 OS(Operation System)下,
通过 USB(Universal Serial Bus)接口,读写访问
USB 设备,是嵌入式应用系统和可视化测试/应用软
件开发必不可少的常用环节。微软从 Winxp-SP2 版
本开始,在 Windows 中集成了通用的 WinUSB Device
驱动及其连接 OS 底层和应用层的 WinUSB.dll,极
大简化了 USB 数据的通信传输。恰到好处的运用
WinUSB 进行开发,同样可以到达类似使用傻瓜托
管式的 WinDriver 软件的效果。编程设计的关键是
如何让 Windows 快速的把 USB 设备识别为通用
WinUSB 设备和应用软件怎样合理调用 WinUSB.dll
对应的 WinUSB.lib 库。本文就此展开详细阐述。
开发 WinUSB 驱动实现及其通信传输应用,可
以采用 C++、C#或 JavaScript 等语言,最好的集成
开发环境 IDE(Integrated Development Environment)
是 Visial Studio,也可以是 Rad Studio XE 等,无论
哪个 IDE 都需要首先安装 Windows 驱动程序开发工
具包 WDK(Windows Driver Kit)。这里以 Rad Studio
XE 和 STM32F103 系列微控制器的可视化 USB 设备
通信开发为例加以说明。
1 底层 USB 设备通信支持
[1-4]
嵌入式应用系统实现 USB 设备通信,主要是在
高优先级的中断服务程序中实现的,包括常规的
USB 标准请求应答和管道读写收发实现,管道操作
主要是中断和批量传输,USB 标准请求包括设备、