




已阅读5页,还剩77页未读, 继续免费阅读
(计算机软件与理论专业论文)一个远程监控系统的设计与实现.pdf.pdf 免费下载
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
摘要 随着互联网的发展,当代社会已经进入了网络社会,其中,局域网在人们 生活和工作中的应用越来越深入,在企业、政府、学校等各种场所,起着非常 关键的作用相对于外部网络,局域网内部的数据管理通常不是很严谨,这带 来了一些安全隐患,主要表现在重要数据得不到保护,查看和改动甚至删除都 较为随意 为了解决这些问题,本文设计和实现了一个远程监控系统本系统基于 t c p i p 理论,采用客户端服务器结构,选择封装的w i n s o c k 控件进行一点对 多点的通讯。监控端( 服务器端) 运行于监控中心,监视并记录各远程机的运 行及数据改动情况;被监控端( 客户端) 在远程机上执行文件监视、键盘记录 和屏幕模拟控制等操作,并实时的将各种监控数据返回监控端存储并显示 文件监视是对远程主机w i n d o w s 操作系统的整个s h e l l 名字空间的监视, 可以获取物理文件的全部改动情况,同时可以监视设备的增加和去除情况论 文比较详细地介绍了使用疆子类化技术和s h e l la p i 函数实现该模块的原理与 过程,并对新型文件系统w i n d o w ss h e l l 名字空间的概念及特点进行了详尽地 描述与分析。键盘记录采用a p i 函数直接侦测键盘硬件中断,比传统的采用钩 子技术的键盘记录更为高效,文中同时对采用钩子技术的键盘记录进行了分析 论文介绍了本系统采用的屏幕截取技术,该技术在传统屏幕截取技术基础上通 过建立o l ep i c t u r e 对象,简化了屏幕图像的截取和显示过程 监控端有大量的监控数据需要保存,在本系统监控端建立了数据库,存储 监控数据并提供了检索查询方法,论文介绍了系统用到的相关数据库技术 最后总结全文,指出本文工作需要改进的地方,并提出了相应的完善方案。 关键词:文件监视,w i n d o w ss h e l l ,远程监控,键盘记录,数据库 a b s t m c t w i t ht h ed e v e l o p m e n to fi n t e m e t , w cc a l lc a , t o d a y ss o c i e t yn e t w o r ks o c i e t y l o c a la r e an e t w o r ki s et y p eo fn e t w o r km o s tc o m m o n l yu s e di no u rl i f e t h i s k i n do f n e t w o r kh a sb e e nw i d e l yu s o di nc o m p a n y ,g o v e r n m e n t 、s c h o o le t ca n d p l a y s a l li m p o r t a n tr o l ei no u r w o r k i i o w t h c e l , t h ed a t aa d m i n i s t r a t i o ni nl a n i sn o t v e r ys l r i e t , w h i c hb r i n g ss o m t :s e c u r i t yp r o b l e m s t h ei m p o r t a n td a t as u c ha s e l e e t r o n i ed o c u m e n ti sn o tp r o t e c t e dw e l l ,p e o p l e 锄r e a di t ,c h a n g ei ta n de 咖 d e l e t ei ta tw i n t os o l v et h e s ep r o b l e m s 。ar e m o t em o n i t o r i n gs y s t e 1 1w a sd e s i g n e d t h i ss y s t m a d o p t sc sm o d e l , a n db a s e d0 1 1t c p i pn e t w o r kt h e o r y , t h i ss y s t e mc i o 1 1 11 3 l a k e0 1 1 e p o i n t t om u l t i p o i n te o m m u n i e a t i o mu s i n ge n e a p s t t l a t e dw i m o e kw i d g e t t h e m o n i t o r ( s m , e r ) m si nm o n i t o rc e n t e r , i tm o n i t o r sa n dr e c o r d st h ed a t ae l a a n g e i n f o r m a t i o ni nr e m o t ec o m p u t e r s ,t h ec l i e n ti m t a u e do nt l a er e m o t ec o m p u t e rw i l l m o n i t o ri t sf i l es y s t e ma n dk e y b o a r da n dc o n t r o li t ss c r e e n , a tt h es a m et i m ei tw i l l s e n dal o to f m o n i t o r i n gd a t at ot h em o n i t o rt os t o r ea n dd i s p l a yi nr e a lt i m e t h ef i l om o n i t o rp a r to ft h i ss y s t e mc a nm o n i t o rt h ee n t i r ew m d o w ss h e l l n a m e s p a c eo ft h el - e m o t ec o m p u t e r , a n do b t a i nt h ee n t i r cc h a n g ei n f o r m a t i o no fi t s f i l es y s t e m , i tc a l la l s om a k ear e c o r dw h e nad e v i c ei sa d d e do fr e m o v e d t h i st h e s i s p r o v i d e saf u l l yd e s c r i p t i o nh o wt h i sm o d u l ew a sr l 岛d i z e du s i n gv i s u a lb a s i c s u b e l a s s i n gt e e l m o l o g ya n ds h e l la p if u n c t i o n s ,a n di n t r o d u c e sw m d o w ss h e l l n a m e s p a e ew h i c hi sal l c w s t y l eo ff i l es y s t e mi nd e t a i l t h ek e y b o a r dm o n i t o r m o d u l ea d o p t san e wt e c h n o l o g y 璐i n ga p if u n c t i o n st ob e n s et l a c k e y b o a r d h a r d w a r ei n t e r r u p tw h i c hi sm o r ee t t i e i c n tt h a nt h et r a d i t i o n a lt e c h n o l o g yu s i n gt h e k e y b o a r dh o o k , t h et h e s i sa n a l y z e st h et r a d i t i o n a lt e c h n o l o g y 硒w e l l t h i st h e s i s a l s od e s c r i b e st h es g i 嘲c a p t u r et e c h n o l o g yu s e di nt h i ss y s t e m , b a s e do nt r a d i t i o n a l - r e c nc a p t u r et e c h n o l o g y , l h et e c h n o l o g yw ea d o p ts i m p l i f i e dt h ep r o c e s so f s c r e e n c a p t u r e 如dd i s p l a yb yc r e a t i n ga no l ep i c t u r eo b j e c t ht h em o n i t o r , t h e r ea r eal o to fm o n i t o r i n gd a t aw h i c hm u s tb es t o r e d , i nt h i s s y s t e mw ec r e a t ead a t a b a s et os t o r et h e s ed a t aa n dp r o v i d e t h eq u a yf u n c t i o n , t h e r e l a t e dt h e o r yi sp r o v i d e di nt h i st h e s i s f i n a l l y , t h es u m m a r y a b o u tt h et h e s i sw a sm a d cw h i c hp o i n to u th o wt h i ss y s t e m c a nb ei m p r o v e c l k e yw o r d s :f i l em o n i t o r , w m d o w ss h e l l , r e m o t em o n i t o r , k e y b o a r dm o n i t o r , d a t a b a s e 西北大学学位论文知识产权声明书 本人完全了解学校有关保护知识产权的规定,即;研究生在校攻读学位期 间论文工作的知识产权单位属于西北大学。学校有权保留并向国家有关部门或机 构送交论文的复印件和电子版本人允许论文被查阅和借阅学校可以将本学位 论文的全部或部分内容编入有关数据库进行检索,可以采用影印、缩印或扫描等 复制手段保存和汇编本学位论文同时,本人保证,毕业后结合学位论文研究课 题再撰写的文章一律注明作者单位为西北大学 保密论文待解密后 学位论文作者签名 2 。q ,7 年月f 午日20 7 年f 月j 笋日 西北大学学位论文独创性声明 本人声明:所呈交的学位论文是本人在导师指导下进行的研究工作及取 得的研究成果。据我所知,除了文中特别加以标注和致谢的地方外,本论文 不包含其他人已经发表或撰写过的研究成果,也不包含为获得西北大学或其 它教育机构的学位或证书而使用过的材料与我一同工作的同志对本研究所 做的任何贡献均已在论文中作了明确的说明并表示谢意。 学位论文作者签名:韩魂卜 的字符串;对于服务器端应用程序来说,在通过请求联机之后,这个属性就包 l o 第2 章网络通讯理论 含了激活联机的远程计算机( 也就是客户端) 的i p 字符串。、 ( 3 ) r e m o t e p o r t 属性用于返回或者设置要连接的远程端口数目,即通信端 口号 “) p r o t o c o l 属性用于返回或设置w i n s o c k 控件所使用通信协议是t c p 或 是u d p ( 5 ) b y t e r e c e i v e d 属性用于返回接受到( 目前在接受端缓冲区内) 数据的字 节数。使用g e t d a t a 方法可以抽取数据 3 w i n s o c k 控件运行会因为通信的因素而产生事件,这些可能产生的事件 分别简要说明如下: ( 1 ) c o n n e c t i o n r e q u e s t 事件:当远程的计算机向服务器计算机请求联机 时,将引发服务器计算机的该事件,在请求一个新联机时会激活该事件 ( 2 ) c l o s e 事件:不管服务器端或客户端,只要一方关闭联机,另一方的 此事件就会被引发。 ( 3 ) c o n n e c t 事件:在联机操作完成时被引发。 ( 4 ) d a t a a r r i v a l 事件:当有新数据达到时,将引发此事件 4 常用的w i n s o c k 控件的方法有以下几个: ( 1 ) a c c e p t 方法在处理c o n n e c t i o n r e q u s t 事件时用这个方法接受新联机 执行过此方法后,二者之问的联机才算是建立,才能相互传输数据。 ( 2 ) l i s t e n 方法用于建立s o c k e t 并将其设置为监听模式此方法适用于 t c p 联机中的服务器端程序。也只有在监听模式下才有可能接受客户端的联机 请求 ( 3 ) s e n d d a t a 方法用于将数据传输给远程计算机。g e t d a t a 方法用于抽取 目前的数据区块,并将其存储在参数所指定的变量中 ( 4 ) c l o s e 方法用于对客户端计算机和服务器应用程序关闭t c p 联机监听 s o c k e t ,此操作将终止双方的联机,而且对方也会引发c l o s e 事件。 。 了解w i n s o c k 的主要属性方法和事件后,就可以很容易的建立t c p 联机了。 第3 章系统总体设计 第3 章系统总体设计 3 1需求分析 随着互联网的发展,网络安全日渐受到人们重视,安全技术发展至今,已 形成很多成熟有效的防护措施如防火墙,加密、解密技术等,这些技术给普通 用户提供了较为安全的外部网络环境但是,处在内部网络中时,防范意识却 大大降低了,一种情况非常普遍:局域网中的重要数据是对整个局域网内部透 明的,如在公司网络中,产品研发过程中的各种核心技术资料和工作资料对整 个开发组是透明的和共享的,对于防误操作、防破坏的保护几乎没有采取任何 措施。这样就使得在局域网中使用重要数据的安全性得不到保障。 现代社会,电子文档和电子档案正在逐渐取代纸质文档和纸质档案,在机 要部门网络中,如果没有有效的监控,对于重要电子文档,合法用户的误操作 或内部人员的有意篡改,都会造成严重后果这对电子政务和办公自动化的顺 利实现是一个威胁。 根据以上这些情况,开发了本软件系统,通过对远程文件系统的监视,对 数据的读、写、删除等操纵进行监视和记录,结合键盘记录,保障了内部网络 机密数据的安全性,有效减小了内部人员对数据的威胁。本软件还结合了传统 远程控制的屏幕监视等功能,可以方便了解远程机的使用情况 3 2运行环境与监控系统架构 系统运行环境及系统结构设计: 系统运行对机器硬件配置要求较低,目前使用的电脑均能满足系统,系统 运行环境为w i n d o w s 平台系统;客户端( 被监控端) 安装在被监控主机上,服 务器端( 监控端) 为监控及监控数据管理中心 1 2 第3 章系统总体设计 整个系统的结构如图3 1 所示。其中,监控端负责管理个被监控端,存储 和显示监控数据,并提供检索;被监控端负责监视本地系统的活动。实时向监 控端返回监视数据 图3 1 远程监控系统组成原理图 3 3系统总体设计 系统基于t c p i p 协议,采用c l i e n t s e r v e r 模式。c s 模式具有很好的易 用性,及很强的控制功能,被本系统采用,监控端程序运行在监控机上,被监 控端程序运行在被监控机上监控端向被监控端发出请求和控制指令,被控端 响应请求并作出相应的反馈。通过s o c k e t 进行一点对多点的通信,实现监控端 同时对多台受控机的实时远程监控和管理 在监控端,各个被控机实时的监控数据通过网络连接汇聚,然后采用数据 库进行存储和组织,数据库使用a c c e s s 建立,通过监控端程序,可进行存储和 查询。 被监控端中的文件监视部分是本系统的核心的部分,它实际是通过获知操 作系统外壳的活动消息,进而获知文件系统的所有举动,系统采用了微软内部 两个原来未公开的函数来实现。 1 3 第3 章系统总体设计 整体界面截图: 图3 2 整体界面截图 整个系统分为两部分:监控端程序和被监控端程序 监控端程序对内部网络中的各计算机的内部数据的访问、修改等操纵进行 监视和记录。分为数据通讯模块、数据库写入和查询模块、文件管理模块和界 面模块四个模块 被监控端程序负责对各计算机进行监视,文件系统监视,键盘监视和屏幕 监视。分为数据通讯模块、监视模块( 鼠标键盘、文件系统两个子模块) 、文件 传输模块和屏幕模拟控制模块共四个模块 1 4 第3 章系统总体设计 系统整体模块划分图示如下: 图3 3 系统整体模块划分图 监控端模块划分: 1 数据通讯模块 ( 1 ) 接收被监控端传来的数据,分析数据,将文件数据交付文件管理模 块,其它交付各功能模块; ( 2 ) 发送各功能模块生成的监控命令报文或文件管理模块封装好的本地 文件数据。 1 5 第3 章系统总体设计 2 数据库写入和查询模块 将数据通讯模块转交的监控数据,即文件系统监控数据和键盘记录数据 存入数据库,并提供查询功能 3 文件管理模块 ( 1 ) 获取数据通讯模块接收的文件数据,写入本地磁盘; ( 2 ) 将要发送的文件分割封装交于数据通信模块发送: ( 3 ) 远程计算机上的文件的删除、执行。 4 界面模块 ( 1 ) 初始化基本变量; ( 2 ) 提供程序的主体框架,负责人机交互 ( 3 ) 显示被监控端返过来的监视数据,文件列表和屏幕位图 界面模块负责初始化和人机交互,显示被监控端返过来的监视数据,文件 列表和屏幕位图。数据通讯模块和功能模块具体实现通讯或某种具体功能 被监控端模块划分: 1 数据通讯模块 ( 1 ) 接收监控端传来的数据,分析然后把文件数据直接交付文件管 理模块,其它交付各功能模块; ( 2 ) 发送各功篚模块生成豹反馈信息报文或文件传输模块封装葑的 本地文件数据。 2 监视模块 ( 1 ) 完成本地计算机上的文件监视和键盘记录功能; ( 2 ) 监控开始后。将数据按约定的格式封装好后实时通过数据通讯 模块发送。 2 文件传输模块 1 6 第3 章系统总体设计 ( 1 ) 将数据通讯模块转交的文件数据写入本地磁盘; ( 2 ) 将要发送的文件分割封装交于通信模块发送。 3 屏幕模拟控制模块 ( 1 ) 截取本地计算机屏幕,压缩并通过数据通讯模块发送到监控端; ( 2 ) 模拟鼠标活动,控制屏幕。 从监控端和被监控端的模块划分可以看出:监控端和被监控端通过数据通 讯模块交换数据、传递报文。监视模块和文件传输模块等为功能模块,含有某 种具体功能的实现方法。 系统业务流程如下图所示: 图3 4 系统业务流程 1 7 第4 章文件系统监视的设计与实现 第4 章文件系统监视的设计与实现 文件系统监视是监视模块中最重要的一部分,其功能是对远程主机的文件 系统上的操作进行监视。这里监视的文件系统是指w i n d o w ss h e l l 名字空间而 非传统的磁盘文件系统,它不仅包括物理意义上的磁盘文件,还包括诸如:桌 面,控制面板、打印机、网上邻居等虚拟的文件类型。名字空间是扩展了的磁 盘文件系统。在名字空间中,以桌面( d e s k t o p ) 为根的单一的文件系统树代替 了传统的以c 盘、d 盘等为根目录树应用程序和设备都可以被虚拟成s h e l l 名字空间中的节点 所以,对w i n d o w ss h e l l 名字空间进行监视。不仅能获知磁盘文件系统的 改变,比如:新建文件或文件夹,更新文件或文件夹内容,文件或文件夹属性 改变,移动文件或文件夹到回收站等等;还能获知虚拟文件类型的变化,比如: 添加一个新的打印机到打印机文件夹,从拔号网络文件夹删除一个连接等等。 本模块是使用微软内部两个未公开的函数:s h c h a n g e n o t i f y r e g i s t e r 和 s h c h a n g e n o t i f y d e r e g i s t e r 来实现对w i n d o w ss h e l l 名字空问变化的监视的, 这两个函数位于s h e l l 3 2 d l l 中通过以上两个函数,并结合、,b 子类化技术, 本监视模块功能强大到能够监测到整个w i n d o 邪s h e l l 名字空间的一举一动。 本章是这样安排的:第一节我们介绍s h e l l 名字空间的概念在第二节将 介绍本模块用到的另一个重要技术:、b 子类化技术第三节及第四节将详细的 描述监视程序的原理及实现流程。 1 8 第4 章文件系统监视的设计与实现 4 1 s h e l l 名字空间 4 1 1w i n d o w ss h e l l 名字空间 w i n d o w ss h e l l 名字空间是一些符号的集合,这个集合的结构与人们熟悉 的磁盘文件的结构十分类似,也是一个层次状的结构,只不过s h e l l 名字空间 中的元素范围更为宽广,再也不仅仅是文件和目录。而且在s h e l l 名字空间中 还可以找到如打印机、注册表等崭新的元素,而它们在s h e l l 名字空间中也被 叫做文件对象也就是说,与磁盘文件结构相比,s h e l l 名字空间进行了概念 的拓展虽然元素内涵丰富了,但是s h e l l 名字空间的结构采用的仍然是一个 单一的层次结构,在这个层次结构中,名字空间将用户感兴趣的各种对象,如 文件、存储设备、打印机以及网络资源等全部组织起来名字空问同文件系统 的目录结构是相似的,但是除了内涵的不一样之外。还有另一个不同之处,那 就是;文件系统是以看不见摸不着的根目录为其开始之处,而名字空间则是以 大家亲眼所见的w i n d o w s 桌面( d e s k t o p ) 为其出发之点因此可以说,s h e l l 名字空间更符合人们的思维习惯。 4 1 2s h e l l 名字空间的单一结构 对于s h e l l 名字空间的单一结构需要再次强调,这很重要,它为应用程序 提供了统一的接口w i n d o w s 用这个单一的层次结构将文件、目录以及所有用 户感兴趣的对象如存储设备、打印机、网络资源等等融为一体这种一元化的 名字空间的根就是w i n d o w s 的桌面。 s h e l l 名字空间中含有两种不同的元素,即文件夹和文件对象。它们和磁 盘上的文件夹和文件在很多方面有其相似之处,但不是等同的文件夹是s h e l l 名字空间中一些元素的集合它同文件系统中目录的概念对应。而且实际上许 多s h e l l 名字空间中的文件夹就是磁盘上真正的文件夹,但它不仅仅是真正的 1 9 第4 章文件系统监视的设计与实现 磁盘文件夹,它会包括桌面文件夹、控制面板、打印机文件夹以及字体文件夹 等等一个文件夹中又可以包含别的文件夹,这里被包含的文件夹就称为包含 它的文件夹的子文件夹。文件夹除了包含了文件夹之外,还可包含一些称为文 件对象的元素。就像s h e l l 名字空间中的文件夹与磁盘上的文件夹相似一样, 文件对象与真正的磁盘文件也有许多类似之处,文件对象可以是实际的某个文 件,当然它也可以是其他的元素,如一个打印机、一个注册表主键、某个控制 面板应用等等。 另外,s h e l l 名字空问中的文件夹类型与文件类型是有相关关系的,也就 是说,每种类型的文件夹中只能包含某些类型的文件对象,这种包含关系不是 随意的例如,你不可能把某个打印机对象移动到一个文件系统目录中去 4 1 3 名字空间中元素的标识 s h e l l 名字空间中的元素如此之多,那么,s h e l l 是采用什么方法来标识文 件夹和文件对象的呢? 这里就涉及到元素标识符和元素标识符列表的概念 s h e l l 名字空间中的每一个对象均被s h e l l 赋予一个元素标识符和元素标 识符列表。元素标识符在其父文件夹内惟一地标识一个元素,而元素标识符列 表则通过跟踪一条从桌面到s h e l l 名字空间中某元素的完整路径而在整个 s h e l l 名字空间中惟一地标识此元素。 元素标识符是由变长的s h i t e m i d 结构定义的。此结构的头两个字节指定其 大小,其余字节的格式取决于父文件夹。除了最初的两个字节之外,元素标识 符并不是严格定义的,因此,应用程序不应对其结构做任何假设。元素标识符 列表由在字节边界上进行对齐的一个或多个连续的i t e m l i s t 结构组成,其后有 一个1 6 位的零值。通过检查每个s h i t e m i d 结构中指定的大小,应用程序可以 遍历整个标识符列表,直到遇到大小为0 的s h i t i 瑚i d 结构为止 指向元素标识符列表的指针,称为p i d l ,可以在许多s h e l l 函数中使用, 第4 章文件系统监视的设计与实现 在应用程序对名字空间的访问中起着举足轻重的作用。 元素标识符和p i d l 同文件系统中的文件名和路径有许多相似的地方,但 是,它们之甸也有重要的区别:元素标识符和p i d l 均为二进制数据结构,对用 户来说它们是不可见的可以显示给用户的元素名称并不是元素本身,而是元 素的显示名称 在w i n d o w ss h e l l 名字空间中,有些文件夹对于s h e l l 来说具有特殊意义 应用程序可以使用s h e l l 函数来获取这些特殊文件夹的位置并允许用户浏览特 定的某个文件夹有些特殊文件夹是虚拟文件夹,如桌面文件夹、回收站文件 夹、我的电脑文件夹、网上邻居文件夹等,正是这些通过充当任意数目的存储 设备和网络资源的容器的虚拟文件夹的存在,使得可以构造一个统一的名字空 间。 4 2子类化技术 予类化技术,又称为子类派生处理,是、f b 中一种功能强大的技术在 w i n d o w s 中,每一个窗口都有一个默认的窗口函数。它的作用是对发送到窗口 的消息进行处理在1 i ,b 中,这个默认的窗口函数不是直接公开的,它提供了对 1 b 中的事件进行处理的代码,当接受到一条w i n d o w s 消息时,这个窗口函数就 会响应并产生一个、b 事件,换言之,这个窗口函数隐藏了消息处理的细节,用 一个v b 事件来响应一条w i n d o w s 消息然而,、b 没有提供对所有w i n d o w s 消 息的支持,许多w i n d o w s 消息都不会生成一个v b 事件,但是可以用自己定制的 一个窗口函数替代默认的窗口函数,并保留指向默认窗口函数的指针,当一个 消息到达窗口时,自制的窗口函数会拦截它并进行识别处理,对不能识别或不 需进行特别处理的消息,就通过指向默认窗口函数的指针传递给默认的窗口函 数进行处理,这样便扩充了默认窗口函数的功能。这种用定制的窗口函数代替 默认的窗口函数,拦截并处理到达窗口的消息的技术,一般称之为“子类处理”, 2 l 第4 章文件系统监视的设计与实现 定制的函数称之为“回调函数”子类处理的方法主要有三种: ( 1 ) 忽略消息并传递给默认的窗口函数; ( 2 ) 截获消息,执行特定操作后,传递给默认的窗口函数或传递给默认的窗 口函数处理后,对返回值进行控制; ( 3 ) 截获消息,执行特定操作并禁止默认的窗口函数对之进行处理 子类化处理效果如图所示: 匿i 巫叠至 图4 1 子类化效果示意图 下面介绍了子类处理中主要的三个函数 s e t w i n d o w l o n g 函数使用g w lw n d p r o c 索引将默认的窗口函数替换成我们 自制的回调函数,回调函数的地址由a d d r e s s o f 操作符得到,s e t w i n d o w l o n g 函 数返回值为默认的窗口函数的地址其原型是: 第4 章文件系统监视的设计与实现 l o n gs e t _ i n d o w l o n g ( h w n da sl o n g n i n d e x ,d w n e w l o n g ) d e f w i n d o w p r o c 函敦调用默认的窗口函数对消息进行处理,并返回消息处 理的指定返回值。其原型是: l r e s u l td e f w i n d o w p r o c ( h w n dh w n d ,u i n tm s g ,w p a r a mw f a r a m , l p a r a m 1 p a r a m ) c a l l w i n d o w p r o c 函数传递消息到指定的窗口函数( 窗口函数地址由 i p p r e v w n d f u n c 参数给定) 。并返回消息处理的指定返回值。其原型是: l r e s u l tc a l l w i n d o w p r o c ( w n d p r g ci p p r e v w n d f u n c ,h w n dh w n d ,u i n tm s g w p a r a mw p a r a m , l p a r a mi p a r a m ) 4 3文件系统监视原理分析 文件系统监视实现原理具体如下: 首先,利用函数s h c h a n g e n o t i f y r e g i s t e r 注册一个s h e l l 变化事件的接收 窗口,即把这个窗口加入系统消息通告链,当s h e l l 名字空间有变化时,s h e l l 会通过系统消息通告链把揭示这种变化的消息发送给该窗口 然后。再由该窗口的窗口函数对消息进行处理由于s h e l l 消息属于默认 的窗口函数所忽略的消息,必须使用子类化技术,利用回调函数( 自定义窗口 函数) 取代默认的窗口函数然后由回调函数来处理它。回调函数通过处理消 息的附加信息( w p a r a m 与i p a r a m ) ,来确定文件系统具体发生了什么变化。 具体的原理结构图如下: 第4 章文件系统监视的设计与实现 稿息( 禽有名字空间变化消息) 聋空闻变化消息j 二二二二三三三三三i i i ! 图4 - 2 文件监视原理结构图 s h e l l 名字空间变化( w m _ s h n o t i f y ) 这个消息的消息常量值为& h 4 0 1 。该 消息拥有两个重要的参数:i p a r a m 和w p a r a m ,包含着w m _ s h n o t i f y 消息的携 带信息 其中i p a r a m 标识s h e l l 名字空间变化事件类型( 表4 - i 对各种事件进行了 详细的说弱) 另一个参数w p a r a m 包含与具体事件类型有关的细节信息。具体 的说,w p a r a m 指向包含与变化事件中文件对象相关的两个p i d l 数组,我们知 道p i d l 为指向s h e l l 中的文件或文件夹相对于桌面的路径的指针,这里通过事 件发生前后,两个p i d l 分别指向的路径来说明文件到底发生了什么变化。例如: 在“重命名文件”这个事件中,这两个p i d l 分别指向重命名前与重命名后该文 件相对于桌面的路径。 第4 章文件系统监视的设计与实现 表4 is h e l l 名字空间变化事件 事件类型标识符十六进值事件说明 s h c n e _ r e n a m e i t e m h 1重命名或移动一个文件等事件 s h c n e - r e n a m e f o l d e r h 2 0 0 0 0重命名或移动一个文件夹等事件 s h c n e - f r e e s p a c e h 4 0 0 0 0 释放磁盘空间 s h c n e _ c r e a t e h 2 新建一个文件或浏览网页 s h c n e _ d e l e t e h 4删除一个文件 s h c n e _ j 舡( d i r h 8新建文件夹或网址记录 s h c n e _ r m i ) i r h 1 0删除一个文件夹 s h c n e _ m e d i a i n s e r t e d h 2 0插入可移动存储介质 s h c n e _ m e d i a r e m o v e d h 4 0移去可移动存储介质 s h c n e _ d r i v e r e m o v e d h 8 0移除驱动器 s h c n e - d r i v e a d d & h 1 0 0添加驱动器 s h c n e e t s i a ! i e 2 0 0 共享一个文件夹 s h c n e _ n e t u n s h a r e h 4 0 0取消一个文件夹的共享 s h c n e - a t t r i b u t e s h 8 0 0更新文件或文件夹属性 s h c n e _ u p d a t e d i r h 1 0 0 0一个文件夹里的内容发生了改变 s h c n e - u p d a t e i t e m h 2 0 0 0一个文件里的内容发生了改变 s h c n es e r v e r d i s c o n n e c th 4 0 0 0 断开网络连接 4 4文件系统监视的实现 实现过程是;首先需要将一个窗口加入系统消息通过链,系统通过系统消 息通过链告知窗口s h e l l 名字空间的消息,这时需通过子类化技术,用回调函数 ( 自定义窗口函数) 取代默认的窗口函数对消息进行处理其中,将消息值为 第4 章文件系统监视的设计与实现 & h 4 0 1 的名字空间消息传递给模块的另一个函数n o t i f i c a t i o n r e c d p t 专门处理; 对消息值为& h 8 2 的窗口销毁消息,调用u n s u b c l a s s 将该窗口去子类化,并退 出系统消息通告链;其余消息均传递给默认的窗口函数处理 首先是窗口如何加入系统消息通告链。这里要介绍用于注册s h e l l 窗口的 a p i :s h c h a n g e n o t i f y r e g i s t e r ,该函数在v b 中引用语法如下; d e c l a r ef u n c t i o ns h c h a n g e n o t i f y r e g i s t e rl i b 。s h e l l 3 2 a l i a s # 2 一 ( b y v a lh w n da s l o n g ,一 b y v a lu f l a g sa ss h c n _ i t e m f l a g s ,一 b y v a ld w e v e n t i da ss h c ne v e n t i d s ,一 b y v a lu m s ga sl o n g ,一 b y v 8 1c i t e m sa sl o n g ,一 i p i t e m sa sp i d l s t r u c t ) a sl o n g 参数说明: h w n d 为接收消息的窗口句柄; u f l a g s 为接收消息的事件类型; d w e v e n t l d 为要捕捉的事件; u m s g 为产生对应的事件后发往窗口的消息; c i t e m s 是一个用于保存接收通知消息的项目的结构体数组以及该数组的成 员个数: l p i t e m s 是s h e l l 中你要监视其变化的文件夹 其中l p i t e m s 的类型p i d l s t r u c t 是这样定义的: p u b l i ct y p ep i d l s t r u c t p i d la sl o n g b w a t c h s u b f o l e r sa sl o n g e n dt y p e 第4 章文件系统监视的设计与实现 - 这里如果设定p i d l 为某一文件夹时,就会获得关于该文件夹及其包含的条 目的变化的事件。如果把该b w a t c h s u b f o l d e r 设置为t r u e ,就能获得所监视的 文件夹的整个子树,包括被监视文件夹包含的所有子文件夹及条目变化的事件 在本程序中把p i d l 设为桌面,而把b w a t c h s u b f o l d e r s 设定为t r u e ,这意味着 本程序能够监视整个s h e l l 名子空间的变化 该函数返回一个整型注册标志号,失败返回0 调用后,系统就会将指定的 窗口加入到系统消息通告链中,当有文件操作发生对,s h e l l 会f 句该窗口发送 揭示文件变化的消息,这时只要在程序中加入对该消息的处理函数就可以实现 对文件变化的监视 注册加入系统消息通告链的代码如下: p u b l i cf u n c t i o ns h n o t i f y r e g i s t e r ( h w n da sl o n g ) a sb o o l e a n d i mp sa sp i d l l 汀r u c t 。 i f ( mh s h n o t i f y = 0 ) t h e n = _ p i d l d e s k t o p = g e t p i d l f r o m f o l d e r i d ( o ,c s i d l _ d e :s k t o p ) i fm _ p i d l d e s k t o pt h e n p s p i d l = mp i d l d e s k t o p p s b w a t c h s u b f o i d e r s = t r u e m _ h s n n o t i f y = s h c h a n g e n o t i f y r e g i s t e r ( h w n d 。s h c n 酪卫p e o r s h c n f _ i d l i s t ,s h c n e a l l e v e n t s 0 r s h c n e i n t e r r u p t , w ms h n o t i f y ,1 , p s ) d e b u g p r i n th e x ( s h c n f j y p eo rs h c n f _ i d l i s t ) d e b u g p r i n t h e x ( s h c n e _ a l l e v e n t s o rs h c n ei n t e r r u p t ) d e b u g p r i n tm _ h s h n o t i f z s h n o t i f y _ r e g i s t e r = c b o o l ( mh s h n o t i f y ) e l s e c a l lc o t a s k m e m f r e e ( m _ p i d l d e s k t o p ) 2 7 第4 章文件系统监视的设计与实现 哆- e n di f e n di f e n df u n c t i o n 退出系统消息通告链的代码如下: p u b li cf u n c t i o ns 哪o t i fy _ 一u n r e g i s t e roa sb o o l e a n i fmh s 删o t i f yt h e n i fs h c h a n g e n o t i f y d e r e g i s t e r ( mh s h n o t i f y ) t h e n mh s 州o t i f y = 0 c a l lc o t a s k m e m f r e e ( m _ p i d l d e s k t o p ) m _ p i d l d e s k t o p = 0 s 州o t i f y _ _ u n r e g i s t e r = t r u e e n di f e n di f e n df u n c t i o n 注册了的窗口获得关予s h e l l 变化事件的消息时,需通过子类化技术,用 自定义窗口函数取代默认的窗口函数对消息进行处理,下面是对接收窗口子类 化的具体实现过程的详细介绍: 本模块设计了三个函数实现窗口子类化和去子类化: 第4 章文件系统监视的设计与实现 豪4 2 实现窗口子类化的主要函数 函数参数函数功能 s u b c l a s sh w n da sl o n g窗口子类化 u n s u b c l a s sh w n da sl o n g窗口去子类化 w n d p r o c b y v a lh w n da sl o n g 回调函数 b y v a lu m s ga sl o n g b y v a lw p a r a ma sl o n g b y v a li p a r a ma sl o n g 实现代码如下: 窗口子类化函数s u b c l a s s p u b li cf u n c t i o ns u b c l a s s ( h w n da sl o n g ) a sb o o l e a n d i mi p f n 0 1 da sl o n g 默认的窗口函数的地址 d i mf s u c c e s sa sb o o l e a n i f ( g e t p r o p ( h w n d 。0 l d w
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年度测绘技术员创新研发与技术合作合同
- 2025版期房买卖合同样本(含社区配套设施使用协议)
- 2025年度健康食品品牌形象代言人合同
- 2025年度新型环保建材区域总代理销售合同
- 2025年北京老旧小区改造装饰装修项目承包合同
- 2025别墅装修材料供应与施工劳务承包合同
- 2025年度智能家居空气净化器产品代理销售协议
- 2025版绿色铁矿粉供应链采购合同
- 2025版动画角色设计委托创作协议
- 2025年度高科技产品研发委托合同与原材料采购协议
- 《高压开关柜》课件
- 装配钳工高级试题(附答案)
- 【数学】一元一次方程的应用(第2课时)课件 2024-2025学年北师大版七年级数学上册
- 甘肃省行政执法人员综合法律知识考试试题库
- GB/T 44739-2024枸杞及其制品中枸杞多糖的测定离子色谱法
- 13J927-3 机械式停车库设计图册
- DB41T 1176-2015 危险化学品重大危险源安全评估导则
- 论文不涉密证明模板
- 《钢铁是怎样炼成的》读书分享课件
- 施工现场临时用电计算书范本
- 国际宫颈病理与阴道镜联盟(IFCPC) 阴道镜新术语
评论
0/150
提交评论