基于WDM的Windows2000驱动开发技术
Windows 2000 下 WDM 驱动程序的研究与开发

—266— Windows 2000下 WDM 驱动程序的研究与开发郭 艳,苗克坚(西北工业大学计算机学院,西安 710072)摘 要:分析研究了Windows 2000下WDM 驱动程序的基本原理。
以Microsoft 的DDK 为开发工具,开发了基于PCI 总线的通信接口板的WDM 驱动程序。
证实了该驱动程序有很大的实用价值,且有助于对操作系统的理解。
关键词:Windows 设备驱动程序模型;设备驱动程序开发包;设备驱动程序;I/O 请求包;设备对象Research and Design of WDM Driver under Windows 2000GUO Yan, MIAO Kejian(College of Computer, Northwestern Polytechnical University, Xi’an 710072)【Abstract 】This paper analyses and researches the basic principle of WDM driver under Windows 2000 operating system. Using DDK of Microsoft, the authors develop a WDM driver for the communication interface based on PCI bus.The result shows that it has great value in application, and is helpful to understand the operation system.【Key words 】Windows device driver model(WDM); Device drivers kit(DDK); Device driver; I/O request packet(IRP); Device object计 算 机 工 程Computer Engineering 第32卷 第22期Vol.32 No.22 2006年11月November 2006·开发研究与设计技术·文章编号:1000—3428(2006)22—0266—03文献标识码:A中图分类号:TP311目前,Windows 2000/XP 已经成为PC 主流的操作系统,而应用程序在Windows 2000/XP 平台上只有通过驱动程序才能访问硬件设备。
WDM驱动开发之路(1)

WDM驱动开发之路(1)WDM开发之路(1)--驱动开发网WDM教程WDM驱动开发之路写在前面:在专栏的前几期中,我们一起初步学习了vxd的开发技术。
Vxd技术是很深奥的,不是一篇两篇文章能讲清楚,但你已经入了门,剩下的就要看你的修行了。
多看书,多泡论坛(当然是上咱们的驱动开发网论坛了:->),多写程序…我的手不够用了。
功到自然成嘛。
不过话又说回来,vxd只是权宜之计,WDM才符合当今的潮流(程序员都是时髦人士,君不见先是VB、VC然后是asp、JSP、PHP,数也数不过来呀),Win9x寿终正寝时也就是vxd的末日,你不想随它而去吧(开个玩笑),那就随我来。
按笔者的想法,这篇文章写成连载形式,一次讲一个主题,并且必要时带着例子,让大伙step by step地把WDM驱动弄个透底,不想让大家觉得稀里糊涂,也不想让大家觉得白买杂志了。
今天我们一起讨论第一部分,了解篇。
(一)了解篇WDM模型(Windows Driver Model)是微软公司为当前主流操作系统Windows98和Windows 2000的驱动程序设计的一种构架。
它和传统的win3.x和win95使用的vxd的驱动是完全不同的体系结构。
不过对于最终用户来说,WDM驱动程序在Windows98和Windows2000下的表现很相似。
作为驱动开发人员来说,它在两者中有很多的不同。
并且Windows98中的WDM只能算是Windowss2000中的WDM的一个了集。
在Windows98中有一些驱动程序只能使用VXD来实现,如串行通讯驱动等。
要写驱动程序,首先要了解操作系统的结构。
在WDM体系中,windows2000操作系统中是最标准的实现方式,Windows98则是部分兼容WDM结构。
照微软的说法,Windows98和Windows2000 X86(Intel 架构)版本实现二进制码兼容(参见98DDK),Windows2000 x86版本与其它CPU平台版本实现源码级兼容(因为Windows 2000是基本NT相似的结构,最底层是硬件抽象层HAL,所有我们相信它们之间能源码级兼容)。
Windows2000设备驱动程序的设计与开发①

