Microcomputer Applications Vo1.26,No.2,2010 开发应用 微型 电脑应甩 2010年第 26卷第 2期
文章编号 :1007-757X(2010)2—0053-03
基于 Windows的USB驱动程序开发
何 丽华,梁杰 中, 肖楚海
摘 要 :为 了配合 USB驱动程序 的开发 ,首 先详细阐 述 了微 软所提 倡的 WDM 驱动 模型。并 以 LPC2368为例 ,阐述 了运 用
DDK和 DriverStudio工具 包,开发 USB设备驱动程序 的过程和 USB驱动程序 的调 用过程 。利用 DriverWorks开发驱动程 序
快捷 方便 ,必将有着广 阔的应用前景。
关键词 :WDM 驱动模型 ;DDK;DriverStudio;USB驱动
中图分类号:TP399 文献标志码 :B
0 引言
Windows已经成 为 PC 的主 流操 作系统,要想实现在
Windows操作系统下对硬件设备的操作,必须通过在 WDM
模型下设计驱动程序这 个软接 口。USB,是 Universal Serial
Bus(通用串行总线)的简称,为个人电脑与其外围设备之间的
连接提供了一种标准化 、单一化的接 口『1I。它的主要优 点体
现在:操 作简单,即插即用 ;成本低廉 ,携带方便 ;标准 统
一
;可 以连接 多个设备 ;通信速率 快;可靠性 高等 。鉴 于
USB的这些特 点 ,它 已经成为 PC的首选接 口。
1 WDM 驱 动程序模型简介
US8驱 动的设计 基于 WDM (Windows Driver
Module),即 Win32驱动模型 。WDM 是 Microsoft公 司
力推 的新型驱动模型 ,旨在通过 一种灵活 的方式简化驱动
程序 的开发 ,在实现对新硬件支持的基础上 ,减少并 降低必
须开发的驱动程序的数量和复杂性 。
WDM 有两种运行模式 ,即内核模式和用户模式 。在 内
核模式下 ,程序的运行 不受操作系统的任 何限制 ,对 I/O有
完全 的访 问权 ;在用户模式 下,操作系统提供某种机制 ,可
以限制程序的各种 I/O操作 。
WDM 驱动程序采用 了分层驱动的方式,不 同层之间的
驱动 程序 完成不 同的操 作 ,不 同层 之间 可 以 互相调用 ,在
WDM 中引入 了功能设备对象 (FDO Filter Device Object)
和物理设备对象 (PDO Project Device Object)来描述硬件 。
一
个 PDO 对应 一个真实 的硬件 ,一个硬件 只允许有 一个
PDO但是却可 以有多个 FDO。在 驱动程序 中直接操作 的不
是硬 件设 备,而是相应 的 PDO和 FDO[ 1。在用户态 和内核
态通信方 面,系统 为每一个用户请求打包形成一个 IRP 结
构 ,将其 发送至驱动程序 ,并通过识别 IRP中的 PDO来 区
分 时发送给哪 一个设备 的。
叵
_F-no }二 I J 1 , ’ I L
一 — J —一 — — l
厂 —L_一 i
=i.Iv I
rI 鲎
r——— ] r— — — ] J
j PI}O 厂I— 总线驱动程序 r— L i
, . . . . . . . . .. . . . 一
图 1 WDM 驱 动程 序模 型
驱动模型如图 l所 示:中总线驱动程序位于最底 层,总
线驱动程 序为实际的 I/o 总线服 务,比如 USB。微软 已经
为 Windows操作系统提供 了总线驱动程序 。一个总线驱动
程序 负责 的工作有 :枚举 总线上的设备;向操作系统报告总
线上 的动 态事件 ;响应 即插 即用 和电源 管理 的 I/O请求;
管理 总线上 的设备 。总线驱动程序创建一个物理设备对象 来
代表 它发现 的设备 。即发现总线上的所有设备和检测设备添
加或者删 除,创建物理设备对象 PDO;
功能驱动程序 处理 设备 的 I/O请求包 (IRP),负责创 建
功 能设 备对象 FDO;其 他层 的驱 动程序 是一 些过 滤程序
(Filter Driver),对应的设备对象是过滤器设备。安装硬 件
设备 时操作系 统的即插 即用管理器 按照设备驱 动程序 的要
求构造设备的对象 ,首先是最 底层 的总线驱动程序检测 到实
际 的物理设备 ,创建物 理设备对 象 PDO,然后 ,即插 即用
管理器查询注册表 ,按注册表信 息依次 加载过滤驱动程序和
功能驱动程序 ,可 生成相应 的功 能设备对 象 FDO,并建立
.
设备对象和驱动程序的对应关系 ,这样一个完整 的设备驱动
程序就建立 了I 。
2 工 具 的选择
在开发工具的选择 上本 文选 择用 Microsoft 公司提供的
Windows DDK,Win2000DDK。DDK软件包中包括有关设
备驱动程序开 发的文档 、编译驱动程序时所需要的头文件和
库文件 、调试工具和一些设备驱动程序 范例。但是直接使用
DDK 开发 比较困难,而且设备的驱动程序本身 比较复杂,
作者简 介 :何 丽华(1984-),女 ,河南省开封 市人 ,华 南理工大 学 自动化 学院,检测与 自动化 装置 硕士研 究生 ,主要研 究方 向为现场 总线 及其
应用,广东广 州 510640;梁 杰  ̄(1952.),男,华南理 工大 学自动化学 院副教 授 ,硕士 生导 师,主 要研究方向 为现场 总线 技术及
应用、单片机及嵌入 式控 制系 统、过程控制 仪表 、集散控制系统,广 东广 州 510640;肖楚 海(1984—1,男,华南理工 大学 自动化
学院,控制理论与控制工程硕士研究生,主要研究方 向是现场总线及其应用,广东广州 510640
·53·