(计算机应用技术专业论文)无线网卡驱动程序设计与实现技术研究.pdf_第1页
(计算机应用技术专业论文)无线网卡驱动程序设计与实现技术研究.pdf_第2页
(计算机应用技术专业论文)无线网卡驱动程序设计与实现技术研究.pdf_第3页
(计算机应用技术专业论文)无线网卡驱动程序设计与实现技术研究.pdf_第4页
(计算机应用技术专业论文)无线网卡驱动程序设计与实现技术研究.pdf_第5页
已阅读5页,还剩75页未读 继续免费阅读

(计算机应用技术专业论文)无线网卡驱动程序设计与实现技术研究.pdf.pdf 免费下载

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

西北工业大学硕士论文无线网 卡驱动程序设计与实现技术研究 摘 要 无线移动自 组互联网是一种新型的无线移动网络,既可作为独立的网络系 统运行,又可作为有线 i n t e me t的接入网络,以支持移动 e p业务。为了将 wi n d o w s 2 0 0 0 / x p端系统接入到无线移动自 组互联网中,需要使用特定的无线 网卡。由于无线网卡是自 主开发的,因此必须开发相应的网卡驱动程序。 本文主要对wi n d o w s 2 0 0 0 / x p 环境下的网 络驱动程序开发技术进行深入和 系统的研究,通过开发 u s b无线网卡驱动程序,在理论和实践两个方面对 wi n d o w s 2 0 0 0 / x p系统的核心编程、驱动程序编程以及其它相关技术有了深刻 理解,基本上掌握了其中的关键技术。本文的主要研究工作及其成果如下: i . 对wi n d o w s 2 0 0 0 / x p 环境下网 络驱动程序开发技术进行了深入研究, 为 设计和实现无线网卡驱动程序提供了必要的技术基础。 2 . 设计和实现了基于wi n d o w s 2 0 0 0 环境下的u s b无线网卡驱动程序, 将 具有自 组织功能的无线网卡硬件与wi n d o w s 2 0 0 0 操作系统有机地结合起来, 实 现网卡和上层软件的数据传递。 3设计和实现了w i n d o w s 2 0 0 0 网络隧道驱动程序, 提供了网 络数据包截 获功能,从无线网卡上截获数据包,经过处理后再通过 n d i s中间层驱动程 序发送到上层协议驱动程序或下层微端口n i c ( 无线网 卡) , 从而满足了 特定应 用的需要。 4 . 讨论了驱动程序编译、安装、调试和包装等方面问题,这里包含很多 技巧,在驱动程序的工程化和产品化中发挥了重要的作用。 关键词: 无线移动自 组网;网络驱动接口 规范: u s b接口:隧道驱动程序 西北工业大学硕士论文无线网卡驱动程序设计与实现技术研究 ab s t r a c t mo b i l e a d h o c n e t w o r k i s a n e w t y p e o f w i r e l e s s n e tw o r k , w h i c h c a n b e u s e d a s a n i n d e p e n d e n t n e t w o r k s y s t e m , a n d i t c a n b e u s e d a s a n a c c e s s i n g n e t w o r k o f i n t e rne t t o s u p p o r t m o b i l e i p s e r v i c e . i f a wi n d o w s 2 0 0 0 / x p h o s t s y s t e m a c c e s s e s a mo b i l e a d h o c n e t w o r k , i t n e e d in s t a l l a s p e c i a l w i r e l e s s n e t w o r k i n t e r f a c e c a r d u s u a l ly t h e w ir e l e s s n e t w o r k i n t e r f a c e c a r d i s a l w a y s s e l f - p r o d u c e d , i t s n e c e s s a r y t o d e v e l o p a s p e c i a l d r i v e r f o r s p e c i a l n e t w o r k c a r d t h i s p a p e r f o c u s e s o n t h e k e y t e c h n o l o g y o f n e t w o r k d r i v e r d e v e lo p m e n t i n v o l v e d i n wi n d o w s 2 0 0 0 / x p s y s t e m , a n d t h e d e v e l o p m e n t o f u s b w i r e l e s s n e t w o r k i n t e r f a c e c a r d d r i v e r . i t n e e d s a p r o f o u n d c o m p r e h e n s i o n a b o u t p r o g r a m m i n g a p p l i c a t i o n s f o r wi n d o w s 2 0 0 0 / x p , d r i v e r p r o g r a m m i n g a n d o t h e r r e la t e d t e c h n o l o g i e s . i n t h i s p a p e r , t h e m a i n w o r k s a n d a c h i e v e m e n t s a r e a s f o l l o w s : 1 . i n t h i s p a p e r , t h e re i s a n i n - d e p t h r e s e a r c h o n th e t e c h n o l o g y o f n e t w o r k d r i v e r d e v e l o p m e n t b a s e d o n w i n d o w s 2 0 0 0 / ) p s y s t e m , a n d i t p ro v i d e s n e c e s s a r y t e c h n o l o g y f o u n d a t i o n f o r d e s i g n i n g a n d i m p l e m e n t i n g w i re l e s s n e t w o r k i n t e r f a c e c a r d d r i v e r 2 . t h i s p a p e r d e s i g n s a n d i m p l e m e n t s a u s b w i r e l e s s n e t w o r k c a r d d r iv e r b a s e d o n wi n d o w s 2 0 0 0 / x p s y s t e m , w h i c h c o m b i n e a d h o c n e t w o r k c a r d w i th win d o w s 2 0 0 0 o p e r a t i o n s y s t e m , t h e re b y i m p l e m e n t i n g d a t a t r a n s p o r t b e t w e e n a d h o c n e t w o r k c a r d a n d u p p e r l a y e r s o ft w a r e . 3 . t h i s p a p e r d e s i g n s a n d i m p l e m e n t s t u n n e l d r i v e r b a s e d o n wi n d o w s 2 0 0 0 . t h e t u n n e l d r i v e r p r o v i d e s i n t e r c e p t in g d a t a p a c k a g e fu n c t i o n . t h i s f u n c t i o n i n c l u d e s c a p t u r i n g d a t a p a c k a g e f r o m w i r e l e s s n e t w o r k c a r d , p r o c e s s i n g t h e d a t a , a n d t r a n s p o r t s t h e d a t a t o u l p d r i v e r o r u n d e r - l a y e r n i c t h r o u g h n d i s . 4 . t h i s p a p e r d i s c u s s e s s o m e i s s u e s i n c l u d i n g c o m p i l e , i n s t a l l , d e b u g a n d p a c k a g i n g , w h i c h h a v e i m p o r t a n t e f f e c t o n d r i v e r d e v e l o p m e n t . k e y w o r d s : a d h o c ; n e t w o r k d r iv e r i n t e r f a c e s p e c i fi c a t i o n ( n d i s ) ; u s b i n t e r f a c e ; t u n n e l dr i v e r 西北工业大学硕士论文无线网卡驱动程序设计与实现技术研究 第一章概论 1 . 1 课题研究意义和背景 本文以“ 无线移动自 组织互联网技术”课题为背景开展研究工作,无线移 动自 组织互联网是一种新型的无线移动网络,既可作为独立的网络运行,又可 作为有线 i n t e rn e t的接入网,能够有效地支持移动 e p业务。为了将 w i n d o w s 2 0 0 0 / x p端系统接入到无线移动自 组互联网中,需要使用特定的 无线 网 卡, 并且需要将wi n d o w s 2 0 0 0 / x p 原有的支持有线t c p / i p 协议转换为支持移 动i p 业务的无线t c p 协议,通过移动ip协议实现网络互联。 在传统的t c p / i p 协议中, 域名解析和地址解析会产生一定数量的数据, 而 这些数据通常有许多重复工作, 对于现有的有线网问题不大, 但对于无线网络, 则会增加了网络负担。因此,对传统的a r p 协议包采用a r p 代理的方法,从 无线网络层的相邻节点表中获取相应数据, 并做相应处理。 对于d n s ,同样采 用缓存代理的方法,将通过传统手段获取的域名解析结果存储,构成虚拟的域 名解析服务器,从而减少对已知域名解析的网络流量。 由 于无线网卡是自 主开发的, 因此需要在wi n d o w s 2 0 0 0 / x p 内 核下开发无 线网卡驱动程序,以满足无线网络环境下的数据传输。 m i c r o s o ft 公司推出的wi n d o w s 2 0 0 0 5 i,不但继承了w i n d o w s n t的 种种优 点, 而且在技术上又有了许多的突破, 其中之一就是w动程序系统结构的变化, 引入了 全新的w d m ( wi n 3 2 d r i v e r m o d e l ) 的 驱动程序构架。 w d m是m i c r o s o ft 公司在 1 9 9 7年提出的新技术,并在 wi n d o w s 9 8中得到应用,换句话说, wi n d o w s 9 8 也支持wd m。 这样w d m就成为了 一个跨平台的驱动程序模型, 不仅如此, wd m 驱动程序还可以在不修改源代码的情况下经过重新编译后在 非i n t e l 平台上运行。 驱动程序是操作系统内核的一部分, 在计算机系统中起着举足轻重的作用。 驱动程序开发属于系统编程范畴,也是系统编程中比较困难的部分。选择驱动 程序开发技术作为课题研究内容主要基于以下几个方面考虑: 西北工业大学硕士论文无线网卡驱动程序设计与实现技术研究 第一章概论 1 . 1 课题研究意义和背景 本文以“ 无线移动自 组织互联网技术”课题为背景开展研究工作,无线移 动自 组织互联网是一种新型的无线移动网络,既可作为独立的网络运行,又可 作为有线 i n t e rn e t的接入网,能够有效地支持移动 e p业务。为了将 w i n d o w s 2 0 0 0 / x p端系统接入到无线移动自 组互联网中,需要使用特定的 无线 网 卡, 并且需要将wi n d o w s 2 0 0 0 / x p 原有的支持有线t c p / i p 协议转换为支持移 动i p 业务的无线t c p 协议,通过移动ip协议实现网络互联。 在传统的t c p / i p 协议中, 域名解析和地址解析会产生一定数量的数据, 而 这些数据通常有许多重复工作, 对于现有的有线网问题不大, 但对于无线网络, 则会增加了网络负担。因此,对传统的a r p 协议包采用a r p 代理的方法,从 无线网络层的相邻节点表中获取相应数据, 并做相应处理。 对于d n s ,同样采 用缓存代理的方法,将通过传统手段获取的域名解析结果存储,构成虚拟的域 名解析服务器,从而减少对已知域名解析的网络流量。 由 于无线网卡是自 主开发的, 因此需要在wi n d o w s 2 0 0 0 / x p 内 核下开发无 线网卡驱动程序,以满足无线网络环境下的数据传输。 m i c r o s o ft 公司推出的wi n d o w s 2 0 0 0 5 i,不但继承了w i n d o w s n t的 种种优 点, 而且在技术上又有了许多的突破, 其中之一就是w动程序系统结构的变化, 引入了 全新的w d m ( wi n 3 2 d r i v e r m o d e l ) 的 驱动程序构架。 w d m是m i c r o s o ft 公司在 1 9 9 7年提出的新技术,并在 wi n d o w s 9 8中得到应用,换句话说, wi n d o w s 9 8 也支持wd m。 这样w d m就成为了 一个跨平台的驱动程序模型, 不仅如此, wd m 驱动程序还可以在不修改源代码的情况下经过重新编译后在 非i n t e l 平台上运行。 驱动程序是操作系统内核的一部分, 在计算机系统中起着举足轻重的作用。 驱动程序开发属于系统编程范畴,也是系统编程中比较困难的部分。选择驱动 程序开发技术作为课题研究内容主要基于以下几个方面考虑: 西北工业大学硕士论文无线网卡驱动程序设计与实现技术 研究 1 、国内很多应用领域都有自行开发的硬件,这些硬件很多没有专门的 win d o w s 驱动程序, 或者只有在 wi n d o w s 9 x平台上的驱动程序,需要移植到 win d o w s 2 0 0 0 / 7 p平台上。 2 、很多新的wi n d o w s 2 0 0 0 / x p设备,如u s b设备、p c mc i a 合i e e e 1 3 9 4 . a c p i 等新硬件标准的设备,需要 支持。 设备以及符 驱动程序的 3 、 广义上讲, 内核模式程序都是以驱动程序的形式出现的。 实际上, 驱动 程序最有用的地方是它可以合法地进入内核模式。 对于程序调试器、病毒防火 墙、网 络防火墙、加密与解密等等,都需要高优先级的程序,这通常要用驱动 程序来实现。 wi n d o w s 2 0 0 0 融合了 分层操作系统和微内核操作系统的特点。 对性能影响 很大的操作系统组件在核心态下运行。在核心态下,组件可以和硬件交互,也 可以在组件之间进行交互,并且不会引起描述表切换和模式转变。例如,内存 管理器、 高速缓存管理器、 对象和安全管理器、网 络协议、 文件系统( 包括网络 服务器和重定向 程序 ) 、 所 有线程和进程管理都 运行在核心 态. 当 然, 所有这些 组件都应受到保护,以避免被其它应用程序侵扰,应用程序不能直接访问 操作 系统特性的 代码和数据( 尽管他们可以 快速调用其它的内 核服务) ,这种保护使 得wi n d o w s 2 0 0 0 成为坚固和稳定的应用程序服务器的原因之一。 1 . 2 本文主要研究内 容 在本课题中,本人承担了整个系统底层设备驱动程序开发任务。通过对课 题相关理论和开发技术的 深入研究和大量实践,己 经熟练掌握了wi n d o w s 2 0 0 0 下网络驱动程序开发技术,并且较好地完成了开发任务。具体的研究和开发工 作主要有以下几个方面: i . 设计和实现了基于 wi n d o w s 2 0 0 0环境下支持移动自 组织互联功能的 u s b无线网卡驱动程序,把具有自组织功能的无线网络适配器软硬件与 wi n d o w s 2 0 0 0 操作系统有机地结合起来, 提供适合于wi n d o w s 2 0 0 0 环境下的网 络层接口,实现网卡和上层软件的数据传递。 2 设计和实现了wi n d o w s 2 0 0 0 网络隧道驱动程序, 它是一种 n d i s中间层 西北工业大学硕士论文无线网卡驱动程序设计与实现技术 研究 1 、国内很多应用领域都有自行开发的硬件,这些硬件很多没有专门的 win d o w s 驱动程序, 或者只有在 wi n d o w s 9 x平台上的驱动程序,需要移植到 win d o w s 2 0 0 0 / 7 p平台上。 2 、很多新的wi n d o w s 2 0 0 0 / x p设备,如u s b设备、p c mc i a 合i e e e 1 3 9 4 . a c p i 等新硬件标准的设备,需要 支持。 设备以及符 驱动程序的 3 、 广义上讲, 内核模式程序都是以驱动程序的形式出现的。 实际上, 驱动 程序最有用的地方是它可以合法地进入内核模式。 对于程序调试器、病毒防火 墙、网 络防火墙、加密与解密等等,都需要高优先级的程序,这通常要用驱动 程序来实现。 wi n d o w s 2 0 0 0 融合了 分层操作系统和微内核操作系统的特点。 对性能影响 很大的操作系统组件在核心态下运行。在核心态下,组件可以和硬件交互,也 可以在组件之间进行交互,并且不会引起描述表切换和模式转变。例如,内存 管理器、 高速缓存管理器、 对象和安全管理器、网 络协议、 文件系统( 包括网络 服务器和重定向 程序 ) 、 所 有线程和进程管理都 运行在核心 态. 当 然, 所有这些 组件都应受到保护,以避免被其它应用程序侵扰,应用程序不能直接访问 操作 系统特性的 代码和数据( 尽管他们可以 快速调用其它的内 核服务) ,这种保护使 得wi n d o w s 2 0 0 0 成为坚固和稳定的应用程序服务器的原因之一。 1 . 2 本文主要研究内 容 在本课题中,本人承担了整个系统底层设备驱动程序开发任务。通过对课 题相关理论和开发技术的 深入研究和大量实践,己 经熟练掌握了wi n d o w s 2 0 0 0 下网络驱动程序开发技术,并且较好地完成了开发任务。具体的研究和开发工 作主要有以下几个方面: i . 设计和实现了基于 wi n d o w s 2 0 0 0环境下支持移动自 组织互联功能的 u s b无线网卡驱动程序,把具有自组织功能的无线网络适配器软硬件与 wi n d o w s 2 0 0 0 操作系统有机地结合起来, 提供适合于wi n d o w s 2 0 0 0 环境下的网 络层接口,实现网卡和上层软件的数据传递。 2 设计和实现了wi n d o w s 2 0 0 0 网络隧道驱动程序, 它是一种 n d i s中间层 西北工业大学硕士论文无线网卡驱动程序设计与实现技术研究 驱动程序,提供了网络数据包截获功能,从无线以太网卡上截获数据包,经过 处理后再通过n d i s中间层驱动程序将数据发送到上层协议驱动程序或下层的 微端口n i c ( 无线网 卡) ,从而满足了 特定应用的需要。 3 . 对驱动程序的编译、安装、调试和包装等技术进行了深入研究和实践, 掌握了其中的很多技巧,在驱动程序的工程化和产品化中发挥重要的作用。 西北工业大学硕士论文无线网卡驱动程序设计与实现技术研究 第二章 wi n d o w s 2 0 0 0 驱动程序开发技术 2 . 1 驱动程序中的对象 在wd m驱动程序和n t驱动程序中,系统使用多种对象作为其控制的各 种硬件设备的逻辑抽象。最常用的对象有: 1 . d r i v e r 对象 每个驱动程序有唯一的一个d r i v e r 对象。u o管理器使用d r i v e r 对象数据 结构代表每个设备驱动程序。这个对象中保存驱动程序各个例程的指针。利用 这些指针i / o管理器把i r p发送到正确的例程并执行。另外,d r i v e r 对象还有 指向这个驱动程序的设备链表的指针, 驱动程序可以通过它找到所控制的设备。 在u n l o a d 例程中, 用这个指针删除设备对象。 图2 . 1 给出了d r i v e r 对象的结构。 图2 . 1 驱动程序对象 对 象中的d e v i c e o b j e c t 域 ( p d e v i c e - o b j e c t ) 拥有一个设备对象数 据结 构串, 驱动程序管理的每个设备都有一个p d e v i c e 一o b j e c t . u 0管理器把 这些设 备 对象连 接起来并维 护这个域. 为了 删除这些d e v i c e o b j e c t , 会使 用这 些域来遍历设备对象链。wd m驱动程序可能并不特别需要使用这个域。 d r i v e r u n l o a d域 ( p d m v e r - u n l o a d ) 指向驱动程序中的一个清理函数, 西北工业大学硕士论文无线网卡驱动程序设计与实现技术研究 第二章 wi n d o w s 2 0 0 0 驱动程序开发技术 2 . 1 驱动程序中的对象 在wd m驱动程序和n t驱动程序中,系统使用多种对象作为其控制的各 种硬件设备的逻辑抽象。最常用的对象有: 1 . d r i v e r 对象 每个驱动程序有唯一的一个d r i v e r 对象。u o管理器使用d r i v e r 对象数据 结构代表每个设备驱动程序。这个对象中保存驱动程序各个例程的指针。利用 这些指针i / o管理器把i r p发送到正确的例程并执行。另外,d r i v e r 对象还有 指向这个驱动程序的设备链表的指针, 驱动程序可以通过它找到所控制的设备。 在u n l o a d 例程中, 用这个指针删除设备对象。 图2 . 1 给出了d r i v e r 对象的结构。 图2 . 1 驱动程序对象 对 象中的d e v i c e o b j e c t 域 ( p d e v i c e - o b j e c t ) 拥有一个设备对象数 据结 构串, 驱动程序管理的每个设备都有一个p d e v i c e 一o b j e c t . u 0管理器把 这些设 备 对象连 接起来并维 护这个域. 为了 删除这些d e v i c e o b j e c t , 会使 用这 些域来遍历设备对象链。wd m驱动程序可能并不特别需要使用这个域。 d r i v e r u n l o a d域 ( p d m v e r - u n l o a d ) 指向驱动程序中的一个清理函数, 西北工业大学硕士论文无线网卡驱动程序设计与实现技术研究 它和d r i v e r e n t ry对应, 是卸载驱动程序时清埋现场用的。 不过, w d m驱动程 序可能没有任何重要的清理工作要做,因为在wd m驱动程序中,这些工作通 常由p n p管理器完成。 m a j o r f u n c ti o n 域 ( p d r i v e r - d i s p a t c h 数 组 ) 是一 个 指 针数 组, 它 指向 驱 动程序中的回调函数, 这些函数处理大约2 0 种类型的i / o请求。 这个数组也有 大量的处理工作要做。因为它定义了如何使i / o请求进入我们编写的回调函数 代码。 2 . d e v i c e 对象 d e v i c e 对象是设备的软件抽象。它代表驱动程序所管理的设备。驱动程序 为它管理的每一个设备都建立一个 d e v i c e对象。内核对象保存有驱动程序 d e v i c e 对象的指针和当前设备干在处理的i r p 。 它还维护一个挂接到d e v i c e 对 象上的i r p 链表的指针。这个链表上的】 r p是所有等待该设备处理的i / o请求 的排队。 另外, d e v i c e 对象还有一个d e v i c e e x t e n s i o n 域。 这是一个可变大小的 非分页池,其具体的内容在驱动程序中设定。通常存放与设备有关的变量和使 用对象的指针。图2 . 2 给出了d e v i c e 对象的结构。 图2 .2 设备对象 d e v i c e 对象中的 d r i v e r o b j e c t 域( p d r i v e r - o b j e c t ) , 是用来指向 描述与核 设备对象相联的d e v i c e 对象。通常调用i o c r e a t e d e v i c e 创建d e v i c e 对象。过滤器 驱动程序有时需要使用这个指针来找到它们正在过滤的设备的d r i v e r 对象,以 便能 够查询m a j o r f u n c t i o n 表中的函 数入口。 西北工业大学硕士论文无线网卡驱动程序设计与实现技术研究 n e x t d e v i c e 域( p d e v i c e - o b j e c t ) , 指向 与本设备对象同属一 个驱动程序 的 下一个设备对象, 这个域把以 驱动 程序对象中的 d e v i c e o b j e c t 成员为 起始点的 设 备链接 起来。 对于w d m 驱动 程序来说, 没有必要使用这 个域。 c u m e n t i r p 域 ( p i r p ) ,指向当前正被s t a rt l o 函数处理的u o 请求包。d e v i c e e x t e n s i o n 域 ( p v o i d ) , 指向 程 序员自 己 定 义的 包含 设 备特 定 信息 的 数据 结 构。 1/ o 管 理 器为 该数据结构分配空间,不过它的名称与其中的内容完全由 程序员自己 决定。常 见约定是使用d e v i c e - e x t e n s i o n 类型声明数据结构。要用一个指向设备对 象的指针 ( 0 ! 如: f d o ) 访问 它, 例如: p de vi c e - e xt e ns i on p d x = ( p d e v i c e - e x t e n s i o n ) f d 。 一 d e v i c e e x t e n s i o n 3 . i n t e r r u p t 对象 i n t e r r u p t 对象用于给内 核的中断派发器提供指针, 在中断发生时找到正确的 中断服务例程。在驱动程序初始化时需要为设备或控制器支持的每个中断向量 创建一个 i n t e r r u p t 对象。 驱 动程序使用这 个对象 把中断向 量 和相应的 i s r 连接起 来。 发生中断时,内 核中断派发器使用i n t e r r p t 对象找到 i s r 例程。 在驱动程序 退出时,使用这个对象断开向量和i s r 的连接。 4 . c o n t r o l l e r 对象 一些适配卡使用同一组控制寄存器管理多个物理设备, 为了 解决资源冲突, u o 管理器提供了c o n t ro l l e r 对象。c o n t r o l l e r 在硬件上对应的就是这种管理多个 设备的控制设备,如软盘控制器。 在驱动程序初始化时, 创建c o n t r o l l e r 对象, 在d e v i c e e x t e n t i o n 中存放它的地址。在开始一个设备的操作前,要先请求对 c o n t r o l l e r 的 独占 拥有。 在设备操作结束时, 释放c o n t ro l l e r 对象。 在此期间 其他 设备操作由于不能申请到c o n t r o l l e r 将被阻塞,直到该对象被释放。 5 . a d a p t e 耐象 系统上的每个d m a 数据传输通道对应一个a d a p t e r 对象。 a d a p t e r 实现对 d m a 硬件的资源同步回调,机制基本上和c o n t r o l l e r 对象相同。所不同的是 a d a p t e r 由 h a l 在引 导过程中 检测相 应硬件 后创建。 这些对象实际上都是一些包含某些属性和回调函数指针的数据结构。系统 通过在这些对象之间 传递” u o 请求包,( , , ) , 以 及调 用这些对 象的回 调函 数来管 理和维护驱动程序。 2 . 2 驱动程序的基本例程 表2 . 1 中列出了 通常用来组成一个执行一般设备叮 o 操作的驱动程序的 例程、 这些例程被调用的条件和这些例程通常所做的工作。 西北工业大学硕士论文无线网卡驱动程序设计与实现技术研究 n e x t d e v i c e 域( p d e v i c e - o b j e c t ) , 指向 与本设备对象同属一 个驱动程序 的 下一个设备对象, 这个域把以 驱动 程序对象中的 d e v i c e o b j e c t 成员为 起始点的 设 备链接 起来。 对于w d m 驱动 程序来说, 没有必要使用这 个域。 c u m e n t i r p 域 ( p i r p ) ,指向当前正被s t a rt l o 函数处理的u o 请求包。d e v i c e e x t e n s i o n 域 ( p v o i d ) , 指向 程 序员自 己 定 义的 包含 设 备特 定 信息 的 数据 结 构。 1/ o 管 理 器为 该数据结构分配空间,不过它的名称与其中的内容完全由 程序员自己 决定。常 见约定是使用d e v i c e - e x t e n s i o n 类型声明数据结构。要用一个指向设备对 象的指针 ( 0 ! 如: f d o ) 访问 它, 例如: p de vi c e - e xt e ns i on p d x = ( p d e v i c e - e x t e n s i o n ) f d 。 一 d e v i c e e x t e n s i o n 3 . i n t e r r u p t 对象 i n t e r r u p t 对象用于给内 核的中断派发器提供指针, 在中断发生时找到正确的 中断服务例程。在驱动程序初始化时需要为设备或控制器支持的每个中断向量 创建一个 i n t e r r u p t 对象。 驱 动程序使用这 个对象 把中断向 量 和相应的 i s r 连接起 来。 发生中断时,内 核中断派发器使用i n t e r r p t 对象找到 i s r 例程。 在驱动程序 退出时,使用这个对象断开向量和i s r 的连接。 4 . c o n t r o l l e r 对象 一些适配卡使用同一组控制寄存器管理多个物理设备, 为了 解决资源冲突, u o 管理器提供了c o n t ro l l e r 对象。c o n t r o l l e r 在硬件上对应的就是这种管理多个 设备的控制设备,如软盘控制器。 在驱动程序初始化时, 创建c o n t r o l l e r 对象, 在d e v i c e e x t e n t i o n 中存放它的地址。在开始一个设备的操作前,要先请求对 c o n t r o l l e r 的 独占 拥有。 在设备操作结束时, 释放c o n t ro l l e r 对象。 在此期间 其他 设备操作由于不能申请到c o n t r o l l e r 将被阻塞,直到该对象被释放。 5 . a d a p t e 耐象 系统上的每个d m a 数据传输通道对应一个a d a p t e r 对象。 a d a p t e r 实现对 d m a 硬件的资源同步回调,机制基本上和c o n t r o l l e r 对象相同。所不同的是 a d a p t e r 由 h a l 在引 导过程中 检测相 应硬件 后创建。 这些对象实际上都是一些包含某些属性和回调函数指针的数据结构。系统 通过在这些对象之间 传递” u o 请求包,( , , ) , 以 及调 用这些对 象的回 调函 数来管 理和维护驱动程序。 2 . 2 驱动程序的基本例程 表2 . 1 中列出了 通常用来组成一个执行一般设备叮 o 操作的驱动程序的 例程、 这些例程被调用的条件和这些例程通常所做的工作。 西北工业大学硕士论文无线网卡驱动程序设计与实现技术研究 表2 . 1 驱动程序的例程 例程执行条件作用 d r i v e r e n t ry驱动程序装入初始化 un l o a d 驱动程序卸载清理分配的资源, 删除内 核对象 s h u t do w n系统关闭 在关机前保存驱动程序的某些状态 cr e a t w i n 3 2 用户调用c r e a f i l e 函数时响应用户请求的设各操作 cl o s e wi n 3 2 用户调用c l o s c h a n d l e 函数 时 re a d f i l e wi n 3 2 用户调用r c a d f i l c 函数时 wr i t e f i l ewi n 3 2 用户调用w r i t c i l e 函数时 de v i c e l o co n t r o lwi n 3 2 用户调用d e v i c e l o c o n t r o l 函 数时 s t a r t u o 开始设备操作进行实际的 ! o 操作 i s r 设备产生中断中断服务例程 资 源同步回调等待的资源变的可用时用于同步共享资源 dp c 由 i s r 申 请或由 其它事件触发, 在 优先级降 到 d i s p a t c h - le v e l 运行 通常进行i s r 的某些完成处理工作 a d d d e v i c e( 仅用于 wd m 驱动程序) p n p 管理器发现一个该驱动程序 支持的新硬件时调用 在wd m驱动程序中用于初始化珊 动程序,以 支持即 插即用 p n p c a l l b a c h( 仅用于 wd m驱动程序) p n p 管理器发出 p n p 消息时调用在wd m驱动程序中用于支持一勇 列p n p 消息 d i s p a t c h p o w e r ( 仅用 于 w d m 驱动程 序) 电 源管理器发出电 源管理消息时 调用 在) v d m驱动程序中用于支持电颁 管理消息 s y s t e rn c o n t ro l ( 仅用 wd m 驱动程序) wmi( wi n d o w s ma n a g e m e n t i n s t r u m e n t a t i o n ) 发出配置和管理 驱动程序的消息时调用 在w d m驱动程序中用于配置和催 理驱动程序 这 些 例 程的 名 字, 除了 初 始 化例 程的 名 字 必 须 为d ri v e r e n t ry 之 外, 其它 例 程的 名字都是在d r iv e r e n t r y 中 注册的, 因而这些例程的名字可以 是任意的。 u o 管理器是根据d ri v e r e n t ry 这个名字找到驱动程序的 初始化例程的, 所以 驱动程 序的初始化例程的名字是不能更改的。 西北工业大学硕士论文无线网卡驱动程序设计与实现技术研究 上述例程中,wd m驱动程序和普通的k e r n e l mo d e 驱动程序的区别主要是 wd m支持a d d d e v i c e 和p n p c a i i b a c k 这两个即插即用回调函数。 在普通的k e r n e l mo d e 驱动程序中, 所有的 初始化工作都在d r i v e r e n t ry 中完成:而在wd m驱动 程序中 , d r i v e r e n t ry 例程中 所做的 初 始化工作非常少, 只是注册一些回 调函 数 的名字,包括a d d d e v i c e , p n p c a l l b a c k , u n l o a d , wr i v e f i l e 等等。实际的初始 化工作都在a d d d e v i c e 例程中完成。 p n p 管理器发现该驱动程序支持的硬件时, 会调用该驱动程序的 a d d d e v i c e 回调函数执行针对该硬件的初始化工作。 而p n p 管理器要招待一些p n p 操作时,会向驱动程序发送一些p n p 消息,这些p n p 消息 会导致p n p c a i i b a c k 例程的执行。 d i s p a t c h p o w e r 和s y s t e m c o n t r o l 的 讨论较复 杂, 己 超出了 本文的范围, 不再 赘述。 2 . 3 wi n d o w s 2 0 0 0 网 络驱动程序基本结构 2 .3 . 1 wi n d o w s 2 0 0 0 网 络结构和通信模型 开发带有u s b 接口的以 太网卡驱动程序与开发通常的 u s b / wd m驱动程序 不同,它首先必须符合网 络驱动程序接口 规范( n d i s ) 。这里重点介绍一下 wi n d o w s 2 0 0 0 环境下网 络驱动程序的设计思想。 wi n d o w s 2 0 0 0 系统中的网络通 信模型如图 2 . 3 所示: 上层应用程序 网络协议栈 ndi s 网 卡 图2 .3 wi n d o w s 系统中的网络结构简图 其中,上层应用程序是指各种网络应用程序, 如i e , o u t lo o k 等;网络协议 栈是指各种wi n d o w s 支持的网络通信协议,如t c p / i p , n e t b e u i 等; n d i s ( n e t w o r k d r i v e r i n t e r f a c e s p e c i fi c a t i o n ) 是指wi n d o w s 网 络驱动接口 规范。 西北工业大学硕士论文无线网卡驱动程序设计与实现技术研究 上述例程中,wd m驱动程序和普通的k e r n e l mo d e 驱动程序的区别主要是 wd m支持a d d d e v i c e 和p n p c a i i b a c k 这两个即插即用回调函数。 在普通的k e r n e l mo d e 驱动程序中, 所有的 初始化工作都在d r i v e r e n t ry 中完成:而在wd m驱动 程序中 , d r i v e r e n t ry 例程中 所做的 初 始化工作非常少, 只是注册一些回 调函 数 的名字,包括a d d d e v i c e , p n p c a l l b a c k , u n l o a d , wr i v e f i l e 等等。实际的初始 化工作都在a d d d e v i c e 例程中完成。 p n p 管理器发现该驱动程序支持的硬件时, 会调用该驱动程序的 a d d d e v i c e 回调函数执行针对该硬件的初始化工作。 而p n p 管理器要招待一些p n p 操作时,会向驱动程序发送一些p n p 消息,这些p n p 消息 会导致p n p c a i i b a c k 例程的执行。 d i s p a t c h p o w e r 和s y s t e m c o n t r o l 的 讨论较复 杂, 己 超出了 本文的范围, 不再 赘述。 2 . 3 wi n d o w s 2 0 0 0 网 络驱动程序基本结构 2 .3 . 1 wi n d o w s 2 0 0 0 网 络结构和通信模型 开发带有u s b 接口的以 太网卡驱动程序与开发通常的 u s b / wd m驱动程序 不同,它首先必须符合网 络驱动程序接口 规范( n d i s ) 。这里重点介绍一下 wi n d o w s 2 0 0 0 环境下网 络驱动程序的设计思想。 wi n d o w s 2 0 0 0 系统中的网络通 信模型如图 2 . 3 所示: 上层应用程序 网络协议栈 ndi s 网 卡 图2 .3 wi n d o w s 系统中的网络结构简图 其中,上层应用程序是指各种网络应用程序, 如i e , o u t lo o k 等;网络协议 栈是指各种wi n d o w s 支持的网络通信协议,如t c p / i p , n e t b e u i 等; n d i s ( n e t w o r k d r i v e r i n t e r f a c e s p e c i fi c a t i o n ) 是指wi n d o w s 网 络驱动接口 规范。 西北工业大学硕士论文无线网卡驱动程序设计与实现技术研究 上述例程中,wd m驱动程序和普通的k e r n e l mo d e 驱动程序的区别主要是 wd m支持a d d d e v i c e 和p n p c a i i b a c k 这两个即插即用回调函数。 在普通的k e r n e l mo d e 驱动程序中, 所有的 初始化工作都在d r i v e r e n t ry 中完成:而在wd m驱动 程序中 , d r i v e r e n t ry 例程中 所做的 初 始化工作非常少, 只是注册一些回 调函 数 的名字,包括a d d d e v i

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论