已阅读5页,还剩73页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
摘要 随着数字化、信息化、网络化的发展和应用,计算机安全成为保 证信息系统正常运行、发挥效能的不可忽视的重要因素,而其中文件 存储安全成为计算机信息安全中的重要一项。文件的泄密主要发生在 两个条件下:动态的传输和静态的存储。对于文件的传输安全,可对 文件先加密后传输,再通过数字签名技术来保证文件的合法性和完整 性;对于静态存储安全,可采用身份认证技术和加密技术相结合来实 现。 论文首先分析了w d m 模型和文件的读写过程,并对用户层、系统 调用层、驱动层和硬件层的加密方法进行了比较,确定在驱动层用一 种新的软、硬件相结合的方法以解决文件静态存储的安全问题。在内 核层设计并实现了一个文件加密解密引擎,它利用以w d m 模型为基础 的文件过滤驱动技术,创建卷设备并附着到文件系统驱动之上,从而 成功拦截到发往文件系统驱动i r p ,同时采用s m s 4 商用加密解密算法 对i r p 堆栈中的用户敏感数据进行透明、动态的加密与解密:在应用 层,实施用户身份访问控制,采用指纹认证作为身份认证的方式来检 查文件使用者身份的合法性以增强安全性。最后对系统的性能进行了 优化和测试,测试结果显示系统能很好限制非法用户对敏感文件的访 问,加强了重要文件机密性和完整性的保护。 本系统创新之处在于:实现的文件加密解密引擎处于内核,其安 全性得到内核保护,不易受攻击;采用多重措施( 应用层的用户指纹 身份验证、文件过滤驱动对加密文件的隔离以及s m s 4 算法的密码学 机制) 保护加密文件;加密系统的密钥存储在指纹产品的专用存储区 中,进程根据协议对密钥进行访问,在硬件上保证了密钥的安全。 关键词文件系统过滤驱动,系统安全,存储加密 a bs t r a c t w i t ht h er a p i dd e v e l o p m e n ta n da p p l i c a t i o no fd i g i t a l ,i n f o r a m t i o na n d n e t w o r k ,t h ec o m p u t e rs e c u r i t yi sb e c o m i n ga ni m p o r t a n tp a r tt os u p p o r t t h ei n f o r m a t i o ns y s t e mr u n n i n ga n do p e r a t i o ns m o o t h t h es e c u r i t yo f e l e c t r o n i cd o c u m e n t so c c u r ei nt w oc o n d i t i o n s :d y n a m i ct r a n s m i s s i o na n d s t a t i cs t o r a g e f o rt h et r a n s m i s s i o ns e c u r i t y , f i r s t l y , w ec a ne n c r y p td a t a a n dt r a n s f e r ;t h e nw eu s et h ed i g i t a l s i g n a t u r et e c h n i q u et oe n s u r et h e v a l i d i t ya n di n t e g r a l i t y f o rt h es t o r a g es e c u r i t y , w en e e de n c r y p t i o na n d a u t h e n t i c a t i o nt e c h n i q u et or e a li z et h e s t o r a g ee n c r y p t i o na n da c c e s s c o n t r o lf o re l e c t r o n i cd o c u m e n t s f i r s t l y , t h et h e i sa n a l y s ew d mm o d a la n dr e a d i n ga n dw r i t t i n gf i l e p r o c e d u r e ,t h e ni n t r o d u c ea n dc o m p a r ef o u rm e t h o d sw h i c he n c r y p ta n d d e c r y p tf i l e ,a n dw ed e c i d et oa d o p tan e wh a r d w a r ea n ds o f t w a r e e n c r y p t i o nm e t h o dt od e s i g na n di m p l e m e n taf i l ee n c r y p ts t o r a g e d s y s t e m i nk e r n e l ,w ed e s i g na n di m p l e m e n ta ne n g i n et oe n c r y p ta n d d e c r y p tf i l ed a t a t h ee n g i n ea d o p t sf i l ef i l t e rd r i v e rt e c h n o g yw h i c hi so n t h eb a s i so fw i n d o w sd r i v e rm o d a l t h ef i l t e rd r i v e rc r e a t e sv o l u m n d e v i c e sa n dt h e na t t a c h e st h o s ed e v i c e sf o rt h ef i l es y s t e md r i v e r , s oi r p s w h i c hs e n dt of i l es y s t e md r i v e rc a nb ec a p t u r e db yt h ee n g i n e ,t h e nw e h a v ec h a n c et oe n c r y p to rd e c r y p td a t ai nw h i c ht h o s ei r p sc o n t a i n i n a p p l i c a t i o nl a y e r , w ed e s i g na n di m p l e m e n tf i n g e r p r i n tm o n i t o rp r o g r a m w h i c hc o n t r o lt h ei d e n t i t yo ft h eu s e ra c c e s s i nt h ee n d ,w ea c c o m p l i s h t h et e s t i n gw o r k f r o mt h er e s u l t ,w ec a nd r a wac o n c l u s i o nt h a tt h e s y s t e mm a k e s t h ei m p o r t a n tf i l e sm o r ec o n f i d e n t i a l i t ya n d i n t e g r a t e d t h ei n n o v a t i o n so ft h et h e s i sa r ea sf o l l o w :t h ee n g i n el i e s i nk e r n e l l e v e r , s oi ti sp r o t e c t e db yt h ek e r n e l ;t h es y s t e ma d o p t sm a n ym e a s u r e st o p r o t e c te n c r y p t e df i l e ( u s e r sf i n g e r p r i n tv e r i f yo nu s e rm o d e l ;f i l ef i l t e r d r i v e rc u to f ft h ep a t hw h i c hu n l a y f u lu s e ra c c e s se n c r y p t e df i l e ;e n c r y p t f i l ed a t ab ys m s 4c r y p t o l o g y ) ;t h ek e yi ss t o r e do nt h em e m o r yo ft h e f i n g e r p r i n tp r o d u c t sw h i c hc a nb ea c c e s so n l yb yt r u s t e dp r o c e s s k e yw o r d sf i l ef i l t e rd r i v e r ,s y s t e ms e c u r i t y , e n c r y p t i o ns t o r a g e i l 原创性声明 本人声明,所呈交的学位论文是本人在导师指导下进行的研究 工作及取得的研究成果。尽我所知,除了论文中特别加以标注和致谢 的地方外,论文中不包含其他人已经发表或撰写过的研究成果,也不 包含为获得中南大学或其他单位的学位或证书而使用过的材料。与我 共同工作的同志对本研究所作的贡献均已在论文中作了明确的说明。 作者躲醐:碑年月笋日 学位论文版权使用授权书 本人了解中南大学有关保留、使用学位论文的规定,即:学校 有权保留学位论文并根据国家或湖南省有关部门规定送交学位论文, 允许学位论文被查阅和借阅;学校可以公布学位论文的全部或部分内 容,可以采用复印、缩印或其它手段保存学位论文。同时授权中国科 学技术信息研究所将本学位论文收录到中国学位论文全文数据库, 并通过网络向社会公众提供信息服务。 作者签名:通里立 聊签越日期:埠年白嗲日 硕士学位论文第一章引言 1 1 课题背景 第一章引言 信息时代,越来越多的用户将自己的重要文献资料存于个人电脑中,从而取 代纸质资料的保存;同时,企业的正常运作也离不开计算机的支持,企业的重要 数据,如企业的经营计划、知识产权、客户资源等核心的机密数据都是以电子化 形式存储在电脑上。这些电子化资料在方便用户生活、工作的同时,也同时增加 了信息泄密的风险。个人隐私资料一旦泄密,会给个人生活带来非常大的麻烦, 而企业中重要的文件一旦泄露,则可能关系到企业的生存和发展。 美国c s i f b i 连续五年的计算机犯罪和安全调查报告中指出,有超过 8 5 的安全威胁来自组织内部,有1 6 来自内部未授权的存取。各种安全漏洞所 造成的损失中,3 0 一4 0 是由文件的泄密造成的。而据c e r t ( c o m p u t e re m e r g e n c y r e s p o n s et e a m ) 统计,计算机犯罪的7 0 是由内部通过非法终端所造成。所以保 证这些重要终端文件资料的安全成为文件信息安全存储领域的热门话题。 要保护自己的重要文件资料和隐私数据不被泄露,必须寻找一种可靠、安全 的的途径来保护这些资料。众所周知,人的指纹因为具备唯一性和不变性( 指纹 纹线的形态终生不变) 的特点,所以考虑采用指纹验证系统不失为提高系统安全 性的一个有效的方法。在现有的指纹芯片中,v a l i d i t ys e n s o r s 公司生产的 v f s l 3 1 芯片由于具有高性能低成本的优点,所以应用得比较广泛。 基于此背景,将v f s l 3 1 指纹芯片嵌入到u 盘、鼠标,键盘等硬件产品中, 使其在具有普通u 盘、普通鼠标,普通键盘功能的基础上同时具有指纹验证功能, 或将指纹芯片直接集成到笔记本电脑上。为充分利用硬件的资源,需设计和实现 一个指纹安全保护系统,包括如下子系统: 1 指纹登录子系统:根据w i n d o w s 安全登陆的规则,实现扫描指纹取代传统的 密码输入的登录方式,从而实现w i n d o w s 的安全登陆和锁屏。 2 应用程序控制子系统:利用进程控制块和钩子技术,对应用程序的加载进行 控制。例如在特定的时段控制对游戏程序的加载,只有成功匹配指纹才能加 载系统,从而防止游戏沉迷。 3 防u 盘拷贝与加密子系统:当大容量的可移动磁盘接入u s b 口,系统要求用 户进行指纹验证,如果指纹不匹配,则所有拷贝到u 盘的资料是经过加密的。 4 密码安全保护与自动登录子系统:用户登录邮箱、w e b 网页、局域网、网上 银行等需要输入密码的地方,用户只需要匹配指纹,然后系统会自动查找到 硕士学位论文 第一章引言 正确的用户名和密码,自动填入并登录。 5 文件动态透明加密解密子系统:在文件过滤驱动的技术基础上,利用s m s 4 加密解密算法,以用户指纹模板数据作为密钥,透明、动态地加密解密用户 敏感的文件数据,从而有效保护用户数据安全。本论文主要讨论文件加密解 密子系统,这个子系统具备如下特点: 1 ) 用指纹作为身份认证方式 驱动指纹芯片,捕获用户指纹并和已登记的用户模板数据库的模板 匹配,指示匹配结果,只有成功通过身份认证才能进行下一步操作。 2 ) 透明加密 所谓透明,是指加密和解密过程对使用者来说是未知的。如果使 用者通过了指纹身份认证,在打开或编辑指定文件时,系统将自动对未 加密的文件进行加密,对已加密的文件自动解密。文件在硬盘上是密文, 一旦离开使用环境,由于应用程序无法得到自动解密的服务而无法打开 文件,从而保护文件内容。 3 ) 动态加密 所谓动态加密,是指使用者在编辑原来己加密的文件,保存修改时 系统能自动将修改后的内容加密。例如,对一个w o r d 文档,新添加了两 行数据,当用户点击保存按钮时,系统能自动将新添加的数据加密,其 加密过程不需要用户干涉。 4 ) 加密文件的隔离 非法用户存取已加密文件时,文件加密解密引擎能采取有效措施隔 离涉密文件,处于用户模式的应用程序无法直接访问,以加强涉密文件 的安全性。 1 2 文件存储安全系统的研究现状 目前,国内外保护文件信息安全主要采用以下措施: 1 采用防火墙及安全扫描工具,建立网络安全屏蔽。防火墙是一个部署在 网络基础设施中的硬件或软件的解决方案,可以通过限制对某些特定的 网络资源的访问,实施一个企业的安全策略。防火墙可以在网络或外部 之间创建一个保护层,它具有内置的过滤器,所有由外网进入内网之前 都必须经过它的过滤和检验。它是网络安全的第一道屏障。 2 设置访问权限,进行访问控制。对不同的用户设置不同的访问权限,在 访问之前对其身份进行合法性检查。 一 3 对信息进行加密。采用加密算法对信息进行加密存储或传输,使非法用 2 坝卜学化论文 第一章引言 户即使得到数据也难以破解,可以保证文件内容的非公开性。 4 对信息进行签名。采用摘要算法计算信息的摘要,并使用私钥加密摘要, 保征信息的完整性。 5 身份验证技术。为了防止无关人员进入系统对文件或数据进行访问,有 些系统需要对用户进行身份验证,如银行系统使用用户密码验证,文件 管理系统使用管理员代码验证等。 以上技术措施对验证文件内容的真实、可靠,保证文件在存储、传输过程中 的安全、保密,防范对文件的非法访问和随意改动,都具有一定的效果。但随着 计算机技术的普及和发展,文件信息安全领域面临着更多的新的挑战,传统的文 什信息安全措施还有种种不足之处: 1 文件信息存储安全技术相对发展比较缓慢 信息安全包括传输安全、系统安全和存储安全。现在信息安全的热点集 t ,在传输安令和系统安全上,上面列出的技术措施绝大部分是针对信息传输 安全的,而存储媒介是安全事件的高发区,应引起重视。 2 针砖文件信息存储安全的内控技术匮乏 现4 ;针对文件信息存储安全的策略在技术上针对外部威胁,而很少涉及 内部。 3 监控功能咀一 市场上有一些文件内控安全产品的出现,但由于知识产权和市场竞争的 原l 丈j 缺少该领域内的技术交流,而且大多数已有的文件内控安全产品存监控 功能单一的缺陷。 4 缺乏针对个人用户的文件加密产品 现住市场虽然有针对个人用户的文件加密产品,但这些产品都不能实现 动态、透明加密解密,加密过程都是处于应用层,这样会产生很大的安全漏 洞。 1 3 论文的内容组织 本文来源于一家公司研发部的具体项目,论文内容按照项目的设计、技术路 线选择、模块设计和实现顺序进行组织。共分六章节,整体结构组织如下: 第一章绪论:介绍了课题背景和文件保护系统的研究现状。 笫二章w d m 模型分析:对系统设计和实现中用到的重要技术和相关知识进行 了介绍,包括w d m 内核对象、i r p 和文件过滤驱动的基本知识等。 笫三章文件透明加密解密系统的原理与框架:讨论了系统对文件的读写流 程,对四种加密解密方案进行了比较,然后介绍了加密解密系统设计原理以及系 3 硕士学位论文第一章引言 统整体框架。 第四章文件加密解密引擎的设计与实现:文件加密解密的引擎是整个系统 的核心,它包括一个文件过滤驱动和s m s 4 函数库,本章讨论了加密解密引擎的 设计与实现。 第五章指纹监控服务平台的设计与实现:介绍了系统处于应用层的指纹监 控服务程序的设计以及各个模块的实现。 第六章透明加密解密系统的性能优化策略:讨论了系统性能优化问题并对 系统进行了相关测试。 第七章结论:对论文的整体内容进行了概要的总结,指出存在的问题以及 后续需进行的工作。 4 硕上学位论文 第一二章w d m 模型分析 第二章w d m 模型分析 文件动态透明加密解密系统的核心是文件加密解密引擎,它采用的是过滤驱 动技术。微软为了减轻驱动程序开发人员的负担,提供了一个公用的驱动程序模 型w d m ( w i n d o w sd r i v e rm o d a l ) ,w d m 将驱动程序分总线驱动、功能驱动和过滤 驱动三类。w d m 采用分层的方法,模拟面向对象的技术,先进行逻辑上的“分层”, 然后将标准的实现和底层细节“封装”起来实现“基类 ,客户程序通过“继承 的方式扩展“基类“的功能,完成所需要的实现。 2 1w d m 的内核对象 w i n d o w s 内核是基于对象的,例如文件对象、驱动程序对象、设备对象等。 驱动程序和内核例程使用的许多数据结构都有公共特征,这些特征集中由对象管 理器管理。这些特性包括名称、参考计数、安全属性等待。 2 1 1 驱动程序对象 当i o 管理器需要找到其他驱动程序函数时,它使用与特定设备关联的驱动 程序对象( d r i v e ro b j e c t ) 。该对象基本上是一个目录,包含指向不同驱动程序 函数的指针。 1 每当装入一个驱动时,i o 管理器建立一个驱动程序对象。如果驱动程序初 始化失败,i o 管理器删除该对象。 2 在初始化期间,d r i v e r e n t r y 例程把其他驱动程序函数的指针装入到驱动程 序对象中。 3 当一个i r p 被发送到一个特定的设备时,i 0 管理器使用关联的驱动程序对 象来找到正确的派遣例程。 4 如果请求包括一个真实的设备操作,则i o 管理器使用驱动程序对象找到驱 动程序的s t a r t i o 例程。 5 如果驱动程序被卸载,i o 管理器使用驱动程序对象找到一个u n l o a d 例程, 当u n l o a d 例程返回时,i o 管理器删除驱动程序对象。 驱动程序对象的数据结构如图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 ) 指向一个设备对象链表,每个设备对象代表 5 硕士学位论文第二章w d m 模型分析 一个设备。i 0 管理器把多个设备对象连接起来并维护这个域。非w d m 驱动程序 的d r i v e r u n l o a d 函数利用这个链表来遍历设备对象列表,以便删除其中的设备 对象。d r i v e r e x t e n s i o n ( p d r i v e re x t e n s i o n ) 指向一个不大的子结构,其中只有 a d d d e v i c e ( p d r i v e r _ a d d d e v i c e ) 成员可以直接访问,a d d d e v i c e 是一个指针, 它指向驱动程序中创建设备对象的函数。h a r d w a r e d a t a b a s e ( p u n i c o d e s t r i n g ) 指向一个串,该串为注册表中的设备硬件数据库键名,这个注册表键保存着该设 备的资源分配信息,f a s t l o d i s p a t c h ( p f a s t1 0 一d i s p a t c h ) 指向一个函数指针表。 d r i v e r s t a r t l o ( p d r i v e r s t a r t i o ) 指向驱动程序中处理串行i o 请求的函数, i 0 管理器自动为驱动程序串行化多个i 0 请求。d r i v e r u n l o a d ( p d r i v e r _ u n l o a d ) 指向驱动程序中的清除函数。m a j o r f u n c t i o n ( a r r a yo f p d r i v e r 一个函数指针表,指向存在于驱动程序中的二十多种i r p 处理函数。 d r i v e r s t a nls 泌j d e v i c e o b j e c t i f l a g s ,d r i v e r s t a r t driversize ; i d r i v e r s e c t i o n , 一 ,。 d r i v e r e x t e n t i o n 争哆 l d r i v e r n a m e h a r d w a r e d a t a b a s e f a s t l o d i s p a t c h d r i v e r l n i t d r i v e r s t a r t i o d r i v e r u n l o a d m a j o r f u n c t i o n 2 1 2 设备对象 图示 图2 - 1 驱动程序对象的数据结构 实际上i o 管理器生成的每个i r p 不是针对驱动程序对象,而是针对设备对 象( d e v i c e _ o b j e c t ) 发出的。i 0 管理器和驱动程序在任何时刻都需要知道i o 设备所进行的工作,设备对象通过保存关于设备特征和状态的信息,使上述任务 成为可能。系统上每个虚拟、逻辑或物理设备都有一个设备对象。一个设备对象 的生存周期如下所示。 6 硕士学位论文第一二章w d m 模型分析 1 d r i v e r e n t r y 例程为它的每个设备建立一个设备对象。对于w d m 驱动程序, 由a d d d e v i c e 即插即用例程建立设备对象。 2 i o 管理器使用设备对象的反向指针来定位相应的驱动程序对象。在驱动程 序对象中能找到作用于i 0 请求的驱动程序例程。它还维护附属于设备对象 的当前和挂起的一个i r p 队列。 3 不同的驱动程序对象使用设备对象找到相应的设备扩展。在i o 请求被处理 的情况下,驱动程序使用该扩展保存任何设备专用的状态信息。 4 驱动程序的u n l o a d 例程在驱动程序被卸载的时候删除该设备对象。删除设 备对象动作的同时删除关联的设备扩展。对于w d m 驱动程序,r e m o v e d e v i c e 执行删除设备对象的任务。 设备对象的数据结构如图2 2 所示对于设备对象的数据结构中透明域的 简单介绍如下: 知p e ; i r e f e r e n c e c o u n t d r i v e r o b j e c t n e x t d e v i c e a t t a c h e d d e v i c e 。: c u r r e n t l r p l t i m e r f l a g s c h a r a c t e r i s t i c s d e v i c e e x t e n s i o n d e v i c e t y p e i s t a c 躐z e r 。 a l i g n m e n t r e q u i r e m e n t 图示 图2 - 2 设备对象数据结构 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 ) 指向与该设备对象相关的驱动程序对象,过 滤驱动程序有时需要用这个指针寻找被过滤设备的驱动程序对象,然后查看其 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 成员。c u r r e n t i r p ( p i r p ) 指向最近发往驱动程序s t a r t l o 函数的 i r p 。f l a g s ( u l o n g ) 包含一组标志位。c h a r a c t e r i s t i c s ( u l o n g ) 是另一组标志位, 描叙设备的可选特征。o e v i c e e x t e n s i o n ( p v o i d ) 指向一个用户自定义的数据结 7 硕上学位论文第二章w d m 模型分析 构,该结构可用于保存每个设备实例的信息。i 0 管理器为给结构分配空间,但 该结构的名字和内容完全由用户决定。d e v i c e t y p e ( d e v i c e _ t y p e ) 是一个枚举常 量,描述设备类型。s t a c k s i z e ( c c h a r ) 统计从该设备对象开始向下直到p d o 之间 的设备对象的个数。该域的目的是告诉其他代码,如果把该设备对象的驱动程序 作为其i r p 的第一发送对象,那么应在这个i r p 中创建多少个堆栈单元( s t a c k 】o c a t io i l ) 。 2 1 3 输入输出请求包 在w d m 模型中,几乎所有的i o 操作都要靠输入输出请求包( i r p ) 驱动。i r p 是驱动程序操作的中心,它类似于应用程序中的消息。应用程序对设备或文件的 存取通过提交i r p 进行,应用层通过c r e a t e f i l e 、r e a d f i l e 、c l o s e f i l e 、 d e v i c e i o c o n t r o l 等函数在底层使用i r p 和驱动进行通信,操作系统的i o 管理 器接受用户模式应用程序发起的i o 请求,建立相应的i r p 描述它,将i r p 发送 到合适的驱动程序,然后跟踪执行过程。当操作完成后,将返回的状态通知请求 的应用程序。操作系统与内核之间以及驱动与驱动之间均通过i r p 进行数据传 递。 i r p 是一个尺寸大小可变的结构,它由两个部分组成:一个头部结构,包含 各种i o 请求的信息;一个i o 堆栈的位置,图2 3 显示了其布局结构。 r m d l a d d r e s s s t a r e s a s s o c i a t e d l r p i n f o r m a t i o n i o s t a t u s e a de r p e n d i n g r e t u m e d c a n c e l m a j o r f u n c t i o n c a n c e l l r p m i n o r f u n c t i o n c a n c e l r o u t i n e - s t a c k l u n i o n s t r u c t r e a d ; s t a c k 2 s t r u c t w r i t e ; - 1 1 s t r u c t l d e v i c e c o n t r o l l “k ll s t a c k 3 p a r a m e t e r s s t a c k 4 图2 - 3i r p 的基本布局 i r p 的头部拥有关于总体i 0 请求的不同的信息。该头部的某些部分对于驱 动程序是可以直接访问的,而另一些专属与i o 管理器。表2 1 列出了头部中允 8 硕士学位论文第二章w d m 模型分析 许驱动程序接触的各个区域。 表2 - 1i r p 首部节选内容 字段说明 i o s t a t u s 包含i o 请求的状态 s y s t e m b u f f e r如果设备执行有缓冲的i o ,则指向系统空间 缓冲区。 m dl a d d r e s s 如果设备执行直接的i 0 ,则指向用户空间的 内存描叙符列表( m e m o r yd e s c r i p t o rl is t ) 。 u s e r b u f f e r i o 缓冲区的j j 户空间地址。 c a n c e i i r p 被取消。 i o s t a t u s 成员变量保存i o 操作的最后状态。当一个驱动程序准备完成一 个i r p 处理时,会把该区域的s t a t u s 字段设为s t a t u s 值。同时,一 个驱动程序应该将i n f o r m a t i o n 字段回设为0 或传输的字节数。a s s o c i a t e l r p 的联合域在管理驱动程序对数据缓冲区的访问中起不同的作用。i o 堆栈位置的 主要目的是保存一个i o 请求的函数代码和参数。通过检查堆栈位置的 m a j o r f u n c t i o n 字段,驱动程序能确定执行什么操作及如果解释p a r a m e t e r s 联 合体。例如对于写i 0 请求,i r p 堆栈位置含有主要的写请求参数,堆栈位置的 m a j o r f u n c t i o n 域含有主功能代码i r p _ m j _ w r i t e ,指明请求一次写操作。 p a r a m e t e r s w r i t e l e n g t h 域含有传输的字节数。表2 2 描述了一个堆栈位置常 用的一些成员变量。 表2 - 2i r p 堆栈位置节选内容 字段说明 m a j o r f u n c t i o ni r p _ m j _ x 函数规定操作 m i n o r f u n c t i o n 由文什系统和s c s i 驱动程序使用 p a r a m et e r s m a j o r f u n c t i o n 代码使用的关键性共同体 s t r u c tr e a d i r p _ m j r e a d 的参数 l e n g t h b y t e o f f s e t s t r u c tw r i t e i r p - m j _ w r i t e 的参数 l e n g t h b y t e o f f s e t s t r u c td e v i c e i o c o n t r o l i r p _ m j _ d e v i c e _ c o n t r o l 参数 o u t p u t b u f f e r l e n g t h i n p u t b u f f e r l e n g t h i o c o n t r o l c o d e s t r u c t o t h e r s驱动槎序日j 用 d e v i c e o b j e c ti o 请求的目标设备 f il e o b j e c t i 0 请求的文件对象,如果有的话 w i n d o w s 驱动程序处理i o 请求之前,必须声明它可以支持的操作种类,即 响应这个请求的派遣例程。声明机制是d r i v e r e n t r y 执行的工作,它把派遣例程 函数地址保存在驱动程序对象的m a j o r f u n c t i o n 表的合适位置。该声明还允许使 用单个例程处理多种请求类型。 9 硕士学位论文第二章w d m 模型分析 驱动程序不必处理所有的i r p 请求,但必须支持m a j o r f u n c t i o n 代码为 i r p _ m j _ c r e a t e 和i r p _ m j _ c l o s e 的i r p ,驱动程序d r i v e r e n t r y 例程需要设置合 法的入口点,如果不支持i r p j _ c r e a t e ,则无法设置入口点,i o 管理器就不 能处理w i n 3 2 请求。同样,也必须支持i r pm jc l o s e 以处理w i n 3 2c l o s e h a n d l e 调用。应用程序结束时,系统会自动调用c l o s e h a n d l e 关闭已打开的句柄。 所有的派遣例程都有相同的函数原型,均需传递一个指向设备对象的指针和 i r p ,派遣例程通常在p a s s i v e l e v e l i r q l 调用,这意味着派遣例程很容易被内 核其他部分,甚至被驱动程序自己的其他部分中断。但在p a s s i v e l e v e l i r q l 运行的例程可以发出大多数的内核调用。 可以把驱动程序看做是一个容器,这个容器里包含有很多例程,当操作系统 遇到一个i r p 时,它就调用这个容器中的例程来执行该i r p 的各种操作。图2 - 4 表现了这个概念。需要对i r p 排队的驱动程序一般有一个s t a r t i o 例程;执行 d m a 传输的驱动程序应有一个a d a p t e r c o n t r o l 例程。大部分能生成硬件中断的 设备,其驱动程序都有一个中断服务例程( i s r ) 和一个推迟过程调用( d p c ) 例程。 文件过滤驱动程序最特别的一个地方是有f a s t i o 例程。驱动程序一般都有几个 支持不同类型i r p 的派遣函数,所以w d m 驱动程序( 包括文件过滤驱动程序) 开发 作者的一个任务就是为这个容器选择所需要的例程。 基本驱动程序例程 l o 控制例程各种派遣例程 f a s t l o d e v i c e c o n t r o i d p c f o r l s r d i s p a t c h c r e a t e d i s p a t c h r e a d d i s p a t c h c i o s e d i s p a t c h c l e a n 图2 - 4 文件过滤驱动程序容器中的各种例程 2 2w d m 模型的层次结构 在w d m 驱动程序模型中,每个硬件至少有两个驱动程序。其中一个驱动程序 称之为功能( f u n c t i o n ) 驱动程序,通常它就是硬件设备驱动程序。它了解使硬 件工作的所有细节,负责初始化i 0 操作,处理i o 操作完成时所带来的中断事 件,为用户提供一种设备适合的控制方式。另一个驱动程序称之为总线( b u s ) 驱动程序,它负责管理硬件与计算机的连接。例如,p c i 总线驱动程序检测插入 到p c i 槽上的设备并确定设备的资源使用情况,它还能控制设备所在的p c i 槽的 电流开关圈。一个设备还可能有过滤驱动程序,用于改变标准设备驱动程序的行 1 0 硕士学位论文第二章w d m 模型分析 为。这些服务与同一个设备的驱动程序组成了一个链表,称为设备链。 w d m 定义了驱动程序的分层结构,它使用如图2 5 所示的层次结构。 图2 - 5w d m 的分层结构 该图的左边是设备对象数据结构栈。在该数据结构栈中最底层的是物理设备 对象( p d o ) ,用于描述设备与物理总线的关系。p d o 的上面是功能设备对象( f d o ) , 用于描述设备的逻辑功能。在数据结构栈的其他位置,f d o 的上下有许多过滤驱 动设备对象( f i d o ) 在数据结构栈中的每个对象都属于一个特定的驱动程序p d o 属于总线驱动程序,f d o 属于功能驱动程序,f i l ) o 则属于过滤驱动程序。 总线驱动程序为i 0 总线服务,它用于连接其他物理的、逻辑的、虚拟的设 备。总线包括传统的总线s c s i 和p c i ,也包括并口、串口。总线驱动程序负责 列举设备,发现总线上的所有设备并检测设备何时添加到总线上或何时从总线删 除,总线驱动程序为每个设备创建一个p d o 。 功能驱动程序是物理设备的主要驱动程序,它分层在总线驱动程序的上面, 负责提供对设备的操作接口,控制设备完成特定的功能,并且创建一个功能设备 对象放在设备栈中。 在驱动程序栈中,可以插入各种类型的过滤驱动程序。对于总线上的所有设 备,总线过滤驱动程序被添加在总线驱动上。设备过滤驱动程序仅对特定的设备 添加。上层的过滤驱动程序添加在功能驱动程序上,而下层的过滤驱动程序添加 在功能驱动程序下。过滤驱动程序拦截对具体设备和总线的请求,做相应的处理, 以改变设备的行为或添加新的功能。过滤驱动程序只处理需要改变的i o 请求, 硕士学位论文第二章w d m 模型分析 其他的i o 请求可以交给下层的驱动程序处理,这样可以灵活改变设备的行为。 操作系统中的即插即用管理器( p n pm a n a g e r ) 根据设备驱动程序的指令来 建立这个数据对象栈。当总线驱动程序检测到新硬件的存在,p n p 管理器创建一 个p d o ,然后通过查找注册表找到与这个p d o 相关的f d o 和f i d o 。设备的安装程 序负责建立注姗表里的表项,这些表项指明了驱动程序在数据对象堆栈中的位 置。然后p n p 管理器开始装载最底层的过滤驱动程序,并调用该驱动程序的 a d d d e v i c e 函数。该函数在数据对象堆栈中建立一个f i d o ,同时将前面建立的 p d o 和这个f i d o 关联起来。p n p 管理器反复执行该过程,按次序加载其他下层过 滤驱动程序、功能驱动程序和上层过滤驱动程序,直到该堆栈完成。 2 3ir p 在设备栈中的传递 在w d m 驱动程序中,i r p 首先被送到设备堆栈的最上层驱动程序,然后依次 逐渐传递到下面的驱动程序。每一层驱动程序根据设备及i r p 携带的内容决定如 何处理或仅仅是向下层传递i r p ,直到该i r p 完成或取消。 当一个i o 请求转换成一个i r p 时,i 0 管理器填写主要的i r p 首部,并构 造第一个i r p 栈单元。i r p 首部含有用户缓冲区信息,如果使用有缓冲的i o ,i r p 的a s s o c i a t e d i r p s y s t e m b u f f e r 域中含有一个指向用户缓冲区的非分页副本的 指针,如果使用直接i o ,i r p 的m d l a d d r e s s 域中含有一个指向用户缓冲区内存 描述符列表的指针。 i r p 栈单元的个数与处理该i o 请求的驱动个数或驱动程序栈的层数相同, 且每层驱动程序都只能访问对应的i o 栈单元,而不能访问其他的i o 栈单元。 当某个驱动程序把一个i r p 传递给下层驱动程序的时,它必须首先在其对应的 i o 栈单元下面正确设置一个新的i o 栈单元,i o 管理器会自动压入旧i o 栈 单元的指针,以使下层驱动程序指向它对应的i o 栈单元。当下层驱动程序处理 完毕,旧的i o 栈单元指针被弹出,重新指向对应的上层驱动程序。有三种技术 用于处理i r p : 1 立即处理 2 放在队列中一个一个处理 3 传递给下层驱动。 处理i r p 最常用的技术是把i r p 向下传递给下层驱动程序处理。图2 - 6 说明 一个i r p 如何被设备栈中的4 个驱动程序处理。当一个i r p 到达最高层的驱动程 序1 时,驱动程序1 使用i o g e t c u r r e n t s t a c k l o c a t i o n 获得指向当前栈单元的指 针,如果需要把它传递给下层驱动程序2 ,则为驱动程序2 设置栈单元。一般情 移己下使用i o c o p y c u r r e n t i r p s t a c k l o c a t i o n 或i o s k i p c u r r e n t i r p s t a c k l o c a t i o n 1 2 硕l j 学化论文第_ 二章w d m 模型分析 函数把当前栈薯元复制到下个栈单元。如果需要改变下一个栈单元,则必须使用 i o g e t n e x ti r p s t a c k l o c a t i o n 得到指向这个栈单元的指针。驱动程序1 调用i o c a li d r iv e t 函数调用下一个驱动程序,i 0 管理器改变“当前i r p 栈指针“指向 笫j 二个栈t t 元,这个过程将一直继续到最底层的驱动程序4 收到这个i r p 。驱动 私 芋4 处理完该i r p 后,调用i o c o m p l e t e r e q u e s t 完成该i r p 的处理。i r p 顺着 设备栈向上传递,直到它弹出栈顶回到用户程序。 jl i fp r 职,山f f j i 序i ( 过滤职动程序: 驰动程序2 驱动程序3 正氏j z j 孵叫jf ,序 使用此栈单 使用此栈单 使用此栈单 使用此栈单 图2 - 6i r p 的传递 在1 r p
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 《算法设计基本方法》课件
- 《竣工图绘制要求》课件
- 苏州科技大学天平学院《水文学》2022-2023学年第一学期期末试卷
- 苏州科技大学天平学院《生态学基础》2021-2022学年第一学期期末试卷
- 2024专利申请专项资金使用偿还合同
- 《古典生活模板》课件
- 建立强大的供应链网络安全管理体系考核试卷
- 《口腔医学导论》课件
- 提高团队决策质量的关键因素考核试卷
- 2024宾馆公寓租赁合同范本
- 能源审计报告样本
- 《企业文化与变革》PPT课件.ppt
- 城市轨道交通线路选线设计-徐振廷
- 工程委外维保流程ppt课件
- 关于自然数平方和公式的十种证明方法
- 中建股份公司合同管理手册
- 超高层建筑电气设计要点分析
- 精神堡垒报价单
- 德国支持中小企业科技创新的政策资料
- 全公安机关易制爆危险化学品安全监管要点暨检查记录表
- 644523009毕业设计(论文)小型反应釜控制系统的仿真设计
评论
0/150
提交评论