USB WDM 设备驱动程序

合集下载

开发WDM型USB设备客户驱动程序

开发WDM型USB设备客户驱动程序
I RP MJ
_ _
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 操作系统最终

USB驱动程序的编写采用WDM驱动程序

USB驱动程序的编写采用WDM驱动程序

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设备驱动程序的设计和实现

WDM设备驱动程序的设计和实现
Wi w 2 0 /P中,设备驱动程序将根 据 Widw 驱动程序模 型进行 n s0 0 o d X nos 设计。 D W M提供了一种灵活 的方式简化驱动程序的开发 , 在支持新硬件 的基础上, 减少 了必须开发的驱动程序 数量 , 并降低 了其复杂性。
1 WD M
11 WD 概 念 . M
维普资讯
S IT C F R TO E E O M N C — E HI O MA I N D V L P E T&E O O Y N C NM
文章编号:0 5 6 3 (0 7 0 - 2 2 0 10 - 0 3 2 0 )5 0 0 — 2
1 WD . 2 M的工作原理 WD M是一种分层化 的驱动程序模 型 , 在这种模 型中 , 驱动程序的层
个 高层 的驱动程序必须具有低层 驱动程序绝 大多数I P M _ X R _ JX X
和堆栈一起 工作 , 处理 I / O请求 。Wi o so 0 n w 2 o ⅨP的 I d / O子系统是基 于 对 象 的,对 WD 而言 ,最 重要 的对象 是驱 动程序对 象 和设备 对象 。 M
20 年 07
第 l卷 第 5 7 期
WD 设备驱 动程序 的设计和 实现 M
秦 为 郭志平 吕彩琴 周力农 , , ,
( . 大学机 电工程学院 , 1中北 山西太原 ,30 12内蒙古一机集团科研所二室 , 0 0 5 ;. 内蒙古包头 , 10 2 04 3 ) 摘 要: 设备 驱动程序是硬件设备连接 到计算机 系统的软件接 口。分析 了 WD 的工 M
Wid w 20 / P的 I no 80 0X / O子系统也是一 个包驱动系统 , 在该 系统中 , 每个
例 程人 口, 若设计 一个中间层驱动程序 , 首先应确认下层驱 动程序所 管

WDM驱动程序简介

WDM驱动程序简介
可移植性:源代码级可移植 可配置性:避免对硬件特征和系统设置作绝对假
设;避免在代码中直接引用硬件
可抢先性和可中断性 多处理器安全 基于对象 数据包驱动 异步
Windows XP 系统结构
WDM驱动程序模型
WDM模型主要包含以下内容:
1、描述了设备驱动程序的标准结构和应该完成的主 要功能。
一个应用程序打开了设备因此系统发送给驱动另一个irp处理函数进行了少量的操作之后返回???操作系统与驱动的交互过程?应用程序尝试读取或者写入一些数据因此系统发送一个irp处理例程将irp放入一个队列之后返回
设备驱动程序设计
第二讲
WDM驱动程序简介
Windows XP 驱动程序分类
内核模式驱动程序的属性
迷你驱动:包含在类驱动中,用于管理设备实例的厂商专有
特征例程。类驱动和迷你驱动合在一起才构成一个完整的 功能驱动程序。
IRP包
WDM驱动的层次结构
上层过滤器驱动程序 功能驱动程序
下层过滤器驱动程序 总线驱动程序
驱动程序如何工作
驱动程序是一个收集让操作系统调用的用来执行各 种涉及到硬件操作的子程序的容器。
某些I/O操作引发设备中断,中断服务例程做一些 很少的操作,然后请求一个DPC,之后返回。
DPC例程运行了,它可能要读回数据,或者继续下 一次的写操作等,然后开始下一个排在队列中的 IRP,之后DPC例程返回系统。
随着时间变化,在这期间系统会发送各种IRP给驱 动程序,驱动程序进行相应的处理。
操作系统与驱动的交互过程
系统运行时设备插入或者系统重新启动发现了某个 设备,系统就会装载可执行的驱动程序到内存中, 并且调用其DriverEntry例程。DriveEntry做了一些 初始化操作之后返回。