2004 年 12 月 Dec. 2004
Windo ws 2000 设备驱动程序的设计与开发 ①
梁列全 , 王随平
中南大学 信息科学与工程学院 , 湖南 长沙 410083
摘要 : 在分析 Windows 设备驱动模型 ( WDM) 的基本结构 、设计和开发等基本问题的基础上 , 采用 WDM 技术设计
软件平台为 : Windows 2000 , Visual C + + 61 0 , Window s 2000 DD K 以及调试软件 Sof t ICE 等. 利用 Visual C + + 来编写驱动程序的源代码 , 使用 DD K 的编译环境来对所编代码进行编译发布 , 运 用 Soft ICE 对驱动程序进行分步测试.
① 收稿日期 : 2003 11 04 作者简介 : 梁列全 (1974 ) , 男 , 江苏金湖人 , 工程师 , 硕士研究生 , 主要从事计算机应用技术的研究.
946
西南师范大学学报 (自然科学版) 第 29 卷
(1) I/ O 端口的读写. I/ O 模块中的控制字和状态字的读写都是通过 I/ O 操作完成. 虽然 Window s
STAR T , SERV ICE_ ERROR_NO RMAL , tchDriver Pat h , N ULL , NULL , NULL , NULL , N ULL) ; …
m_ hDevice = : : Create File ( S TR _ COM PD EVNAM E , GEN ERIC _ R EAD | GEN ERIC _
1 Windows 2000 设备驱动程序的基本原理
WDM 是一种模块化 、分层次类型的驱动模型[1 - 3] . 如 图 1 所示 , 其中左边是设备对象栈 (设备对象是系统为帮助 软件管理硬件而创建的数据结构) , 右边是驱动程序的分层 结构. WDM 驱动模型中 , 每个硬件设备至少由两个驱动程 序 (功能驱动程序和总线驱动程序) 组成. 总线驱动程序负 责管理硬件与计算机的连接 , 为总线上的每个设备创建物 理设备对象 PDO ; 功能驱动程序负责初始化 I/ O 设备操作 , 处理 I/ O 设备操作完成时所产生的中断 , 为用户提供一种 适当的的设备控制方式 , 创建自己的功能设备对象 FDO.
Windows CE和桌面Windows 2000/XP设备驱动开发的区别

(n tue o lc o i T c n lg T e P A Ifr t n E g e r g U ie i , h n zo 5 0 4 C ia Is tt fE e t nc e h ooy, h L no i n i e n nv r t Z e gh u 4 0 0 , hn ) i r ma o n i sy
Ab ta t T i a e ic s e h i e e c f d v l p n e ie d v r p o r m ew e i d ws C n e ko i d ws s r c : h s p p r d s u s s t e df r n e o e e o i g d vc r e rg a b t e n W n o E a d d s tp W n o , i
嵌 入 式 操 作 系 统 Widw E驱 动 程 序 开 发 方 法 。 no sC
1驱 动 结 构 模 型 比 较
在 桌 面 Wid w n o s系 统 中 , 以 支 持 Wid w 0 0 XP no s20 /
基 金 项 目 : 家 自 然 科 学 基 金 (0 0 0 4) 国 6430
i cu ig t e d v o e a c i cu e mo e , o o e t a d d v l p n n i n n 。 n l d n h r e c d r ht t r d l c mp n n n e eo i g e vr me t i e o
摘 要 :讨 论 了 嵌 入 式 操 作 系 统 Widw E 与 桌 面 Widw n o sC n o s系 统 设 备 驱 动 开 发 的 区 别 , 要 包括 主
Windows2000下PCI数据采集卡WDM驱动程序设计

⑥ 2 0 S iT c . n n . 0 6 c. e h E g g
Wid w 2 0 下P I n o s0 0 C 数据采集卡WD M驱动程序设计
张广华 苏秀琴 李 哲
( 国科 学 院西 安 光 学 精 密 机 械 研 究 所 光 电测 控 研 究 室 , 安 7 0 6 ) 中 西 10 8
研究 方 向 : M驱 动 程 序 开 发 研 究 。 WD 通 讯 作 者 简介 : 秀琴 (9 o ) 女 , 苏 16 一 , 甘肃 省平 凉 市人 , 究 员 。 研
程 序模 型 ( aee 3 一 iD v eD vr d ) L y rd 2 bt ei r e e 。它支 c i Mo 持 即插 即用 ( n ) P P ,遵 循 电 源 管 理 协 议 ,并 能 在
维普资讯
1 期 2
张广 华 , : n o s0 o P I 据采 集 卡 WD 等 Wid w 2 0 下 C 数 M驱 动 程 序 设 计
13 63
Wid w 8 n o s9 和Wid w 2 0 间实 现 源代码 级兼 容 。 n o s0 0
图2 Wid w 2 0 中的 设 备 驱 动 程 序 种 类 n o s0 0
2 WDM 模 型 . 2
20 年 2 06 月4日收 到
第 一 作 者 简 介 : 广 华 (9 O ) 男 , 西 省 西 安 市 人 , 士 研 究 生 。 张 18 一 , 陕 硕
WD M来 源 于Widw T 分层 3 位 设 备 驱 动 n o sN 的 2
维普资讯
第 6卷
第 l 2期
20 0 6年 6月
科
学
技
术
Windows 2000 内核模式驱动程序设计

Windows 2000 内核模式驱动程序设计一、W indows 2000驱动程序和WDM1.Windows 2000 系统组件Windows 2000 系统组件如下图:Windows 2000组件其中,驱动程序设计者主要涉及的有:内核、I/O管理器、即插即用(PnP)管理器、电源管理、硬件抽象层(HAL)、配置管理器、内存管理器、运行支持和进程结构组件。
PnP管理器和电源管理器是Windows 2000新组件,它们仅支持Windows 2000和WDM 驱动程序。
2.Windows 2000驱动程序类型Windows 2000驱动程序从总体上分为用户模式驱动程序和针对逻辑、虚拟或物理设备的内核模式驱动程序。
其中内核模式驱动程序可以分为三种基本类型:最高层、中间层和最低层。
(1)最高层驱动程序,如系统提供的FAT、NTFS、CDFS文件系统驱动程序(FSD)。
(2)中间层驱动程序,如虚拟磁盘、镜像、特定于设备类型的类驱动程序等。
PnP功能驱动程序是主要的设备驱动程序,它们在一个I/O总线上控制特定的外围设备,而I/O总线是由PnP硬件总线驱动程序来控制的。
PnP过滤器驱动程序过滤一个设备、设备类或总线的I/O请求。
在驱动程序栈内将自己插入到PnP功能驱动程序中去,以支持任何特定的外围设备。
高层驱动程序提供设备的增值特性,低层驱动程序修改设备硬件的行为,低层和高层的过滤器驱动程序都是可选的。
PnP软件总线驱动程序表示一组子设备,较高层的类、功能和/或过滤器程序将它们自己连到这些子设备上。
(3)最低层驱动程序,如PnP硬件总线驱动程序。
它控制连有一些外围设备的I/O 总线。
高层驱动程序总是依赖于低层驱动程序的支持,最低层驱动程序直接控制物理设备。
内核模式驱动程序类型3.Windows 2000和WDM驱动程序的设计目标平台之间的可移植性大部分2000组件完全是用C写成的,只有少部分HAL和内核是用汇编语言写的,因此内核模式驱动程序也应用C来写。
基于Win2000的WDM设备驱动程序的开发

中图分类 号 :P 1 文献标识码 : T 32 A
Pr g a m i fW DM v c ie n W i o 0 0 o rm ng o De ie Drv r i nd ws2 0
JANG in LI Ou n , I Ja g , U a 2 LUO oh a Ya - u2
bnE gneigUnvri , abn10 0 , hn ) i n ier ie t H r i 5 0 1 C ia n sy
Ab t a t Th h o y tu t r n u n n f i d ws 0 0 W DM v c i e r n r d c d i h s sr c : e t e r ,s r c u e a d r n i g o n o 2 0 W De ie Drv r we e i t o u e n t i p p r Th r g a a e . e p o r mm i g o DM sd s u s d wi n e a p e n e DM Hel n f W wa i s e t a x m l a d W c h m l o.
Ke r : DM ;W i d ws 2 00;de ie drv r y wo ds W n o 0 v c ie ;DDK ; I RP
0 引 言
在 W id w 操 作 系统 下 , 理 和 控 制 计 算 机 no s 管 外 部 设备 的工作 一 般 是 由驱 动程 序 完成 的 。当有 新 的设 备 加 入 时 , 需 要 启 动 支 持 新 设 备 的驱 动 就 程 序 来 控制 和 管理 。微 软公 司最 先 推 出 了虚 拟设 备 驱 动 ( iul ei r e) 术 , 称 Vx 技 vr a dvc di r技 t e v 简 D 术 , 动 程 序 通 过 创 建 虚 拟 设 备 , 支 持 w i— 驱 以 n dw 5和 W idws8系统 下 对 硬 件 的操 作 ; 时 o9 no 9 同 微 软 公 司 为 W idws no NT提 供 了 NT式 驱 动程 序
2000XP下IO设备驱动程序的设计

