(通信与信息系统专业论文)基于windows+ce的数据包截取技术研究.pdf_第1页
(通信与信息系统专业论文)基于windows+ce的数据包截取技术研究.pdf_第2页
(通信与信息系统专业论文)基于windows+ce的数据包截取技术研究.pdf_第3页
(通信与信息系统专业论文)基于windows+ce的数据包截取技术研究.pdf_第4页
(通信与信息系统专业论文)基于windows+ce的数据包截取技术研究.pdf_第5页
已阅读5页,还剩59页未读 继续免费阅读

(通信与信息系统专业论文)基于windows+ce的数据包截取技术研究.pdf.pdf 免费下载

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

文档简介

重庆邮电大学硕士论文 摘要 摘要 w i n d o w sc e 嵌入式系统软件与通用操作系统( 如w i n d o w s2 0 0 0 x p ) 软件兼 容性非常好,可以稍加改动就能将通用操作系统下的软件移植到w i n d o w sc e 下, 方便了w i n d o w sc e 系统下的软件开发。但是在w i n d o w sc e 下,由于微软没有为 其提供底层驱动与应用程序交互的接口函数。接口函数成为了通用操作系统软件移 植到w i n d o w sc e 下应用程序开发的瓶颈之一,解决这些接口问题,可以使这些移 植到w i n d o w sc e 下的应用程序性能得到充分发挥。 由于微软没有为w i n d o w sc e 下的中间层驱动程序提供与应用程序交互的专门 的接口函数,如n d i s m r e g i s t e r d e v i c e 、i o c r e a t d e v i c e 和i o c r e a t e d e v i c e s e c u r e 等,使 得一些通用操作系统下的网络软件移植到w i n d o w sc e 下后,性能的充分发挥受到 影响。 本文根据w i n d o w sc e 下底层驱动与上层应用程序交互的特点,即利用流接口 驱动程序可以实现底层驱动与上层应用程序的交互,以及w i n d o w sc e 下中间层驱 动程序的原理,通过流接口驱动程序实现了中间层驱动程序与上层应用程序的交互, 解决了w i n d o w sc e 下中间层驱动程序与上层应用程序交互的接口难题。论文首先 介绍了w i n d o w sc e 体系结构:深入分析和研究了两种驱动程序:流接口驱动程序 和n d i s 驱动模型,以及流接口函数、流驱动程序的加载方式和n - d i s 下的中间层 驱动程序。然后给出了一种在w i n d o w sc e 下实现中间层驱动程序动态加载的方法, 使得开发人员在具体应用开发时大幅提高效率。同时给出了利用中间层驱动程序进 行底层数据包截获的设计与实现方法,最后给出了系统总体设计,实现了中间层驱 动程序与应用程序的交互,使应用程序可以获取中间层驱动程序从底层截获的完整 数据包。 本文给出了w i n d o w sc e 下利用流接口驱动实现中间层驱动程序的动态加载方 法,利用中间驱动截获底层数据包,然后解决了中间层与上层应用程序数据交互的 接口难题。 关键词:n d i s ,中间层驱动程序,流接口驱动程序,w i n d o w sc e ,截包 重庆邮电大学硕十论文 a b s t r a c t a b s 仃a c t s o f t w a r eo fw i n d o w sc ee m b e d d e ds y s t e ma n dg e n e r a l p u r p o s eo p e r a t i n gs y s t e m ( s u c ha sw i n d o w s2 0 0 0 x p ) c o m p a t i b i l i t yi sv e r yg o o d ,j u s tal i t t l ec h a n g e ,s o f t w a r eo f g e n e r a l - p u r p o s eo p e r a t i n gs y s t e mc a nb ep o r t e dt ow i n d o w sc e ,w h i c hi sc o n v e n i e n tf o r d e v e l o p i n go fs o f t w a r eu n d e rt h ew i n d o w sc e b u tm i c r o s o f td i dn o tp r o v i d ei n t e r f a c e b e t w e e nl o w l e v e ld r i v e ra n da p p l i c a t i o np r o g r a mf o rw i n d o w sc e i n t e r f a c eb e c o m e s t h eo n eb o t t l e n e c ko fs o r w a r et r a n s p o r t a t i o nb e t w e e nw i n d o w sa n dw i n d o w sc e s o l v i n gt h ep r o b l e m ,t h es o f t w a r eo f b e i n gp o r t e dt ow i n c e c a np l a yi t sp e r f o r m a n c e s i n c em i c r o s o f td o e sn o tp r o v i d es p e c i a li n t e r f a c ef o rc o m m u n i c a t i o nb e t w e e n i n t e r m e d i a t ed r i v e ra n d a p p l i c a t i o np r o g r a m ,s u c h a s n d i s m r e g i s t e r d e v i c e 、 i o c r e a t d e v i c ea n di o c r e a t d e v i c e s e c u r e ,a f t e ra p p l i c a t i o np r o g r a mb e i n gp o r t e dt o w i n d o w sc e ,t h ep e r f o r m a n c ec a nn o tb ef u l l y i nt h i sp a p e r ,b yt h ef e a t u r e so fc o m m u n i c a t i o nb e t w e e nl o w l e v e ld r i v e ra n du p p e r a p p l i c a t i o np r o g r a m ,a n db a s i cp r i n c i p l eo fi n t e r m e d i a t ed r i v e ru n d e rw i n d o w sc e , u s i n gs t r e a mi n t e r f a c er e a l i z e st h ec o m m u n i c a t i o nb e t w e e ni n t e r m e d i a t e d r i v e ra n d a p p l i c a t i o np r o g r a m ,t h a ti s t os a y , i ts o l v e st h ei n t r i c a t ep r o b l e mo fi n t e r f a c eo f c o m m u n i c a t i o nb e t w e e ni n t e r m e d i a t ed r i v e ra n da p p l i c a t i o np r o g r a m t h ep a p e r i n t r o d u c e st h ea r c h i t e c t u r eo fw i n d o w sc ef i r s t l y ;i n - d e p t ha n a l y s i sa n dr e s e a c ht ot w o d r i v e r s :s t r e a mi n t e r f a c ed r i v e ra n dt h en d i sd r i v e rm o d e l ,a n dt h es t r e a mi n t e f f a c e f u n c t i o n s 、l o a d i n gm e t h o do fs t r e a md r i v e r 、i n t e r m e d i a t ed r i v e ri nn d i s t h e n i tg i v e sa m e t h o do fd y n a m i cl o a d i n gi n t e r m e d i a t ed r i v e ru n d e rw i n d o w sc e ,w h i c hm a k e s d e v e l o p e rm o r ee f f i c i e n tw h e nd e v e l o p i n g a tt h es a m et i m e ,菩v i n gt h em e t h o do fd e s i g n a n di m p l e m e n t a t i o n , b yw h i c hi n t e r m e d i a t ed r i v e rc a p t u r e st h el o w e rp a c k e t s a tl a s t , p r o v i d i n gt h eo v e r a l ld e s i g no fs y s t e m ,w h i c hr e a l i z e st h ec o m m u n i c a t i o nb e t w e e n i n t e r m e d i a t ed r i v e ra n da p p l i c a t i o np r o g r a m a n da p p l i c a t i o np r o g r a mc a p t u r e st h e p a c k e t s ,w h i c hi n t e r m e d i a t ed r i v e rc a p t u r ef r o ml o w i nt h i sp a p e r , i t 百y e sam e t h o do fd y n a m i cl o a d i n gi n t e r m e d i a t ed r i v e ru n d e r w i n d o w sc e ,c a p t u r i n gp a c k e t sb yi n t e r m e d i a t ed r i v e ra n ds o l v e st h ep r o b l e mo f c o m m u n i c a t i o nb e t w e e ni n t e r m e d i a t ed r i v e ra n da p p l i c a t i o np r o g r a m k e y w a r d s :n d i s ,i n t e r m e d i a t ed r i v e r , s t r e a md r i v e r s ,w i n d o w sc e ,c a p t u r ep a c k e t i l 重庆邮电大学硕士论文 第一章绪论 1 1 选题背景及意义 第一章绪论 在全球通信网络高速发展的今天,嵌入式设备联网也越来越普遍,如比较熟悉 的手机上网就是嵌入式设备联网的一个很好例子。除了手机外,手持式网络测试仪 是嵌入式设备中的一个典型例子,这类设备通常专门用于一些专业场合,如流量测 量、网络性能分析、网络故障排查等。手持式网络测试仪要实现这些功能都离不开 数据包的获取,数据包的获取又可以称为抓包或截包,所谓抓包是指直接获取数据 包,通过事先设定好的一些规则,如设定要获取的数据包类型,对数据包进行判断, 决定数据包的捕获。抓包技术在w i n d o w s 操作系统( 如w i n d o w s2 0 0 0 x p ) 下应 用广泛,比较常见的抓包工具有s n i f f e r 、w i r e s h a r k 、w i n n e t c a p 等。 这类抓包工具有的是在用户态下开发,有的是在内核态下开发的,不论是在用 户态下开发还是内核态下开发,微软都提供了相应的抓包机制,如在用户态下提供 的机制有:w i n s o c kl a y e r e ds e r v i c ep r o v i d e r ( l s p ) ( 也称为s p i ( s e r v i c ep r o v i d e r i n t e r f a c e ) 截包技术) 、w i n d o w s2 0 0 0 x p 包过滤接口、替换系统自带的w i n s o c k 动态连接库;内核态下提供的机制有:t d i 过滤驱动程序( t d if i l t e rd r i v e r ) 、n d i s 中间层驱动程序( n d i si n t e r m e d i a t ed r i v e r ) 、w i n 2 kf i l t e r - h o o kd r i v e r 、w i n 2 k f i r e w a l l h o o kd r i v e r 、n d i sh o o kd r i v 一2 1 。微软提供的这些机制还为开发人员在 w i n d o w s2 0 0 0 x p 这类通用操作系统下开发各种抓包软件提供了相应的函数库,如 用户态下提供了w i n s o e k 接口、内核态下提供了库函数n d i s m r e g i s t e r d e v i c e 、 i o c r e a t d e v i e e 和i o c r e a t e d e v i c e s e c u r e 等,为实现应用层对底层数据包的截获提供 了方便,可以通过这些接口函数实现底层与应用层的交互。 w i n d o w sc e 作为w i n d o w s 嵌入式系统,从1 9 9 6 年发布到今天已经走过了十多 年的历程,成为主流嵌入式系统之一,与另外一个主流嵌入式系统l i n u x 并驾齐驱, 占有很大的嵌入式市场份额【3 】。 尽管w i n d o w sc e 与w i n d o w s 通用操作系统( w i n d o w s2 0 0 0 x p 这类系统) 在 应用层软件上有很高的兼容性 4 1 ,但是w i n d o w s 通用操作系统提供的很多接口函数 在w i n d o w sc e 下都不支持,如前面提到的库函数n d i s m r e g i s t e r d e v i c e 、 i o c r e a t d e v i c e 和i o c r e a t e d e v i c e s e c u r e 等,在w i n d o w s2 0 0 0 x p 下可以直接使用实 现底层网络驱动与应用程序的交互,w i n d o w sc e 并不支持这类函数,所以接口函 重庆邮电大学硕士论文 第一章绪论 数成为w i n d o w sc e 下应用程序开发的瓶颈之一【5 1 。通过这些接e l 函数的实现,就 能够实现上层与底层的交互,底层设备为应用程序服务。 截获信息完整的数据包是大量网络应用的重要前提【6 j ,但是w i n d o w sc e 下实 现应用层数据包的获取并不是一件容易的事,微软为w i n d o w sc e 提供的截包机制 并不多,或者说没有为它专门订制截包机制。类似于w i n d o w s 通用操作系统下的网 络截包机制,我们将w i n d o w sc e 下的截包机制分为两大类,即用户态截包和内核 态截包。在用户态下,有些数据包是不能截获到的,如i c m p 包、p i n g 包等,因为 这类包在协议层就进行了处理,不上传到应用程序;而且,有些病毒会利用t c p i p 协议驱动程序提供的接口,绕过应用层, 好的选择是从内核态截获所有的数据包, 较大【7 1 。 使得这类数据包不能被截获到,所以比较 然后提供给应用层,只是这样做的难度比 本文的研究目标就是在内核态下,采用中间层驱动程序获取底层所有数据包, 利用流接口驱动程序解决中间层驱动程序的动态加载问题,以及中间驱动与应用层 程序交互时的接口难题,最终实现将中间层驱动程序捕获的数据包上传给应用程序。 本文所设计的系统有如下优点: 模块化设计,每个模块完成一个具体功能,这样做便于调试,稳定性好,而 且可靠,各个模块互不干扰,方便为各个模块扩充功能。 可以使数据包的处理在应用层进行,增强了本系统与移植到w i n d o w sc e 下 的软件的兼容性,降低底层开发难度,缩短开发周期,对数据包的处理更加灵活, 扩展性好。 为各种应用程序提供信息更完整的数据包,有利于现有或新的应用提高功能 和性能。 1 2 研究现状 w i n d o w sc e 是微软基于早期操作系统w i n d o w s9 5 开发的一个嵌入式系统,所 以尽管后来微软提出了各种截包机制用来截获网络数据包,但是这些机制大多数都 不适用于w i n d o w sc e 系统,只有少部分从实现原理上相同。w i n d o w sc e 的网络体 系结构与w i n d o w s2 0 0 0 x p 操作系统的网络结构大体上基本相似,所以w i n d o w sc e 在网络数据包的截获实现原理上可以参考w i n d o w s2 0 0 0 x p 下面的一些实现机制, 例如他们都支持n d i s 驱动模型的协议驱动和中间层驱动【8 】。这两种驱动都是处于 内核态下,网络数据包在w i n d o w sc e 与w i n d o w s2 0 0 0 x p 下的两种驱动中数据处 理原理基本相同,所以基于这两种驱动,w i n d o w sc e 下的截包技术可以参照 2 重庆邮电大学硕士论文 第一章绪论 w i n d o w s2 0 0 0 x p 下的截包机制。 首先是基于协议驱动的截包机制。在w i n d o w s2 0 0 0 x p 系统下提供了t d i 过滤 驱动程序( t d if i l t e rd r i v e r ) ,即传输层过滤驱动程序,这种机制通过驱动程序创建 一个或多个设备对象,如d e v i c e r a w l p 、d e v i c e u d p 、d e v i c e t c p 、d e v i c e l p 、 d e v i c e m u l t i c a s t 。然后将它们直接挂接到一个现有的驱动程序之上。在w i n d o w s n t 2 0 0 0 x p 下,这个驱动程序表现为t c p i p s y s 。过滤层驱动程序为上层应用程序 提供标准接口实现过滤层驱动程序与应用程序之间的交互,上层应用程序进行网络 数据包的发送或接收,都是通过这些标准接口来实现的。这种截包技术能够截获用 户态下不能截获的数据包,能获取到当前进程的详细信息,被很多防火墙的开发所 使用。但是这种截包技术由于位于t c p p s y s 之上,对于在t c p i p s y s 中就进行 处理的数据包却无能为力,如i c m p 包,也就是说它捕获不了i c m p 包。在w i n d o w s c e 下也提供了一种类似的数据包截获机制,这种截包技术同样也是位于t c p i p 层 之上,只不过是以d l l 动态链接的形式出现。在w i n d o w sc e 下表现为 n d i s u i o d l l ,它为上层应用程序提供w i n d o w sc e 专用的标准接口流接口, 通过流接口上层应用程序就能够进行网络数据包的发送和接收了,这种抓包技术比 较有代表性的就是早期w i n d o w sc e3 0 下开发的一款抓包软件p a c k e t c e ,之后 在w i n d o w sc e4 2 和w i n d o w sc e5 0 下开发的各种抓包软件都是基于p c k e t c e 进 行修改来实现网络数据包的截获的。很明显这这种抓包软件同样不能截获i c m p 包。 其次是基于中间层驱动程序( n d r si n t e r m e d i a t ed r i v e r ) 的截包机制。中间层驱动 程序介于协议层驱动和小端口驱动之间,它能够截获所有的网络数据包。在w i n d o w s 2 0 0 0 x p 及以后版本,微软提供n d i s m r e g i s t e r d e v i c e ( ) 和i o c r e a t e d e v i c e ( ) 等 库函数并且支持派发函数( d r i v e r o b j e c t m a j o r f u n c t i o n ( 功能代码) ) 。作为驱动对 象一部分的派发函数实现与上层应用程序的接口,便于在这些系统下开发中间层驱 动程序的扩展功能【9 】,与应用程序的交互也相对容易些,所以在w i n d o w s2 0 0 0 x p 下中间层驱动很早就为上层应用提供服务。但是在w i n d o w sc e 下,中间层驱动并 没有为它提供上面那些函数,所以在w i n d o w sc e 下,中间层驱动程序的应用,基 本都停留在数据过滤技术的应用上【1 0 1 ,这种技术主要是在中间层驱动程序中设定一 些规则,对数据包进行过滤,决定数据包的放行与否,再决定将数据包上传给上层 协议驱动程序,这种技术主要应用于防火墙。 目前,基于中间层驱动,为应用程序提供数据包截获服务的成熟产品还很少见 到,因此,为使各种w i n d o w s 网络应用软件在移植到w i n d o w sc e 下时,不影响其 功能和性能的发挥,研究如何利用中间层驱动程序来截获底层数据包,并提供给应 用程序就显得很有实际意义。 3 重庆邮电大学硕七论文 第一章绪论 1 3 论文主要工作 本文首先介绍了截包技术研究的背景及意义,然后给出了目前w i n d o w sc e 截 包技术的研究与发展现状,并对这些截包技术进行分析比较。在研究和解决相关技 术难题后,最后设计并实现了w i n d o w sc e 下基于n d i s 中间层驱动程序,能够截 获数据包并上传给应用程序的系统。论文的工作主要包括: 熟悉w i n d o w sc e 操作系统的体系结构和网络体系结构:对流接口驱动程序 和n d i s 驱动模型进行研究分析,并重点研究了w i n d o w sc e 下流驱动的加载机制 和n d i s 中间层驱动程序;熟悉集成开发工具p l a t f o r mb u i l d e r 等的使用方法。 研究分析w i n d o w sc e 系统下流驱动的加载方式及中间驱动加载的实现,提 出一种动态加载( 即由应用程序来主导加载) 中间层驱动程序的方法,实现两类驱 动的同时加载,使得开发人员在具体应用开发时,大幅提高效率。 基于中间层驱动程序框架,在中问层驱动程序的函数中添加相关算法,以截 获底层小端口驱动中的数据包,并保存在为中间层驱动程序分配的缓存区中。 实现流驱动与中间驱动数据的交互,设计流接口驱动程序,实现流驱动函数 从分配给中间层驱动程序的缓存区中获取数据包。 对两类驱动的加载进行测试,并对应用程序能否获取底层数据包进行测试。 1 4 论文结构安排 第一章:概述本论文的选题背景及意义、研究现状,同时对两种截包技术进行 了比较分析。 第二章:介绍了w i n d o w sc e 的体系结构、网络系统结构、流驱动模型、n d i s 驱动模型,驱动加载方式及开发工具,并重点介绍了n d i s 中间层驱动程序。 第三章:设计并实现通过流驱动对n d i s 中间驱动的加载。 第四章:中间驱动截包设计及实现。 第五章:总体设计系统,实现流驱动与中间驱动的交互,应用程序最终读取到 底层数据包。 第六章:对系统的实现过程分别进行测试。 第七章:总结本论文的研究结果,对下一步的研究方向提出意见。 4 重庆邮电大学硕士论文 第二章w i n d o w sc e 及驱动简介 第二章w i n d o w sc e 及驱动简介 1 9 9 6 年微软发布了w i n d o w sc e 的第一个版本w i n d o w sc e1 0 ,到今天的 w i n d o w se m b e d d e dc e 6 0 ,在技术和市场上都取得了巨大成功。w i i l d o w sc e 是3 2 位、嵌入式、实时、多任务和模块化的操作系统,具有可靠性好、实时性强、内核 体积小以及开放源代码等特点。被广泛应用于工业控制、汽车电子、移动通信、信 息家电、航空航天、军事、个人电子消费品等各个领域【l 。1 。w i n d o w sc e 支持x 8 6 、 a r m 、m i p s 和s h 四种处理器架构,支持w i f i ,u s b2 0 等新型设备,并具有强 大的多媒体功能。 2 1w i n d o w sc e 的结构 w i n d o w sc e 系统从下到上依次是:硬件层、o e m 层、操作系统层和应用程序 层,共四层1 2 1 。w i n d o w sc e 体系结构如图2 1 所示。 卜瞄觚啡n d o w sc e f c 。f f j 序m 蓄i l 客户和服务开发 i 操作系统层 l 核心。l l ii 对象存储 l 图彤词u 利争仟 l 多媒体技术 系统 卜管理器ll 别鬻和l( g w e s ) i 扬山 i o a l 层 u 七m 层 冈网 驱动程序 l = i l堑i 硬件层 5 重庆邮电大学硕七论文 第二章w i n d o w sc e 及驱动简介 2 1 1w i n d o w sc e 硬件层 硬件层指的是我们肉眼可以看到的一些物理实体,硬件层在整个系统中的作用 是隐形的。它的功能不像应用层那样可以很直观的体现出来,可以说硬件层扮演着 无名英雄的角色。它为上层应用程序服务,是整个系统的载体,影响着系统性能的 发挥。对于w i n d o w sc e 操作系统,硬件层至少需要3 2 位处理器、实时时钟、存储 器这几个基本组件,才能保证w i n d o w sc e 进行简单的正常运行。通常,我们还会 看到串口、网卡、键盘、鼠标这些硬件实体,这些硬件都是在基本组件的基础上外 扩而来的。根据硬件层硬件的不同,定制的w i n d o w sc e 系统就会有所差别。 2 1 2o e m 层 为了减轻开发难度和缩短开发周期,w i n d o w sc e 在硬件层和操作系统之间引 入了一个逻辑层,即o e m 层。o e m 主要涉及硬件相关的代码,它将底层硬件抽象 出来,不需要与a p i 直接进行交互,a p i 通过o e m 就可以对底层硬件进行操控, 实现了操作系统的可移植性。o e m 层包括o e m 适配层( 0 a l ) 、引导程序b o o t l o a d e l 、配置文件和驱动程序4 个模块。 o a l 主要与操作系统的内核相关,它屏蔽了处理器平台的细节,增强w i n d o w s c e 操作系统内核的可移植性;引导程序是系统上电后最先运行的一段代码,主要 是将操作系统内核调入内存;配置文件主要实现各种硬件系统相关文件的配置;驱 动程序使操作系统能够操控不同的硬件,实现上层软件与具体硬件的分离,因而在 嵌入式系统中非常重要。 2 1 3 操作系统层 在w i n d o w sc e 操作系统中,不论是o e m 层还是上层的应用程序都需要相对 应的接口和服务,才能实现层与层直接的相互通信,操作系统层就是为提供这些接 口和服务而存在的,要是没有操作系统层,一切都无从谈起,可见操作系统层起到 了核心作用。这一层主要实现的功能包括进程管理、线程管理、处理机管理、调度、 物理内存和虚拟内存管理、文件系统及设备管理等。w i n d o w sc e 操作系统的基本 功能包括内核n k e x e ( 提供系统服务) :图形系统g w e s e x e ( 提供g u l 支持) ; 对象存储f i l e s y s e x e ( 提供文件系统服务) ;设备管理系统d e v i c e e x e ( 加 载和维护设备驱动) :服务s e r v i c e s e x e ( 提供加载系统服务) ,它们都是由各 6 重庆邮电大学硕七论文 第二章w i n d o w sc e 及驱动简介 个相互独立的进程( e x e ) 来实现的。 2 1 4 应用程序层 应用程序层最直观,它直接面向用户,开发人员开发的各种产品,其功能都是 通过应用程序层体现出来的,可以用它来衡量一个系统的价值。在w i n d o w sc e 下, w i n d o w sc e 为通过w i n 3 2a p i 为应用程序提供服务,利用w i n d o w sc es h e l la p i 在应用程序层可以开发自己的s h e l l ,即外壳模块。 从图中我们可以看到,w i n d o w sc e 采用模块化的体系结构,这种结构层次性 强,各个模块功能明确,使得移植性更好,裁剪掉各个模块也不影响其它模块的性 能,体系了裁减性好的优势,同时还提供编程接口和支持上层面向用户的应用等特 点。 2 2w i n d o w sc e 的网络体系结构 为了方便对w i n d o w sc e 网络体系结构的理解,现将网络通信模块影射到o s i 的7 层参考模块下。它的体系结构如图2 2 所示。从图可以看到,网络体系结构从 下往上依次是:物理层、数据链路层、网络层、传输层、会话层、表示层、应用层 【1 3 】 o 2 2 1 物理层 w i n d o w sc e 支持多种方式的数据通信模式。w i n d o w sc e 支持各种各样的数据 通信离不开传输介质,通过各种传输介质,w i n d o w sc e 实现了网络连接和通信。 这些介质可以是串口、并口、网络接口卡、蓝牙设备等。这些设备位于w i n d o w s c e 网络体系结构的硬件层,即物理层。物理层都是为上层系统服务的。 2 2 2 数据链路层 w i n d o w sc e 下的数据链路层支持串行i o 和局域网( l a n ) ,它提供对物理设 备的支持。从结构图中我们可以看到,其实数据链路层就是底层软件层,在这一层 中运行着与物理层各种设备相对应的驱动程序,数据链路层通过这些驱动程序将物 理层抽象化,上层应用程序不需要了解物理层,通过数据链路层,物理层就可以为 7 重庆邮电大学硕+ 论文 第二章w i n d o w sc e 及驱动简介 应用程序服务。如n d i s 驱动程序就是位于这一层。 应用程序 7 :应用层 l 。lj 6 表示层 蓝牙高 r a sw n c ts s p i 层协议 w i n l n e t 5 :会话层 。 i寻 、 寻 s e c u r e n e t b l 0 ss c h a n n e i w i n s o c k s o c k e t jiji t c p4 :传输层 t c pu d p 1r i r d a 协 i p i c m p a r p 议 3 :网络层 ji jl 1r 1r t a hh 芝:。h 掣y 、产re1r i 串口驱动程序n 。i s 驱动程序 h c i 驱动 2 :数据链路层 1 i i_ - l 串口 红外i n c 8 0 2 1 1 设 = ll 蓝牙 ,:物理层 i 串口i备 2 2 3 网络层和传输层 图2 2w i n d o w sc e 网络体系结构图 从图中可以看到,t c p i p 就位于这两层,是这两层的核心。t c p i p 是i n t c m e t 的一个公认标准,它允许共同工作的计算机或设备通过网络共享资源。它支持p 协 议、a r p 协议、i c m p 协议、i g m p 协议、t c p 协议和u d p 协议。可将t c p i p 分 为:主机到网络、互联网层、传输层和应用层4 层。互联网层和传输层非常重要。 互联网层定义了分组格式和协议,即p ( i n t e r a c tp r o t o c 0 1 ) 。无连接的网络层是互 联网层的基础。传输层定义了两个端到端的传输协议,即传输控制协议和用户数据 报协议。传输控制协议比用户数据报协议可靠,因为它是面向连接的【l4 】。 重庆邮电大学硕士论文 第二二章w i n d o w sc e 及驱动简介 2 2 4 会话层、表示层和应用层 其实会话层、表示层和应用层都属于应用程序的范畴,它们构成了7 层模型的 高层。依赖于传输层、网络层、数据链路层和物理层,对低级通信进行处理。 2 3 流接口驱动程序 2 3 1 流驱动模型 每个流接口驱动程序必须实现一组标准函数,用来完成标准的文件i o 函数和 电源管理函数,这些函数提供给w i n d o w sc e 操作系统的内核使用。编译后的流接 口驱动程序最终生成的驱动程序文件为d l l 文件,通常这些接口函数被叫做流接口 驱动程序的d l l 接口。 w i n d o w sc e 中流接口驱动程序是以动态链接库的形式存在,它的模型如图2 3 所示。 用户应用程序 0 篙7 文件系统码| 一姗t 擘叫流式驱动程序 厂s 内核 叫设备管理器 本机设备驱动程 序 土土 基于w i n d o w sc e 的平台 v 底层设备 图2 3 流驱动模型结构 从图中可以看到,流接口驱动程序由设备管理器( d e v i c e m a n a g e r ) 统一加载、 管理和卸载。底层设备被流接口驱动程序表示为文件系统的一个特殊文件,由设备 驱动程序进行控制,上层用户应用程序要想对底层设备进行访问,必须首先通过调 用文件系统才能实现。文件系统使得上层应用程序对底层设备的访问变得十分容易, 9 重庆邮电大学硕士论文 第二章w i n d o w sc e 及驱动简介 即应用程序( a p p l i c a t i o n ) 使用w i n d o w sc e 操作系统的文件a p i 函数和流接口进 行通信,从而达到应用程序访问驱动程序、操作硬件的目的【1 5 】。 w i n d o w sc e 采用一种与其他操作系统不同的命名方式来识别不同的流接口设 备。一个有效的流接口设备名包括:三个大写字母组合的设备文件名前缀( p r e f i x ) , 索引编号( i n d e x ) 和一个冒号【1 6 1 。 2 3 2 流接口函数 在流接口驱动模型中提供了w i n d o w sc e 规范的主要十个接口函数【。q 由a c t i v a t e d e v i c e e x ( ) 函数调用的初始化函数d w o r dx x x i n i t ( d w o r d d w c o n t e x 0 。 由c r e a t f i l e ( ) 函数调用的设备驱动打开函数d w o r dx x x o p e n ( d w o r d h d e v i c e c o n t e x t ,d w o r da c c e s s c o d e ,d w o r ds h a r e m o d e ) 。 由d e a c t i v a t e d e v i c e ( ) 函数调用的卸载函数b o o lx x xd e i n i t ( d w o r d d w c o n t e x t ) 。 由c l o s e h a n d l e r ( ) 函数调用的设备驱动关闭函数b o o lx x xc l o s e ( d w o r d h o p e n c o n t e x t ) 。 由d e v i c e c o n t r o l ( )函数调用的功能扩展函数b o o l x x x _ i o c o n t r o l ( d w o r dh o p e n c o n t e x t ,d w o r dd w c o d e ,p b y t ep b u f l n ,d w o r d d w l e n i n , p b y t ep b u f o u t ,d w o r dd w l e n o u t ,p d w o r dp d w a c t u a l o u t ) 。 由r e a d f i l e ( ) 函数调用的设备数据读出函数d w o r dx x x r e a d ( d w o r d h o p e n c o n t e x t ,l p v o i dp b u f f e t ,d w o r dc o u n t ) 。 由w r i t e f i l e ( ) 函数调用的将数据写入设备的函数d w o r d x x x _ w r i t e ( d w o r dh o p e n c o n t e x t ,l p v o i dp b u f f e r , d w o r dc o u n t ) 。 由s e t f i l e p o i n t e r ( ) 函数调用的数据指针操作函数d w o r d x x x _ s e e k ( d w o r dh o p e n c o n t e x t ,l o n ga m o u n t ,d w o r dt y p e ) 。 系统挂起函数v o i dx x xp o w e r d o w n ( v o i d ) 。 系统重启函数v o i dx x x _ p o w e r u p ( v o i d ) 。 这十个接口函数在w i n d o w sc e 嵌入式的开发中非常重要,因为通过这十个接 口函数,可以将几乎所有的外围设备抽象化,应用程序不用管外围设备的具体操作, 就能够通过这十个接口函数实现对外扩设备的控制。并且这十个接口函数可以直接 与上层应用程序进行直接交互,使得这十个接口函数成为了上层应用程序与底层设 备最常用的接口。通常在开发底层设备的时候都需要用到这十个接口函数。 这十个接1 2 1 函数在系统的开发过程中可以采用三种加载机制。第一种加载类型 1 0 重庆邮电大学硕士论文 第二章w i n d o w sc e 及驱动简介 是在系统启动的时候进行的。第二种加载类型是针对那些在w i n d o w sc e 下,系统 能够自动检测到的外围设备,在设备管理程序自动检测外围设备与基于w i n d o w sc e 平台的连接时进行的。第三种加载类型是针对串行设备的,这类设备在w i n d o w sc e 下不支持自动检测,所以设备管理器不能够自动检测到,不能对它们进行驱动程序 的自动加载【1 8 1 。 2 3 3 流驱动加载机制介绍 系统启动时加载流接口驱动程序。这种加载方式是在w i n d o w sc e 系统启动 时,启动设备管理器。在注册表中的h k e yl o c a lm a c h n e r i v e r s 也u i l 妇, 在这个键下保存着需要系统启动时加载的流接口驱动程序,设备管理器通过读取这 个注册表键的内容,进行流接口驱动程序的加载。 在设备管理器自动检测外围设备与基于w i n d o w sc e 平台的连接时进行。这 种加载方式是通过调用r e g i s t e r d e v i e e 函数来完成的。也是由设备管理器调用。这 种加载方式是这样实现的:通过调用r e g i s t e r d e v i c e 在 h k e yl o c a lm a c h i n e k d r i v e r s k a c t i v e 键中生成一个已编号的子键来跟踪这个 驱动程序。对于流接口驱动程序则锁入工作区r a m 。这样做可以防止程序被换出, 也防止页面调度活动,该活动在服务中断时会减慢驱动程序操作。 设备管理器程序不能够自动检测或加载某一驱动程序的时候,这种情况设备 管理可以通过调用函数a c t i v a t e d e v i c e e x 来实现驱动程序的加载。只不过在调用 a c t i v a t e d e v i c e e x 函数加载驱动程序之前要确保一些必要的信息,如流接口函数的 前缀、驱动动态库文件的路径及文件名、“o r d e r 和“i n d e x ”的取值。才能通过调用 a c t i v a t e d e v i c e e x 函数实现驱动程序的动态加载,这种加载方式又叫手动加载。 2 4n d i s 驱动模型 n d i s ( n e t w o r kd r i v e ri n t e r f a c es p e c i f i c a t i o n ) 是m i c r o s o f t 和3 c o m 公司开发的网 络驱动程序接1 :1 规范的简称【1 9 1 。w i n d o w sc e 下的n d i s 驱动模型是从w i n d o w s 通 用操作系统引入的一种驱动模式。负责适配器与协议驱动程序间的通信。n - d i s d l l 库为网络驱动提供接口,将n d i s 各层抽象化,方便开发人员在网络驱动各层进行 开发。并且为开发人员提供了开发所需要的核心模式函数,这些函数通常被命名为 n d i s x x x 。n d i s 的体系结构图如图2 4 所示。 重庆邮电大学硕士论文 第二章w i n d o w sc e 及驱动简介 i 小端 j l 图2 4 n d i s 体系结构图 从图可以看到,n d i s 体系包含三层。从下到上依次是小端口驱动、中间层驱 动、协议驱动。 小端口驱动程序( m i n i p o r td r i v e r ) :小端口驱动程序直接对物理层的小端

温馨提示

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

最新文档

评论

0/150

提交评论