基于WDM模型USB驱动程序的设计与研究

基于WDM模型USB驱动程序的设计与研究
① 收稿时间:0 10—6收到修改稿时间:010 .3 2 1-32; 2 1.42
般 有一些过 滤器 设备对 象( 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 通 的简

基于WDM模型的USB设备驱动程序开发

基于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驱动程序研究与设计

基于WDM的USB驱动程序研究与设计
2 2 WD 分层 工作 原理 . M
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键盘驱动程序开发

基于WDM的USB键盘驱动程序开发
T s U b b i 测试 应用程序工程 e t s df s k l e
_
开发 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设备驱动程序

开发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设备功能驱动程序的设计与实现

基于WDM的USB设备功能驱动程序的设计与实现蔡旸【摘要】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驱动程序研究与设计

基于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体系结构的工业标准。

基于Windows的USB接口WDM驱动研究和应用

基于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驱动程序

WDM驱动程序

建立驱动开发环境建立驱动开发环境,所需的软件为DriverStudio3.2 + DDK2003 + VC。

DDK建议使用最新的DDK2003,因为可以减少很多麻烦。

使用DDK2600的话,很多人反映会碰到一个编译出错的问题。

这是我使用DDK2600时碰到的同样的问题,然后在EDNchina网站上发的贴:--------------我在用DriverStudio开发驱动时,碰到了这样的问题:--------------------Configuration: KFileWrite - Win32Free--------------------d:\DESIGN~1\DRIVER~1\DRIVER~4\include\kcsq.h(35): Could not find the file csq.h.d:\DESIGN~1\DRIVER~1\DRIVER~4\include\kcsq.h(35): Could not find the file csq.h.Linking with DDK linker...LINK : fatal error LNK1181: cannot open input file 'ntstrsafe.lib' Error executing link.exe.KFileWrite.sys - 1 error(s), 0 warning(s)关键是这个ntstrsafe.lib.我在网上一搜,碰到这种问题的人还不少呢,虽然解决方法是很多,但都差不了几个字,要么从DDK2003那拷一个,或者是在project-->setting-->link下去掉对ntstrsafe.lib的链接,也不知他们自己到底有没有试,我在project-->setting-->link下压根就没看到ntstrsafe.lib几个字...很郁闷啊--------------网上所说的解决方法是对的,但没有说清楚,使人无法一时明白。

基于WDM的USB设备驱动程序开发技术研究

基于WDM的USB设备驱动程序开发技术研究
{ A U . 妞 二 盯 A U 一I C S ; N咙T S 1 坦 T . T SS C E S
日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驱动

wdm驱动

wdm驱动
WDM驱动是指Windows Driver Model(Windows驱动模型)驱动,它是一种用于开发Windows操作系统设备驱动程序的软件框架。

WDM驱动是为Windows 98、Windows Me和Windows 2000引入的,它提供了一种标准化的方式来编写设备驱动程序。

相比于传统的驱动开发方式,WDM驱动具有更丰富的功能和更高的灵活性。

WDM驱动在设备驱动程序的开发中提供了许多优点,包括:
1. 简化了驱动程序的开发:WDM驱动使用一套统一的API,使得驱动程序的开发更加简单和一致。

2. 可移植性:WDM驱动可以在不同的Windows操作系统版本上运行,而无需进行大量的修改。

3. 兼容性:WDM驱动允许旧的驱动程序与新的设备完全兼容,而无需进行修改。

4. 性能:WDM驱动通过使用更高级的设备驱动模型和硬件访问机制,提高了设备驱动程序的性能。

总之,WDM驱动是一种用于开发Windows设备驱动程序的软件框架,它提供了许多优势和便利,使开发者能够更轻松地开发高性能和兼容性强的驱动程序。

基于WDM的USB驱动程序设计

基于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驱动程序均可正常使用。

通用串行总线USB的驱动程序设计

通用串行总线USB的驱动程序设计

文章编号:1009-8119(2005)04-0040-03基于WDM的USB驱动程序设计赵娟1 仲顺安1 郭磊2(1.北京理工大学信息科学技术学院,北京 1000812.石家庄陆军参谋指挥学院教育技术专业,石家庄 050064)摘要简单介绍了USB的特性。

为了介绍USB驱动,重点阐述了WDM驱动程序的原理和Windows系统内核管理机制和应用程序的区别。

并给出了利用Driverstudio的C++语言编写的例程。

关键词 USB设备,WDM,操作系统,驱动程序The Implementation of the USB Driver Based on WDMZhao Juan Zhong Shun'an Guo LeiAbstrct The attribute of the USB is descripted in the paper. For developing usb driver, the mechanism of kenerl management and the privilege level of applications in window2000 are introduced in the paper. An example of the driver handling USB transfer programmed by using C++ with the help of the driverstudio is given. Keyword USB device,WDM,OS,Driver1 引言USB,全称是Universal Serial Bus(通用串行总线),它是由Compaq、Microsoft、Intel、IBM等七家公司共同开发的,旨在解决日益增加的PC外设与有限的主板插槽和端口之间的矛盾而制定的一种串行通信的标准,自1995年在Comdex上亮相以来已广泛地为各PC厂家支持。

USB.设备的WDM.驱动程序设计

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设备驱动程序

图1 显示 了一个多层次结构 的通信模型 , 它表 明 了端 点 和管 道 所 扮 演 的 角色 。 在最 低 一 级 , S UB 电缆把主控制器与设备的总线接 口连接起来。在第 二级 , 一个控 制管 道 把 系统 软 件 与逻 辑设 备 连接 起 来 。在第 三级 , 组 数据 管 道 把 客户 软 件 与一组 接 一 口连接起来 , 些 接 口组 成设 备 的功 能。信 息实 际 这 上是在图中两侧垂直流动 , 但把它理解为在这些分 层 的管道 中水平 流动更 清 晰 。
维普资讯
No 2 .




第 2期 20 0 8年 4月
Ap ., 0 8 r 20
MI CROPR OCES OR S S
开 发 WD 型 U B设 备 驱 动 程 序 M S
冯海涛 刘 宝娟 王晓君 , ,
(. 1 中国 电子科 技集 团公 司第 四十 七研 究所 , 阳 10 3 ; 沈 10 2 2 东芝 电梯 ( 阳) 限公 司 , 阳 106 ) . 沈 有 沈 118
注 : == 《 => 物 理 信 息 流 ●
I 功 l 接口 能 I Is 辑 备 B 设 l u逻 I u 总接 I s 线口 B
虚拟 ( 辑 )信息流 逻
置 (of rt n o cn g a o ) i i u 设 备 的每 个 配 置 中都 含 有 一 个 或 更 多 的接 口 (ne ae , 口指 出软 件 应 该 怎 样 访 问硬 件 。 另 i r c)接 tf
US d v c rv ro DM d is wo k p o e s B e ie d e fW i n a t r r c s .W i tra x mp e,e p tae n t e me o f h t ma e l e a l i x a it s o t d o h h

开发WDM型的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. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

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资源,如带宽等。

应用软件不能直接访问USB设备硬件,而通过USB系统和USB总线接口与USB设备进行交互。

USB设备包含一些向主机软件提供一系列USB设备的特征和能力的信息的设备描述符,用来配置设备和定位USB设备驱动程序。

这些信息确保了主机以正确的方式访问设备。

通常,一个设备有一个或多个配置(Configuration)来控制其行为。

配置是接口(Interface)的集合,接口指出软件应该如何访问硬件。

接口又是端点(endpoint)的集合,每一个与USB交换数据的硬件就为端点,它是作为通信管道的一个终点。

图1显示了一个多层次结构的通信模型,它表明了端点和管道所扮演的角色。

WDM驱动程序和USB驱动程序的分层结构设备驱动程序实际上是指一系列控制硬件设备的函数,是操作系统中控制和连接硬件的关键模块。

它提供连接到计算机的硬件设备的软件接口。

1、WDM 驱动程序介绍WDM(Win32 Driver Model)是Microsoft公司力推的一种符合Windows2k/XP 下的内核模式驱动程序的分层体系结构的驱动程序模式。

它源于Windows NT的分层32位设备驱动程序模型,它支持更多的特性,如即插即用(PnP ,Plug and Play )、电源管理(PM ,Power Management )、Windows管理诊断(WMI ,Windows Management Instrumentation )和NT 事件。

它为Windows操作系统的设备驱动程序提供了统一的框架,在Windows平台上,WDM将成为主流的驱动模式。

WDM引入了功能设备对象FDO(Function Device Object)与物理设备对象PDO(Physical Device Object)两个新类来描述硬件,一个PDO对应一个真实的硬件。

一个硬件只允许有一个PDO,却可以拥有多个FDO,在驱动程序中直接操作的不是硬件而是相应的PDO和FDO。

WDM是通过一个128位的全局唯一标识符(GUID)实现驱动程序的识别。

应用程序与WDM驱动程序通信时,应用程序将每用户请求形成I/O请求包(IRP)发送到驱动程序。

驱动程序识别出IRP请求后指挥硬件执行相应操作。

2、开发WDM驱动程序的方法目前开发WDM驱动程序的方法有三种:①使用Microsoft 的Windows2000 DDK工具开发。

②使用KRFTech 公司的WinDriver 。

③使用NuMega 公司的DriverStudio 。

3、WDM型的USB驱动程序结构对于USB设备来说,其WDM驱动程序分为USB底层(总线)驱动程序和USB 功能(设备)驱动程序。

USB驱动程序符合Windows 2000下的内核模式驱动程序的分层体系结构,如图2所示:图2 WDM型的USB驱动程序体系结构USB底层驱动程序由操作系统提供,负责与实际的硬件打交道,实现烦琐的底层通信。

USB功能驱动程序由设备开发者编写,不对实际的硬件进行操作,而是通过向USB底层驱动程序发送包含URB(USB Request Block,请求块)的IRP,来实现对USB设备信息的发送和接收。

采用这种分层驱动程序的设计方法有两个优点:(1)多个USB设备可以通过USB底层驱动程序来协调它们的工作。

(2)编写分层驱动程序较之编写单一驱动程序相对简单,且可以节省内存和资源,不易出错。

USB驱动程序工作简述如下:当应用程序想对USB设备进行I/O操作,它需调用Windows API函数,I/O管理器将此请求构造成一个合适的I/O请求包(IRP)并把它传递给USB功能驱动程序。

USB功能驱动程序接收到这个IRP后,根据IPR中包含的具体操作代码构造相应USB请求块(URB),并把此URB放到一个新的IRP中,然后把它传递给USB底层驱动程序。

USB底层驱动程序根据IRP中所含的URB执行相应的操作,并把操作的结果返回给USB功能驱动程序。

USB功能驱动程序接收到此返回的IRP后,将操作结果通过IRP返还给I/O管理器,最后I/O管理器将此IRP操作结果传回给应用程序,至此应用程序对设备的一次I/O操作完成。

用Driver Studio工具包开发WDM型的USB设备驱动程序前文所提及的WDM驱动程序开发方法,笔者都曾尝试过。

个人认为用DriverStudio 开发工具包来开发USB驱动程序行之有效。

其中的Driver Wizard是创建WDM驱动程序框架的一个很好的工具,后文将介绍用它来创建USB设备驱动程序的基本框架。

1、搭建开发平台由于利用DriverStudio 开发WDM驱动程序在搭建开发平台的过程中对软件的安装顺序要求颇高,在开发过程中我也曾因为安装顺序的颠倒而失败。

在实践中总结了以下的安装步骤,有必要在此作以介绍。

①在已装了Windows 2000 操作系统的机子上安装Microsoft Visual C++6.0。

②安装Win2000 DDK 。

③安装NuMega DriverStudio 2.0 ( or 2.6 ) 驱动程序开发工具包。

它包含DriverWorks(用于开发内核模式WDM驱动程序)、SoftICE(用于调试WDM驱动程序)等开发工具。

④由于DriverWorks 所用的类库是对DDK 函数的封装,必须在VC中编译,创建自己的库文件。

⑤设置DDK 路径。

2、利用DriverStudio 的DriverWorks生成USB设备驱动程序框架驱动程序开发平台搭建成功后,我们可利用驱动程序生成向导Driver Wizard,根据硬件设置较为容易的生成USB设备驱动程序的大体框架。

本人的设置如下:①选择WDM的驱动程序类型和Windows 2000运行平台。

②选择USB总线类型,系统选择的USB芯片是Philip公司的ISP1581,填写它的VID(供应商ID)和PID(设备ID),这些信息由芯片的供应商提供。

③增加端点1和端点2,它们分别具有IN和OUT属性。

④根据需要选择对设备的操作有:Read、Write、Device Control和CleanUp。

⑤选择给端点2产生BULK Read和Write的代码, 向导会自动产生一套对端点2进行读、写的代码。

⑥设置驱动程序的属性,采用WDM接口;在选取读写方式时应遵循一条原则:需要快速传送大量数据时,用Direct I/O ,反之用Buffer I/O ,这里选择BufferI/O;由于无特殊的电源需求,故选用系统默认的Manage Power For This Device。

⑧增加IOCTL接口,在其生成的代码框架中加入自己的操作,以实现一个完整的USB设备驱动程序。

最后就生成了一个WDM型的USB设备驱动程序框架和一个测试该驱动程序的测试程序大体框架。

然后在其中添加需要的功能代码。

3、USB设备驱动程序中的关键例程代码实现下面以我们的驱动程序为例,介绍USB驱动程序开发中的几个关键例程的实现。

本驱动程序的主要功能是控制USB设备上LED灯通断并且对设备进行读写。

1) 初始化例程DriverEntry()设备驱动程序与应用程序不同,它没有main()或WinMain()函数,而是有一个名为DriverEntry()的入口函数,它通常完成一些初始化工作。

当设备驱动程序被加载时,操作系统调用这个入口。

在使用DriverWizard 创建的驱动程序基本框架中,DriverEntry()函数已经写好了,无需添写代码。

在该例程中,驱动程序要向操作系统登记并注册一些消息处理器,通过RegistryPath来找到位于注册表中的驱动程序参数,当驱动程序正确安装后,在注册表KEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Service 下可以找到MyUSB 项。

而用DDK编写该入口函数还需初始化Dispatch(分派)例程入口。

2) 创建设备例程AddDevice()大多数的PDO 都是在PnP 管理器调用该程序入口点时被创建的。

插入新设备后,系统启动时,总线枚举器会发现总线上的所有设备,会自动寻找并安装设备的驱动程序,并由驱动程序中的处理PnP 功能模块自动处理AddDevice() 例程及其他PnP消息。

此例程使用IoCreateDevice() 函数创建设备对象,再使用IoRegisterDeviceInterface() 函数将设备组成为一个特定的设备接口,然后使用IoAttachDeviceToDeviceStack() 函数关联设备栈。

3) LED控制处理例程MyUSB_IOCTL_LED_Handler()该例程是实现本驱动程序功能的关键例程,它是用来控制设备上的LED灯通断,主要利用USB Vendor Request来向设备传送。

其中,request=1的时候表示让LED亮,request=0的时候让LED灭。

它是通过DeviceControl由上层应用程序传下来。

实现代码如下:4) 访问硬件例程DeviceControl()上层应用软件程序就是通过此例程来将IRP传到下层。

相关文档
最新文档