Windows 2000/XP 下I/O 设备驱动程序的设计李建 戴胜华(北方交通大学电子工程学院 自动控制教研室,北京 100044)摘要:本文介绍了Windows 2000/XP 下WDM 驱动程序的基本设计方法;阐述了I/O 设备驱动程序的基本构成,硬件资源的配置和访问的方法;提出了设备驱动程序在实际应用中的层次化结构。
关键词:WDM ;设备驱动程序;I/O 端口;DLLDesign of I/O Device Driver under Windows 2000/XPAbstract :This paper introduce the primary designing methods of WDM driver under Windows 2000/XP. It describe the basic structure of an I/O device driver, and the method of configing and accessing the hardware resources. It also put forward the layered structure of device driver in the real implement.Keyword :WDM ;device driver; I/O port; DLL1. 引言在开发微机应用系统的过程中,尤其是在控制系统中,通常会遇到在Windows 环境下对具有特定功能的硬件设备(如数据采集卡),进行直接访问和控制的问题。
因为在Windows 操作系统下,CPU 运行于保护模式,并且统一管理硬件资源,执行于用户态的应用程序不能直接访问硬件,而是通过调用执行于核心态的设备驱动程序提供的各种服务间接地对硬件资源进行访问,这一机制确保了系统的安全。
所以,以前在Dos 和Windows 98下可以很容易完成的I/O 端口读写,在Windows 2000/XP 下必须编写驱动程序,才能够实现。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
不 必 考 虑 如 何 控 制 硬 件 【】 1 。在 W id w 2 0 n o s0 0操 作 系统 下 , 为
了 防 止 用 户应 用 程 序 对 系 统 内存 和操 作 系统 的 地 址 空 间进 行 任 意 存 取 ,引 起 系 统 出 错 , I 0 0系统 采 用 了分 层 的 系统 W N2 0
g v sa d v lpm e tisa e,a d o bne i n tnc o i to c eh sa o es sofW DM e ie d i e e do i e e eo n n tnc n c m i st s i a e t n r du em t od nd pr c se h s d v c rv rd v pm e t nd n ,a
A b t a t I v e oft o e a ou e ie rv r de eop e f wi ows 0 ,t spa ri to c sW ido rv r s r c : n i w he pr blm b t d vc d ie v l m nto nd 2 00 hi pe n r du e n ws D i e
通 信 论 坛
计 算 机 与 网 络 创 新 生 活
基 于 WD 的 Wid w 2 0 M n o s0 0 驱动开发技术
李 松 殷 杰 波
( 中国船 舶重 工集 团公 司江苏 自动化 研 究所 江苏 连 云港 22 0 ) 20 6
【 要】 摘 针对 W no s 0 0 开发 驱 动程 序 的 问题 , 绍 了 W n o s 动 程序 开 发 模 型 (D) 分 析 了该 模 型 的 工作 原 理 , idw 2 0 下 介 id w 驱 WM,
b e y d sr e t e di e e u g n n a i g me h d il r f ec b r rd b g i g a d c l n t o . i h v l
Ke r y wo ds: D M ; i do 00 ;de c i e ;Ke e od ;d veop e o l W W n ws2 0 viedrv r m lm e e l m ntm de
1引 言
设备 驱 动 程 序 是 提 供给 硬件 设 备 连 接 到 计 算机 系统 的软 件 接 口 。 用 户 应用 程 序 可 以 以 一 种 规范 的方 式 访 问硬 件 , 使 而
备驱 动 程 序 的 方法 。
2驱 动 程 序 21W 源自 0 0系 统 的 分 层 结 构 . N20
体 系 结构 。 分为 用 户模 式 和 内 核 模 式 , 于 用 户模 式 下 的应 用 处
程 序 不 能 直接 访 问 硬件 , 要 通 过 调 用 执 行 于 核 心 态 的设 备 而 驱 动 程 序 提 供 的例 程 间 接 地 对 硬 件 资 源 进 行 访 问 , 而 完成 从
对 硬 件 的 各 种 操 作 。W DM 设 备 驱 动 程 序 模 型 是 W id ws no
Ba e n W DM sd o
L og Y N J — o I n I i — S eb
0aguA tmao s r stt o I Lay n ag i gu22 0 , h a i s uo t nRe ac I t e f C, i u gn a s 20 6 C i ) n i e h ni CS u n Jn n
20 0 0环 境 下 的 设 备 驱 动 程 序 模 型 , 重点 描 述 了 W DM 的标 准 结 构 和在 W id ws 0 0系 统下 基 于 W DM 模 型开 发 、 试 设 n o 0 2 调
定稿 日期 : 00 0 - 8 2 1- 1 2
图 1WI 2 0 N 0 0系统 的分 层 结 构 图
d v l p n o o e c r e ae n W DM n n y e e k y p i t o r e e eo me t On t e b s f t h sp p r e eo me tf w fd v e d i rb sd o l i v a d a  ̄ z st e on s fd i n d v l p n . h v ai o ,ti a e h s i
Mo e ( d l WDM )s d lo eie die e eo me t n lzs te p rt n picpe o id wsDr e d l rsns a a mo e fd vc rv r d vlp n,a a e h o eai r il fW n o i r Mo e,pee t y o n v
给 出了在 W n o s 0 0系统下基 于 W M开发设备驱动程序 的流程, id w 2 0 D 分析 了驱 动开发 中的关键点 。在此基础上给 出了 1 个开发 实例 , 结合 实例对 W M开发设备驱动程序的方法和 流程进行 了说 明, D 并简单介绍 了驱动程序的调试和调用方法。
【 键 词】WM W n o s 0 0 驱 动 程 序 内核 模 式 开 发模 型 关 D id w 2 0
中图 分 类 号 : P 1 . T 31 1 文 献标 识 码 : A 文章 编 号 :0 8 7 9 2 1 ) 6 4 — 1 0 —1 3 ( 0 0 0 — 4 3
Te hn l g fW i do 0 0 De i e Drv r De eo m e c o o y o n ws2 0 v c i e v l p nt