USB驱动程序的编写采用WDM驱动程序
基于WDM模型的USB驱动构建
N S A U i r nr ( D I E — B E T D vr T T T SDr eE ty I P R V R O J C r e- v N i
添 加一个设备 . 者从系统删 除设备 P P管理器使 或 n 用 安装的 I F文件查 找新设备 的正确驱动 程序 : N 而其
U B软 件 系 统 中 的 HC 和 U B 是 W idw 系 S D SD no s
D1 2
一
O J C e i O je =N L ; B E T dv e b t u L e e Die bet r e b c r r j =Di r j t vO c v O e;
D v r b e > r eU l d i O e一 v r e j t Di r n a =D 2 U l d 一 1 o 1_ n a ; 一 o < Dl r b c > r eE tni 一 A d e i r eO j t D vr x s n > d D v e=D 2 v e一 i e o c 1_
Pn Ad De ie P d vc ;
现
统 自带 的驱 动程 序 .它 主要 功能是 为客户 软件 访 问 U B IU B驱动程序接 口) S D (S 提供接 口 客 户软件位于
/ 置 各 个 I P 的 处 理 函 数 .这 3个 I , 设 R RP是 每 一 个 W D 驱 动 程 序 必 须 处 理 的 M
代 负责处理 特定 U B设备 驱动器 S 计 软件结构 的最高层 . 算 在 开 发 的驱 动 过 程 中并 不 需 要 了 解 HC 和 U B D S D的 机 内部操作 . 软件的各层都是 通过一个 消息的传递 来进
USB接口通信(驱动)的设计与实现
引言WDM是“Windows驱动程序模型”的简称,即“Windows Driver Model”。
实际上它是一系列集成在操作系统之中的常规系统服务集,用于简化硬件驱动程序的编写,并保证它们在Windows 98/Me/2000中的二进制兼容,WDM(Windows Driver Model)模型是从WinNT3.51和WinNT4的内核模式设备驱动程序发展而来的。
WDM主要的变化是增加了对即插即用、电源管理、Windows Management Interface(WMI)、设备接口的支持。
WDM模型的主要目标,是实现能够跨平台使用、更安全、更灵活、编制更简单的Windows 设备驱动程序。
WDM采用了“基于对象”的技术,建立了一个分层的驱动程序结构。
WDM 首先在Windows98中实现,在Windows2000中得到了进一步的完善,并在后续开发的Windows操作系统中都将存在,比如Windows Me和Windows XP。
微软在通过WDM 模型的引入,希望减轻设备驱动程序的开发难度和周期,逐渐规范设备驱动程序的开发,应该说,WDM将成为以后设备驱动程序的主流。
USB技术的全称是通用串行总线,是英文Universal Serial Bus的缩写。
它是一种应用在PC领域的新型接口技术,虽然USB2.0已经被广泛应用,但是初始的Windows 2000是支持USB1.0协议的,如果希望支持USB2.0协议,需要在微软网站上下载升级包。
实际上,对于键盘或者鼠标来说,传输的速度非常小,使用USB1.0或者是USB2.0的区别并不大。
闪存盘之类的存储设备,则需要重视传输速度。
USB1.0版本主要应用在鼠标,键盘等HID设备上,这就是本驱动程序中引用的头文件版本是USB1.0的原因。
本毕业设计的目的是希望对Windows 2000操作系统体系结构和驱动程序开发以及调试等方面的问题有一个比较深入的了解,对USB协议和USB体系有做一个比较深入的了解。
开发WDM型USB设备客户驱动程序
_ _
AI P
Coe a d l H nl s e
说明
关闭设备
COE LS
I RP M j
_ _ e i i Fl t e
从设备读取数据
向设 备发送数据
圉 2 S 设备逻辑结构圉 U B
I RP MJ WRT IE
R E C O T O ei I C nr O缓 冲控制 P MJD VIE C N R L D v eO ot lI c o
般 在驱 动程 序栈 最顶 层 , 它通 过 l O管理 器 与 Wi3 n2 应 用 程 序 联 系 , 同 时又 通 过 U B驱 动 程 序 接 口 S
设备驱动程序与应用程 序不 同 ,它没有 m i a n () Wi a () 或 n i 函数 , 向操作 系统暴露一个名 M n 它 叫 Di rn y的人 口函数 , re i vEa 当设备驱动程序被加载 时 ,操作 系统调用这个 人 口,这点 与动态 链接 库 ( L 很相似 。 r e n y D L) Di r t 除了做一些必要 的初始 vE r 化外 , 还初始化一些 Dsa h i t 例程人 口。 pc 当应用程序 用 Wi 2 A 1 n P 函数对设备进行 打开 / 3 关闭或读/ 写
(SD ) U B 1 与下层驱动程序通信 。 S U B客户驱动程序 的基本 任 务是 传递 控制 命令 与 读 写数 据 ,实 现
57
一
串lt 瞢萱 蕾
撇
・ i
--
1 i
— 趸 』 匿 霜疆露—— ’ 甄
》{
维普资讯
操作时 , 这些 A I P 都将触发各 自 对应的分发例程调 用。例如 调用 Cet i 打开设备时 , r el a Fe 操作系统最终
基于WDM模型USB驱动程序的设计与研究
般 有一些过 滤器 设备对 象( l rdvc bet ie ft e i ojc 。在 e )
WD 驱动程序模 型 中,大多数硬件设备一般只包含 M
两个驱动程序 。 中一个驱 动程序称为功 能驱动程序 , 其
接 口进入到 内核模式下的 I / O管理器, 由管理器根据用 户的相应需求, 通过使用 IP I R ( O请求包) 内核模 式的 / 与 WD 驱动程序通 信, 对驱动程序 的调用, M 完成 最终实
现应 用程序对硬件设备 的调用及控 制。图中左边 是一 个设备对象堆栈 。一个物理硬件可 以有 多个这样 的数 据 结构。处于堆栈最底层 的设备对象称为物理设备对 象(h s a D vc bet,或简称为 P P yi l eie jc c O ) DO。位于设备 对 象 堆 栈 中部 的对 象 称 为 功 能设 备对 象 (u c o a F nt nl i D vc bet eieO jc) ,或简称 F DO。在 F O 的上面和下面 D
3 S 驱动概述 U B
31 S . U B驱动程序分层结构 US 设备驱动程序是基于 WDM 结构之上 的。 B WDM 的分层 驱动 程序 结构在 U B设备上体现在驱动 S 程序分为 U B 总线驱动程序 和 US S B功 能驱 动程序两
I 6 经验 交流 E prne xhn e 8 xei cs cag e E
Ke r s r) d i e d l US d v r To l fDrv r t d o y wo d : 【M rv rmo e; B r e ; o so i i e S i u
1 引 言
US ,是 U iesl e aB s 用 串行总线) B nvra S r l u( i 通 的简
基于DriverStudio的WDM型USB设备驱动的开发
为 了一 种趋 势 , 在开 发 U B设备 的过 程 中 , S S UB
驱 动 的编写 是一项重 要 的技 术环 节 。本文介 绍 了如何 用 D i ru i 写 一 个 WD 型 U B r es d v t o编 M S
驱 动 程序 。
应 的 F O和 P O。WD D D M驱 动程 序采用 了分 成
式 。它源 于 Widw T的分 层 3 设备 驱动 no s N 2位
程序 模型 , 持更 多 的特性 , 能在 WI 8和 支 并 N9 WI2 0 N 0 0间实 现 源 代 码 级 兼 容 , 为 Wi o s 它 n w d
之后 PP管 理 器 参 照 注册 表 中 的信 息 载 人 与 n
中图分 类 号 : T 1 P32 文献标识码 : A 文 章 编 号 : 0 5 - 3 (0 10 - 3 -3 2 8 9 4 2 1 )20 20 0 2
通 用 串行 总线 U B( n eslSr l u) S U i ra ei s v aB 是 一 种基 于令牌 的、 高速 的 串行 总线标 准 , 是微 机领 域里 的新型接 口技术 。它解 决 了串行设 备 和并 行设 备 连 接 的复杂 性 , 大 简化 了计 算 机 大 和外设 的连 接 过 程 , 安 装 简 单 , 持 即 插 即 它 支 用, 占用资源 少 , 独立 供 电同时具 有较 高 的传 输
第3卷 1 21年 01
第 2期 2月 核 电源自 学与探 测技术 Nu l a e to i s & De e t n T c n lg ce r Elcr n c tc i e h o o y o
V0. No 2 131 .
F b 2 1 e. 0 1
基于WDM模型的USB设备驱动程序开发
通 用串 行总 线 US ( i r l ea B s是 C m a、B 等 B Un es rl u) v a S i o pqIM
P C大 厂商 联合 开发 的一种 新型 的 、 于令 牌 的 、 速 的串 行 总线 基 高
标准 。它具 有许 多其 他 总 线 无 法 比拟 的 优 点 。由 于 其 能够 以较
动程 序模 式 。它 源于 Wi o s T 的 分层 3 设备 驱 动 程序 模 n w d N 2位
型, 支持更多的特性 , 如即插即用( n , l n l )电源管理 P P Pu adP y 、 g a
( M。 o e Maae n) Wi o s管 理 诊 断 ( P P w T ngmet、 n w d WMI Wi o s , n w d
前的 U B20协议 速 度高 达 40 p。c S . 8 Mbs .易 于扩 展 。通 过 使 用
WI 20 N 0 0间实现源 代码 级 兼容 , 为 Wi o s 它 n w 操作 系统的 设备 驱 d
动 程序 提供 了统 一的框 架 , Wi o s 台上 , M 将 成 为主流 在 n w平 d WD
象( uc0aD v eO j tF O 。在 FX 的上 面 和下 面 还会 有 F ntnl ei b c,1 ) i c e ) I)
一
些 过滤 器设 备 对象 ( ie D v e i t。位 于 F O上 面 的 过 Flr i e ) t c Ob e e D
Maae I tls u ettn 和 N 事 件 。 并 能 在 WI 9 ngI n nt m nao ) T r e i T N 8和
U B是把低 速 或 中 速 外 部 设 备 连 接 到 计 算 用 方 便 。支 持 热 拔插 , 涉 及 中 断 请 求 a 不 (R ) I Q 冲突 等 问题 , 真正 做到 。 能 即插 即用 ’ b 。 .传输 速 率 高 。目
基于WDM的USB驱动程序研究与设计
WD M模 型采 用 了 图 1 示 的层 次 结构 。 所
程序模 型 , Mi oo 力 推 的全 新 驱 动 程 序 模 式 , 是 c sf r t 旨在 通过 提供 一种 灵 活 的 方 式来 简化 驱 动 程 序 的 开发 , 在实 现对 新硬 件支 持 的基础 上减 少并 降低 所
动程 序管理计 算 机与 P O( h s a D vc bet D P yi l ei O jc) c e
般在 驱 动程序 栈最 顶 层 , 通 过 1 理 器 与应 用 它 0管 程序 联 系 , 时 又 通 过 U B驱 动 程 序 接 口 ( S — 同 S U B D ) 下 层 驱 动 程 序 通 信 。U B客 户 驱 动 程 序 的 I与 S 基 本 任务是 使用 各种 IC L传递 包 含 控 制命 令 与 OT 读 写数 据 的 U B, 现应 用 程 序 对 底 层 硬 件 的 操 R 实
WD Widw r e o e) 即 Wi3 M( n o sD i rM d 1 , v n 2驱 动
序 ( u ci r e , 通 常 所 说 的硬 件 设 备 驱 动 FntnD i ) 即 o v
程序 , 责初 始化 IO操 作 , 理 IO操作 完成 时 负 / 处 /
产生 的 中断事 件 , 并为 用户 提供 一种 适 当的设 备控 制方 式 ; 另一 驱动 程序 为 总 线驱 动 程 序 ( U r . B SD i v e) 负责 管理 硬件 与计 算机 的连 接 。 r,
关键 词
中 图分 类 号
T 32 P 1
1 引言
U B U i ra S r l u ) 即通 用 串行 总 线 , S ( nv sl ei s , e aB 是 为实 现计算 机 和 通信 的集 成 而 提 出的 一 种用 于 扩充 P C体 系结 构 的 工业 标 准 。它提 供 一 种快 速 、 双 向 、 价并 支持 即插 即用 ( n ) 廉 P P 的串行 接 口。 随 着计算 机及 通信 技术 的不 断 发展 及 U B设 S 备 的迅 速普及 和 日益增 多 , 计 和开 发相关 驱 动程 设 序 的需求 也越 来越 大 , 而且 驱动程 序 质量 的高 低不 仅直 接影 响 到 U B设 备 性 能 的发 挥 , 关 系 到整 S 还 个 系统 的稳 定 。 因此 设 备 驱 动 程 序 的设 计 研 究 显 得尤 其重 要 。
基于WDM的USB键盘驱动程序开发
_
开发 U B接 口驱动程序 , S 实现 了 U B键盘 驱动程序 的开 发、 S
安装 及测试。
1 WDM 驱动 程序模 型
在 WD M驱动程序模型 中, 每个 硬件设备 包括两个 驱动 程序 。一个驱动程序是硬件设备驱动程序 , 也称 功能驱动程 序, 主要 为用户 提供适合 的控 制方式。它了解硬 件工作 的所 有细节 , 责初 始化 IO操作 , 理 IO操 作 完成时所 带来 负 / 处 / 的 中断事件 。通常 由两 个分离 的执行 文件 组成 。一 个文 件 是类驱动程 序 , 了解 如何 处 理操 作 系 统使 用 的 WD 协 它 M 议, 以及 如何管 理整个设备 的基本 特征 】 。另一个文 件称 为 微小驱动程序 , 它包含类 驱动用于管理设备实例的厂商专 有 特征例程 。类驱动程序 和微小 驱动程 序合在 一起 才成 为一 个完整 的功 能驱 动程序 。 另一个驱 动程序称 为总 线( U ) B S 驱动程序 , 负责管理 硬
件与计算机 的连接 。
一
O eB lf cp O eB lt ep包 含 O e B lt fc p n y .p : pn yn .p n f pn yn r e函 ea
数 , pn yne ae函数用 G I O eB ltr c f U D接 口方式 与 WD 进行 通 M 信。
Te t s
山西 电子 技术 21 0 2年 第 3期
文章 编号 :64 47 (0 2 0 -0 2 0 17 .5 8 2 1 )30 6 -2
软 件 技 术
基 于 WD 的 U B键 盘 驱动 程 序 开发 M S
开发WDM型USB设备驱动程序
开发WDM型USB设备驱动程序USB设备驱动程序开发⼯具开发USB设备驱动程序需要专门的开发⼯具,⽬前应⽤⼴泛的⼯具主要有两⼤类。
⼀类是Microsoft公司提供的Windows DDK(Device Driver Kit)。
它有Windows 98 DDK 和Windows 2000 DDK两个版本。
Windows 98 DDK能够开发Windows 95/98/Me/NT下的VxD、KMD和WDM驱动程序。
Windows 2000 DDK 能够开发Windows 98/Me/NT/2000下的KMD和WDM驱动程序。
由于DDK基于汇编语⾔的编程⽅式和内核模式的调⽤,对没有深厚的OS原理和编程⽔平的⼈员来说,任务相当艰巨。
另⼀类是NuMega公司提供的DriverStudio,它是⼀个⼤的开发⼯具包,包含VtoolsD、SoftICE和DriverWorks等开发⼯具。
VtoolsD开发包提供了对VxD编程的C/C++类库⽀持,利⽤VtoolsD中的QuickVxD⼯具可以快速⽣成VxD的C/C++代码框架,开发者可以在此基础上根据各⾃的需要添加⾃⼰的代码。
DriverWorks⽤于开发KMD和WDM驱动程序,并且对DDK函数进⾏了类的封装,从⽽为开发Windows NT、Windows 2000和Widnwos98 WDM设备驱动程序提供了⼀个⾃动化的⽅法。
DriverWorks,提供了VC++下的开发向导Driver Wizard,按照它的提⽰可以迅速地⽣成驱动程序的框架。
这个框架结构提供可以正确执⾏WDM动态环境中IRP的请求,⽽且,也包含⽤于简化系统提供的标准类驱动程序(如HID、流)和总线驱动程序(如PCI和USB)接⼝的类等。
总之,利⽤DriverWorks开发WDM驱动程序,可以⼤⼤简化开发⼈员的⼯作量、缩短开发周期以及降低开发驱动程序的难度。
[1]⽤DriverWorks开发WDM型USB设备驱动程序要想使⽤DriverWorks,必须先安装以下软件:DriverStudio2.5,VisualStudio6.0,以及Windows2000DDK。
基于WDM的USB驱动程序研究与设计
基于WDM的USB驱动程序研究与设计牛继来,王海霞( 哈尔滨商业大学 计算机与信息工程学院, 哈尔滨 150028)摘要:USB设备驱动程序的开发是USB设备开发的一个重要组成部分。
详细介绍了WDM 及USB的相关特点和层次结构,讨论了基于WDM模式下的USB驱动程序的基本原理,并对部分关键例程进行了分析。
关键字:USB设备,WDM,驱动程序,DriverStudio中图分类号:TP302.7 文献标识码:A Study and design of the USB driver based on WDMNIU Ji-Lai,WANG Hai-Xia(School of Computer and Information Engineering, Harbin University of Commerce, Harbin 150028, China) Abstract:The development of USB driver is an important part of the development of USB device.Introduce the relative characteristics and structure of WDM and USBparticularly; discuss the basic principle of USB driver based on WDM, and makeanalysis for partial key process.Key words:USB device,WDM,Driver,DriverStudio0 引言随着计算机及通信技术的不断发展,对高速、实时数据传输的需求越来越高,开发高速、高集成的总线接口设备也就成为必然趋势。
USB(Universal Serial Bus),即通用串行总线,是为实现计算机和通信的集成而提出的一种用于扩充PC体系结构的工业标准。
基于WDM实现USB与PC机的接口驱动编程
基于WDM实现USB与PC机的接口驱动编程
路向阳;黄乡生;金征
【期刊名称】《微计算机信息》
【年(卷),期】2006(000)08S
【摘要】在Windows 2000/XP中,不允许用户直接访问硬件,采用WDM驱动编程可以实现通过软件进行对硬件访问。
WDM在驱动编程中的应用越来越广泛,本文通过一个USB与PC机接口编程实例介绍WDM编程的方法与应用。
【总页数】3页(P82-84)
【作者】路向阳;黄乡生;金征
【作者单位】东华理工学院
【正文语种】中文
【中图分类】TP334.7
【相关文献】
1.基于USB接口终端的PC机互联与接口扩展 [J], 赵新
2.基于WDM实现USB与PC机的接口驱动编程 [J], 路向阳;黄乡生;金征
3.基于CH375多通道USB接口与PC机通信的实现 [J], 杨全玖;张大伟;吕宗芳;赵书俊;吕运朋
4.基于CH375多通道USB接口与PC机通信的实现 [J], 杨全玖;张大伟;吕宗芳;赵书俊;吕运朋
5.基于USB总线的FPGA与PC机接口通信的实现 [J], 张树春; 刘成安
因版权原因,仅展示原文概要,查看原文内容请购买。
基于Windows的USB接口WDM驱动研究和应用
基于Windows的USB接口WDM驱动研究和应用
摘要
w.mdows2000/)(PⅣWindows操作系 统下对硬件设备的操作,必须通过在WDM模型下设计的驱动程序这个软接口。随着USB2.0 的发展,运用USB这种具有热插拔,高速率等优点的接口设备已开始流行。Windows驱动 程序模型WDM(Windows Driver Model)是一种全新的设备驱动程序模式,可以运行于 windows98/2000/)(P等多种操作系统平台。WDM采用模块化、分层次类型的驱动程序结 构。作为一种符合WDM的驱动程序,USB驱动程序分为USB总线驱动程序和USB功能 驱动程序两个层次。USB总线驱动程序负责控制实际的硬件,实现与底层的通信。USB功 能驱动程序由设备开发者编写,位于USB总线驱动程序的上层,通过向USB总线驱动程 序发送USB请求包,来实现对USB设备信息的发送或接收。本文以运用EZ—USB芯片的 卫星视频接收设备为例,论述了如何运用DDK工具包,开发USB设备WDM驱动程序。
Driver),也称为VxD。虚拟设备驱动程序,原来的设计目标是为了支持在Windows平台下
的设备,它作为动态连接库(DLL)链接到操作系统里,工作在保护模式下(Rin90)。VxD 解决了那些常规应用程序不能完成的工作,比如直接硬件的读写,也可以说,使用VxD是 扩展操作系统内核的一种方法。VxD最初的编写采用的是Intel汇编语言,后来随着VtoolsD
(保密的论文在解密后应遵循此规定)
作者签名:
日
期:
导师签名:
日
期:
南京信息工程大学硕士学位论文
基于Windows的USB接121 WDM驱动研究和应用
第一章绪论
基于WDM的USB设备驱动程序开发技术研究
日n ei. 盯. 。】 ,c 口 . ed K好侧。 油 . I ,B T 坦 r 飞M P R 砒 口1f ,双 ! e
由于Wno X x 戒I / 操作系统不允许用户程序直接访问硬件设备, 实现对硬件设备的访间和控 i d 旧P 为了 制, 必须通过操作系统所认可的驱动程序对硬件设备实现间接访问和控制。也就是说在 。 dw2刃 即 n 日 / o 以 中, 设备驱动程序必须根据 诫 d切 驱动程序模型(d一wn21 eM , n2 n(. 1 wm i3 h r 司eW3 驱动程序模型) 加 i 设计。 w M是 从 Wn。8 8 始, D 微软 i d侧9 开 推出的 一个新的驱动程序框架, 它可以在不修改源代码的情况下经过重新 编译后在非 Ie平台 行 , t nl 上运 因而是一个跨平台的驱动程序模型。 M驱动 WD 程序采用了 分层的结构体系, 并在操作系 提供了一些封装了 统中 实现细节的类驱动程序和总线驱动程序, 可以极大的简化驱动程序的开 发。更重要的是,D w M是一种通用的骆动模式, 提供了 包括 U 、 E 3 和 HD B EI s I E 鲜 I 等在内的一系列驱动程 序类。因此,D w M模型被广泛采用。本文首先分折了wD 的工作原理和机制, M 并结合实例着重探讨了 峨, 工 M设备驱动程序的设计和实现方法。 I U 系统组成 B s U 系统主要由主控制器、朋 H 和 U 外设组成的 B s u u b B s 树状拓扑结构。当UB设备连接到主机时, s 主 机必须根据 U 设备的结构配置 U 设备。主控制器与其他F B s B s O设备一样直接连接到系统总 线上。操作 系统与主控制器通信使用 F O口或内 存寄存器, 普通的中断信号, 通过 操作系统可以接受主控制器的事件通 知。每个u 设备内有一个或多个逻辑连接点, B s 称为端点 每个端点指定下面的传输类型之一: 控制传输、 中断传输、 批量传输和同 步传输。 所有设备都有一个端点0用于主机配 控制设备。主机和设备的端点 , 置和 之间的连接称为管道, 一个设备对主 机表现为 一组合 适的端点, 一组相关的端点称为一个接口, 接口指出软 件应该怎样访问硬件。 设备可以有多组 接口, 每一组称为一个配置, 一次只能有一个配置是活动的, 大多数
基于WDM的USB驱动程序设计
基于WDM的USB驱动程序设计1 引言USB,全称是Universal Serial Bus(通用串行总线),它是由Compaq、Microsoft、Intel、IBM等七家公司共同开发的,旨在解决日益增加的PC外设与有限的主板插槽和端口之间的矛盾而制定的一种串行通信的标准,自1995年在Comdex上亮相以来已广泛地为各PC厂家支持。
现在市场上几乎所有的PC机器都配备了USB接口,其优点是:•速度快。
USB有高速和低速两种方式,主模式为高速模式,速率为12Mbps;另外,为了适应一些不需要很大吞吐量和很高实时性的设备,如鼠标等,USB还提供低速方式,速率为1.5Mbps。
•设备安装和配置容易。
安装USB设备不必再打开机箱,加减己安装过的设备完全不用关闭计算机。
所有USB设备支持热插拔,系统对其进行自动配置,彻底抛弃了过去的跳线和拨码开关设置。
•易于扩展。
通过使用Hub扩展可连接多达127个外设。
标准USB电缆长度为3m(5m低速)。
通过Hub或中继器可以使外设距离达到30m。
•能够采用总线供电。
USB总线提供最大达5V电压和500mA电流。
•使用灵活。
USB共有4种传输模式:控制传输(control)、同步传输(synchronization)、中断传输(interrupt)、批量传输(bulk),以适应不同设备的需要。
2 WDM驱动程序的介绍WDM(Windows Driver Model)是微软提出的一种全新的设备驱动程序模型。
它是在Windows NT内核驱动程序模型(Kernel_model Driver Mode)的基础上发展起来的,增加了对即插即用(PnP)、高级电源管理(Power Management)、Windows 管理接口(WMI)的支持。
更重要的是,WDM是一种通用的驱动模式,提供了包括USB、IEEE1394和HID等在内的一系列驱动程序类。
在Windows 98和Windows 2000中,WDM驱动程序均可正常使用。
基于WDM的USB驱动程序设计与实现
第 7卷 第 2 期 2
20 年 l 月 07 1
科
学
技
术
与
工
程
V l7 No 2 o _ .2
No .2 0 v 07
17 —8 9 2 0 )2 5 3 —5 6 11 1 ( 07 2 —9 50
S in e T c n lg n n ie rn ce c e h oo y a d E gn e g i
⑥
2 0 S i eh E gg 0 7 c.T c . n n.
基于 WD 的 U B驱 动程 序设计与实现 M S
周 冲 刘 镇
( 江苏科 技大学 电子信息学 院, 镇江 2 2 0 ) 10 3
摘
要 随着 U B应用 的 日益广泛 , S 作为其重要组成部 分 的驱 动程 序开发 也受 到 了更 多的关注 。对 WD 驱 动程序模 型和 M
第一作者简介 : 周
冲( 9 3 ) 男 , 苏南京人 , 18 一 , 江 硕士研 究生 ,
研究方向 : 计算 机网络 。E m i zotm @1 6 cr。 — al huo my 2 .o : n
通信作者简介 : 刘
镇 (9 1 ) 男 , 16 一 , 江苏镇江人 , 教授 , 副 硕
U B分层结构 的作 了详细介绍 , 以E S S 并 ZU B芯片 U B设备 为例, S 详细分 析 了如何利 用 D i r rs 具快速 开 发一个 基于 r eWo 工 v k WD 的 U B驱动程序 , M S 以及 驱动程序 的调 试及加载 , 以此来加深对 U B驱动程序开发过程 的理解 。 S 关键词 WD M U B 驱 动程序开发 S D i r rs r eWok v
USB.设备的WDM.驱动程序设计
USB设备的WDM驱动程序设计卡拉河海大学计算机及信息工程学院niekele2010@yahoo.fr摘要:本文介绍了WDM驱动模型,并且针对USB总线给出了USB设备的WDM驱动程序的设计方法。
关键词: WDM、USB总线、驱动程序一, W DM驱动模型介绍为了方便用户进行WINDOWS平台的驱动程序开发,Microsoft于1996年宣布了一种适用于当前广泛使用的WIN2000及WINDOWS XP操作系统的Win32驱动程序模型。
这个驱动模型就是WDM(Windows Driver Model)——WINDOWS驱动模型。
WDM驱动具有以下几个特点。
详见参考文献[1]第一章。
1)可移植性好,采用WDM模型的设备驱动程序在不同的Windows操作系统上基本上是二进制兼容的,而在不同的CPU平台Windows操作系统上是源代码兼容的。
2)分层结构。
WDM模型使用了如图1的层次结构。
图中左边是一个设备对象堆栈。
设备对象是系统为帮助软件管理硬件而创建的数据结构。
一个物理硬件可以有多个这样的数据结构。
处于堆栈最底层的设备对象称为物理设备对象(physical device object),或简称为PDO。
在设备对象堆栈的中间某处有一个对象称为功能设备对象(functional device object),或简称FDO。
在FDO的上面和下面还会有一些过滤器设备对象(filter device object)。
位于FDO上面的过滤器设备对象称为上层过滤器,位于FDO下面(但仍在PDO 之上)的过滤器设备对象称为下层过滤器。
3)可配置性好。
WDM驱动程序通过其底层的类(总线)驱动程序枚举和访问硬件资源,使得设备的配置变得相对简单和容易。
而且WDM驱动程序还可以支持WMI(Windows Management Instrumentation),通过WMI,用户可以控制驱动程序的某些行为和属性。
4)支持即插即用和电源管理。
基于WDM的USB设备功能驱动程序的设计与实现
基于WDM的USB设备功能驱动程序的设计与实现蔡旸【期刊名称】《软件》【年(卷),期】2014(000)002【摘要】With the popularity of USB technology, more and more manufacturers design and develop their own USB devices. This paper first gives an idea of the driver, the USB communication protocol introduced, then combined with the Windows Driver Model WDM, designed USB device function driver, gives specific examples, driven by the realization of the main functions-use USB bus transfer and data collection. <br> This paper Select introducing WINDDK and VC++in DriverStudio tools to develop USB driver, which will be designed to the USB driver into USB entrance, USB initialization and USB device input/output (I/O) and other functional modules, with a clear structure, easy to transplant etc., has a good application value in the design of the USB driver. So that developers can develop simple in user mode drivers, rapid development is conducive to future external device drivers.%随着USB技术的普及,越来越多的厂商设计开发自己的USB设备。
开发WDM型的USB设备驱动程序
开发WDM型的USB设备驱动程序作者:鲜征征杨皓发布时间:2004-11-21 12:57:25 摘要: 文章介绍了USB和WDM驱动程序的基本概念和结构,结合实例阐述了用NuMega 公司的DriverStudio工具包开发Windows 2000环境下WDM USB设备驱动程序的方法,并给出关键例程主要代码。
关键词:USB WDM 设备驱动程序DriverStudio引言随着微机技术水平的日益提高,传统的计算接口已经不能满足当前计算机高速发展的需求,计算机业界迫切需要新的通用型、高速总线接口。
通用外设接口标准USB应运而生。
USB,全称为通用串行总线(Universal Serial Bus),它是Compaq、IBM等PC大厂商联合开发的一种新型的、基于令牌的、高速的串行总线标准。
开发者要设计USB设备接口,就必须首先了解USB协议,在此基础上有针对性的开发USB设备驱动程序。
USB简介在众多的PC机总线中,USB以其突出的优点独树一帜:① 使用方便。
支持热拔插,不涉及中断请求(IRQ)冲突等问题,能真正做到“即插即用”。
②传输速率高。
目前的USB 2.0协议速度高达480Mbps 。
③易于扩展。
通过使用Hub扩展可连接多达127个外设。
④使用灵活。
USB共有4种传输模式:控制(control)、同步(Synchronization)、中断(interrupt)、批量(bulk),以适应不同设备的需要。
⑤独立供电。
正由于上述优点,开发USB接口的设备已成为一种发展趋势。
一个完整的USB系统包括主机系统和USB 设备。
所有的传输事务都是由主机发起的。
一个主机系统又可以分为以下几个层次结构,如图1所示:图1 USB 互连通信模型USB总线接口包括USB主控制器和根集线器,其中USB主控制器负责处理主机与设备之间电气和协议层的互连,根集线器提供USB设备连接点。
USB系统使用USB主控制器来管理主机和USB设备之间的数据传输,另外它也负责管理USB资源,如带宽等。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
U S B驱动程序的编写采用W D M驱动程序Document serial number【UU89WT-UU98YT-UU8CB-UUUT-UUT108】USB驱动程序的编写采用WDM 驱动程序。
WDM 驱动程序是一些例程的集合,它们被动地存在,等待主机系统软件(PnP 管理器、I/O 管理器、电源管理器等)来调用或激活它们。
具体驱动程序不同,其所包含的例程也不同。
一个WDM 驱动程序的基本组成包括以下5个例程:(1)驱动程序入口例程:处理驱动程序的初始化。
(2)即插即用例程:处理PnP 设备的添加、删除和停止。
(3)分发例程:处理用户应用程序发出的各种 I/O 请求。
(4)电源管理例程:处理电源管理请求。
(5)卸载例程:处理驱动程序的卸载。
包含文件:, ,, , , makefile,sources)在文件中,包含了上述五个例程:中定义了各种数据结构还有各种IOCTL控制码,用于不同数据的读写。
中实现了各种驱动例程。
包含了上述五个所说例程外还包含了其他例程,课程从下面的驱动程序入口例程得出一些信息。
驱动程序入口例程:NTSTATUSDriverEntry(IN PDRIVER_OBJECT DriverObject,IN PUNICODE_STRING RegistryPath){NTSTATUS ntStatus = STATUS_SUCCESS;PDEVICE_OBJECT deviceObject = NULL;DriverObject->MajorFunction[IRP_MJ_CREATE] = Ezusb_Create; DriverObject->MajorFunction[IRP_MJ_CLOSE] = Ezusb_Close; ources. If you want to add a new source # file to thiscomponent. This file merely indirects to the real make file # that is shared by all thedriver components of the Windows NT DDK # !INCLUDE $(NTMAKEENV) 不要编辑这个文件。
事实上每个WDM程序所需要的makefile的内容都是一样的,只需要简单地copy一个makefile到新的项目中就可以了2、SourcesTARGETNAME= TARGETTYPE=DRIVER DRIVERTYPE=WDM TARGETPATH=lib INCLUDES=$(BASEDIR)inc; $(BASEDIR)incddk; TARGETLIBS=$(BASEDIR)lib*SOURCES= \这个文件指定了驱动程序目标名是,是一个WDM驱动程序,生成的文件存放在lib目录中。
值得注意的是,“=”前后不能有空格,否则编译的时候会出错。
开始编译:“开始”->“程序”->“Development Kits”->“Windows 2000 DDK”->“Checked Build Environment”屏幕将显示:(有“回车”的那行是需要读者你亲自打进去的)New or updated MSVC detected. Updating DDK envi ronment…. Setting environment for usingMicrosoft Visual C++ tools. Starting dirs creation…Completed. D:NTDDK>cd jtag_usb (回车)D:HelloWDM>build (回车)如果源代码没有错误的话,生成的将存放在lib目录中。
安装驱动程序:利用INF文件实现驱动的安装。
我们一般是采用INF文件,inf文件如下所示::[Version] Signature = "$CHICAGO$" Class = USB DriverVer = 11/11/2007,1.00.00 ClassGUID ={36FC9E60-C465-11CF-40000} provider = %ECICT% [SourceDisksNames] 1=%CYUSB_INSTALL%,,, [SourceDisksFiles] = 1 [Manufacturer] %MfgName%=ECICT[Ecict] %VID_0547&%=CyUsb, USB\VID_0547&PID_1002 [DestinationDirs]= 10,System32\Drivers [] AddReg= []CopyFiles= AddReg= [ AddReg= Addservice = CyUsb, 0x00000002, [] DisplayName = %% ServiceType = 1 ; SERVICE_KERNEL_DRIVER StartType = 3 ;SERVICE_DEMAND_START ErrorControl = 1 ; SERVICE_ERROR_NORMAL ServiceBinary = %10%\System32\Drivers\ LoadOrderGroup = Base [] HKR,,DevLoader,,*ntkern HKR,,NTMPDriver,, [ [ ;---------------------------------------------------------------; [Strings] CYUSB_INSTALL = "Your Device Installation Disk" ECICT = "ECICT" MfgName ="ECICT" VID_0547& = "USB_Jtag Controler" ;------------Replace GUID belowwith custom GUID-------------; = "{07BBF83D-D0B2-4915-870C-FC5B0B049DFC}" 准备好这个文件后,插入控制器,然后跳出设备驱动安装的对话框。
我想从列表选择硬件”->“其它设备”->“从磁盘安装”,选择所在的路径,然后安装。
当安装完成后,系统就会添加上你写好的驱动程序了。
(可以在“设备管理器”中查看到),这个驱动程序就投入使用。
驱动程序与应用程序的接口对用户来说,所用的应用程序都通过I/O控制来访问设备驱动程序。
用户的应用程序首先通过调用Win32函数CreateFile()来取得访问设备驱动的句柄。
然后,用户程序使用Win32函数DeviceIoControl()来提交I/O控制码,并为 CreateFile 函数返回的设备句柄设置I/O缓冲区。
下面的例程验证所获取的EZ-USB设备的句柄:HANDLE DeviceHandle;DeviceH andle=CreateFile( “\\\\.\\ezusb-0”,GENERIC_WRITE,FILE_SHARE_WRITE,NULL,OPEN_EXISTING,0,NULL);随后,用户的应用程序通过调用Win32函数DeviceIoControl()来向设备驱动程序发送请求。
下面显示的是DeviceIoControl()函数的原型。
EZ-USB设备驱动程序IOCTL使用相同的函数参数名。
BOOL DeviceIoControl() {HANDLEhDevice, //外设句柄DWORDdwIoControlCode, //I/O操作控制代码LPVOIDlpInBuffer, //输入缓冲区指针DWORDnInBufferSize, //输入缓冲区大小LPVOIDlpOutBufferSize, //输出缓冲区指针DWORDnOutBufferSize, //输出缓冲区大小LPDWORDlpBytesReturned, //实际返回的字节数LPOVRLAPPERlpOverLapper //用于异步操作的重叠指针}其中I/O操作控制代码是在USB设备驱动程序中定义和实施实际数据操作的,如在驱动程序中定义的:IOCTL_EZUSB_GET_DEVICE_DESCRIPTOR, IOCTL_EZUSB_BULK_READ, IOCTL_EZUSB_BULK_WRITE 等控制代码。
例如:(1)通过红色标注的ioctl控制码写入一个地址值。
//******************************************************* VENDOR_OR_CLASS_REQUEST_CONTROL myRequest; //在中定义的数据结构ULONG nBytes;WORD pvBuffer[1]; //temp for data and addresspvBuffer[0]=Addr; //地址//------------写地址--------------------------=0x00;//0-HOST T0 DEVICE,1-DEVICE TO HOST=2;//1-class,2-vendor=0;//0-device,1-interface,2-endpoint,3-ot her=0xb4;=0x00;//在这里不起作用=0x00;DeviceIoControl (hDevice,IOCTL_EZUSB_VENDOR_OR_CLASS_REQUEST, //ioctl控制码&myRequest, sizeof(VENDOR_OR_CLASS_REQUEST_CONTROL),pvBuffer,2,&nBytes,**********************************************************//(2)大块数据的写//******************************************************* BULK_TRANSFER_CONTROL bulkControl; // pipe type selected PWORD pData=0; //通道0用于写,通道1用于读。
pData=(PWORD)malloc(lenth*2);DeviceIoControl (hDevice,IOCTL_EZUSB_BULK_WRITE, //数据块的写IOCTL码&bulkControl,sizeof(BULK_TRANSFER_CONTROL),pData,length*2,&nBytes,**********************************************************//(2)大块数据的读//******************************************************* BULK_TRANSFER_CONTROL bulkControl; // pipe type selected PWORD pData=1; //通道0用于写,通道1用于读。