文件系统访问的处理方法及系统的制作方法

文档序号:6397996阅读:313来源:国知局
专利名称:文件系统访问的处理方法及系统的制作方法
技术领域
本发明涉及通信领域,具体而言,涉及一种文件系统访问的处理方法及系统。
背景技术
云存储指通过集群应用、网格技术或分布式文件系统等功能,将网络中大量各种不同类型的存储设备通过应用软件集合起来协同工作,共同对外提供数据存储和业务访问功能的一个系统。目前较为简洁的访问云存储的方式就是将远程的云存储位置通过某种方式映射为客户端本地的一个虚拟文件系统,并提供兼容的文件访问接口,这样对于应用程序而言就可以不作任何更改地(透明地)访问该存储资源。文件系统访问重定向往往基于虚拟文件系统(Virtual File System,简称为VFS)进行,但是文件系统开发往往被认为是一项复杂耗时的工作,这是因为一方面文件系统自身涉及到设备空间管理、名字空间管理、访问控制等多种技术难点;另一方面需要大量的操作系统内核态编程,其难以调试等特点使开发工作更为困难。例如,虽然各类操作系统上分别提供了层次化的文件系统开发接口,如Linux系统下的VFS以及Windows系统下的可安装文件系统(Installable File System,简称为IFS),但因为这些接口仍工作在内核态,实现难度还是很大。用户层文件系统的出现在很大程度上解决了这一问题,具有代表性的示例之一就是用户空间文件系统(File system in User space,简称为FUSE),使用者可以在用户层编写代码并与FUSE库连接,从而实现目标文件系统。虽然FUSE在性能上有所不足,但其便于开发与调试的特点吸引了大批开发者实现了多种多样的文件系统。但FUSE不支持Windows系统,原因在于一方面,Windows文件系统的语义与接口不同于Unix系统(包括类Unix系统,如Linux);另一方面,Windows自身实现的透明性不足也阻碍了第三方开发此类文件系统框架。Danilo Almeida在1999年提出了一个FIFS的框架,该框架旨在提供一个简单的用户层下的Windows NT文件系统开发环境。FIFS通过一个操作系统内所包含的通用网络文件系统(Common Internet File System,简称为CIFS)的回送服务器,和NT的可安装文件系统(IFS)体系结合,能够提供完整的NT远程文件系统语义。但是FIFS由于开发的时间较早,且使用了未公开的Windows内核信息,其和现在流行的Windows XP, Windows Vista操作系统并不兼容。由此可见,用户层文件系统具代表性的有FUSE系统和FIFS系统分别存在以下缺陷对于FUSE系统而言1、性能上有所不足;2、不支持Windows系统。对于FIFS系统而言由于开发的时间较早,且使用了未公开的Windows内核信息,其和现在流行的Windows XP, Windows Vista操作系统并不兼容。针对相关技术中FUSE系统和FIFS系统存在的性能不足、兼容性不好等缺陷而无法更好地使使用者容易访问或修改云存储上的文件或数据的问题,目前尚未提出有效的解 决方案。

发明内容
本发明提供了一种文件系统访问的处理方法及系统,以至少解决上述问题。根据本发明的一个方面,提供了一种文件系统访问的处理方法,包括文件过滤驱动接收输入输出管理器转发的来自用户的操作请求消息,其中,文件过滤驱动是预先设置在输入输出管理器和文件系统驱动之间的;文件过滤驱动判断操作请求消息是否符合预定的过滤条件,在判断结果为是的情况下,将操作请求消息发送给用户层代理程序进行处理,否则,将操作请求消息发送给文件系统驱动进行处理。优选地,输入输出管理器、文件系统驱动以及文件过滤驱动均位于内核空间。优选地,操起请求消息包括输入输出请求包IRP和对应于IRP的完成例程,其中,完成例程包括以下至少之一设备控制Device Control IRP、创建Create IRP、清除/关闭Cleanup/Close IRP、目录控制Directory Control IRP、询问信息Query Info IRP、读取Read IRP、写入 Write IRP。优选地,当完成例程为Create IRP时,将操作请求消息发送给用户层代理程序进行处理包括Create IRP调用0b Query Name String获取IRP的完整路径名;Create IRP通过将完整路径名与元数据信息进行对比的方式判断IRP是否属于预先设置的欲截获对象,在属于欲截获对象的情况下,将IRP的地址存储在内部无用信息表中且将IRP发送给用户层代理程序进行处理。优选地,当完成例程为Read IRP或Write IRP时,将操作请求消息发送给用户层代理程序进行处理包括Read IRP或Write判断IRP是否属于预先设置的欲截获对象,在属于欲截获对象的情况下,将IRP存储在从Device Control IRP的队列头中取出的一个IPR结构中,并通过调用10 Complete IRP通知用户层代理程序接收IRP。优选地,Cleanup/Close IRP用于通知用户层代理程序当前访问流程结束,并清空当前访问的队列资源。优选地,Device Control IRP用于传输用户层代理程序与文件过滤驱动之间的数据。优选地,Directory Control IRP用于获取IRP请求的目标文件目录下的所有文件与目标列表,并将启动时获得的元数据信息返回到输入输出管理器。根据本发明的另一方面,提供了一种文件系统访问的处理系统,包括输入输出管理器、文件系统驱动、用户层代理程序,以及位于输入输出管理器和文件系统驱动之间的文件过滤驱动,其中,文件过滤驱动包括接收模块,用于接收输入输出管理器转发的来自用户的操作请求消息;判断模块,用于判断操作请求消息是否符合预定的过滤条件;执行模块,用于在判断模块的判断结果为是的情况下,将操作请求消息发送给用户层代理程序进行处理,否则,将操作请求消息发送给文件系统驱动进行处理。优选地,操起请求消息包括输入输出请求包IRP和对应于IRP的完成例程,其中,完成例程包括以下至少之一设备控制Device Control IRP、创建Create IRP、清除/关闭Cleanup/Close IRP、目录控制Directory Control IRP、询问信息Query Info IRP、读取Read IRP、写入 Write IRP。
通过本发明,采用在输入输出管理器和文件系统驱动之间预先设置文件过滤驱动,并使用该文件过滤驱动对用户的IRP(输入输出请求包)进行拦截并对IRP进行分析后再分类发送给用户层代理程序或文件系统驱动的方式,解决了相关技术中FUSE系统和FIFS系统存在的性能不足、兼容性不好等缺陷而无法更好地使使用者容易访问或修改云存储上的文件或数据的问题,进而达到了能够使使用者(包括应用程序)可以像访问本机文件那样访问远程服务器上的文件或数据,同时可以在远程服务器上区分不同用户的修改数据的效果O


此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中图1是根据本发明实施例的文件系统访问的处理方法流程图;图2是根据本发明优选实施例的工作流程示意图;图3是根据本发明优选实施例的文件系统访问的处理流程图;图4是根据本发明优选实施例的对用户个性化数据进行新建、修改以及删除处理的不意图;图5是根据本发明实施例的文件系统访问的处理系统的结构框图。
具体实施例方式下文中将参考附图并结合实施例来详细说明本发明。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。图1是根据本发明实施例的文件系统访问的处理方法流程图,如图1所示,该方法主要包括以下步骤(步骤S102-步骤S104)步骤S102,文件过滤驱动接收输入输出管理器转发的来自用户的操作请求消息,其中,文件过滤驱动是预先设置在输入输出管理器和文件系统驱动之间的;步骤S104,文件过滤驱动判断操作请求消息是否符合预定的过滤条件,在判断结果为是的情况下,将操作请求消息发送给用户层代理程序进行处理,否则,将操作请求消息发送给文件系统驱动进行处理。在本实施例中,输入输出管理器、文件系统驱动以及文件过滤驱动均位于内核空间。优选地,操起请求消息可以包括输入输出请求包IRP和对应于IRP的完成例程,其中,完成例程包括以下至少之一设备控制Device Control IRP、仓丨」建Create IRP、清除/ 关闭 Cleanup/Close IRP、目录控制 Directory Control IRP、询问信息 Query Info IRP、读取 Read IRP、写入 Write IRP。在本实施例中,当完成例程为Create IRP时,将操作请求消息发送给用户层代理程序进行处理包括Create IRP调用0b Query Name String获取IRP的完整路径名;Create IRP通过将完整路径名与元数据信息进行对比的方式判断IRP是否属于预先设置的欲截获对象,在属于欲截获对象的情况下,将IRP的地址存储在内部无用信息表中且将IRP发送给用户层代理程序进行处理。
在本实施例中,当完成例程为Read IRP或Write IRP时,将操作请求消息发送给用户层代理程序进行处理包括Read IRP或Write判断IRP是否属于预先设置的欲截获对象,在属于欲截获对象的情况下,将IRP存储在从Device Control IRP的队列头中取出的一个IPR结构中,并通过调用IO Complete IRP通知用户层代理程序接收IRP。在本实施例中,Cleanup/Close IRP用于通知用户层代理程序当前访问流程结束,并清空当前访问的队列资源。Device Control IRP用于传输用户层代理程序与文件过滤驱动之间的数据。Directory Control IRP用于获取IRP请求的目标文件目录下的所有文件与目标列表,并将启动时获得的元数据信息返回到输入输出管理器。下面结合图2至图4优选实施例对上述实施例提供的文件系统访问的处理方法进行更加详细的描述。首先,对上述实施例提供的文件系统访问的处理方法的思路进行简要介绍使用Windows系统下的用户层文件系统框架,将远程服务器上的文件或者数据映射为客户端的某个本地驱动器,这样在使用者(包括应用程序)看来,访问远程的数据就如访问本地文件一样(尤其对于云游戏系统而言),这是因为用户层文件系统框架能够实现任何应用程序访问虚拟驱动器的操作请求的截获(位于用户层),这就意味着可以截获所有的文件系统访问,从而识别写入\修改\创建等操作,进而对于这些数据(用户个性化数据就包含在其中)进行特殊处理,包括区分各个用户后分别存储以及读取。图2是根据本发明优选实施例的工作流程示意图,如图2所示,用户层文件系统的工作流程具体为在内核空间(也可称为内核态)设置一个文件过滤驱动(位于1/0管理器和文件系统驱动之间),任何文件系统的1/0请求包(10 Request Package,简称为IRP)必须经过该文件过滤驱动的过滤才能达到相关的底层驱动。其中,该文件过滤驱动能够监视、检查、修改以及截获所有的1/0请求包。正常情况下,当用户访问Windows系统的本机文件时,系统把对磁盘的操作请求层层传递下去,1/0管理器以IRP的形式向文件系统驱动发送该操作请求。在本发明的一个优选实施方式中,文件过滤驱动将相关的IRP (其中携带操作请求)截获之后,将其中符合过滤条件(也可称为截获条件)然后再传递给用户层代理程序(即图2中的注册函数(Registered Functions)),由Registered Functions完成实际功能并返回,或者,文件过滤驱动将不符合过滤条件的IRP仍然发送给下一层的文件系统驱动处理。进一步地,用户层代理程序完成对于远程数据的访问,以及“识别写入\修改\创建”等操作,进而对于这些数据(用户个性化数据就包含在其中)进行特殊处理,包括区分各个用户后对各个用户的个性化数据进行分别存储以及读取。对于文件过滤驱动的实现而言,文件过滤驱动的过滤对象拥有一组分派函数(dispatch functions)指针,每个分派函数都对应处理一个或几个种类的IRP。文件过滤驱动驱动的程序的主要功能就是在不同功能的分派函数中实现的。在IRP的分派函数中,除了将IRP直接传递给下层驱动,还可以为这个IRP设置一个完成例程,该完成例程通常是一个自定义的函数,函数地址存放在下一层驱动的1/0栈中。在本发明的一个优选实施方式中,文件过滤驱动程序主要实现了设备控制DeviceControl IRP、创建 Create IRP、清除 / 关闭 Cleanup/Close IRP、目录控制 DirectoryControl IRP、询问信息Query Info IRP、读取Read IRP、写入Write IRP等完成例程,这些完成例程将对指定目标文件的访问进行拦截,并将访问交由用户层代理程序具体执行。其中,各个IRP完成例程(结合用户层代理程序)完成的功能详细如下(I)CREATE IRP :在任何一个文件或者目录被访问之前,都会发送这类IRP (即访问序列中的第一个),该完成例程中可以调用Ob Query Name String来获得其完整路径名,通过与启动时获得的元数据信息进行对照判断该IRP是否符合截获对象,如果判断IRP是一个欲截获对象,则该IRP的地址存储在一个内部hash表中。(2)DIRECT0RY CONTROL IRP :主要处理 IRP_MN_QUERY_DIRECT0RY 请求,其功能是获得目标目录下的所有文件与目录列表,其中,启动时获得的相应的元数据信息可以直接被返回。(3) QUERY INFO IRP :获得目标文件的元数据,其中,启动时获得的相应的元数据信息可以直接被返回。(4) READ IRP :首先,IRP完成例程根据输入的对象查询是否是需要截获的,如果不是,则传给下层驱动;如果是,则将该请求放入内部的等待队列,同时从其维护的DeviceControl IRP队列头取出通过一个IRP,并将请求的数据拷贝入此IRP结构,并通过调用10Complete IRP来通知用户层代理程序接收此请求。用户层代理程序完成请求的接收后,会通过Device Io Control发回欲读取的数据,IRP完成例程将读取的数据拷贝到请求所在的IRP结构中,完成此10请求。这里,请详细参考图3(图3是根据本发明优选实施例的文件系统访问的处理流程图)(5) WRITE IRP :与 Read IRP 类似,通过 Device Control IRP 队列将其传输到用户层。(6) CLEANUP\CL0SE IRPs :是一个访问序列的最后两个IRP,完成例程会通知用户层代理程序当前访问的文件流程结束,并且清空相关的队列资源。(7)DEVICE CONTROL IRP :主要用于用户层与文件过滤驱动的通信,文件过滤驱动和应用程序互传数据都是通过Win32函数Device Io Control完成的。这里需要注意的是,如果是应用程序向驱动单向传输,则可以直接使用调用Device Io Control, Device Io Control会向文件过滤驱动发出一个对应的DeviceControl IRP,文件过滤驱动可以截获这个IRP,从而进行分类处理。在实际应用中,这类传输一方面是用于系统启动后,用户层向文件过滤驱动传输用户层文件系统元数据信息时所使用的;另一方面则是用户层完成文件过滤驱动传过来的IRP请求的信息之后后,向文件过滤驱动发送结果时所使用的。在实际应用中,如何实现过滤驱动如何向用户层发送IRP请求信息也是一个需要考虑的因素。本优选实施例仍旧使用Device Io Control向用户层发送IRP请求信息,在系统启动后,用户层会主动以异步方式向文件过滤驱动发送一系列的Device Control IRP,这些IRP从O编号到N-1,然后采用Wait for Sinlge 0b ject函数来等待O号IRP完成,然后是I号,2号直至N-1。文件过滤驱动在收到这样的Device Control IRP时,并不立即处理它,而是把它放入一个动态维护的内部私有队列里(顺序也从O到N-1);在拦截到一个需要处理的请求时,才将该请求拷贝到队列头上的IRP中,并使用Io Complete IRP将其传递给用户层。此时,用户层等待函数就可以返回,并调用Get Over lapped Result函数得到文件过滤驱动输出的请求信息,进而获取与请求信息对应的文件数据,或进行与请求信息相关的文件操作,最后再使用Device Io Control将完成的结果传回给文件过滤驱动。基于上述机制,可以在用户层代理程序内实现对于主要的windows文件系统操作的 API 的截获,包括Create File、Write File、Read File、Find First File/Find NextFile、Close File、Open Directory、Set File Attributes/Get File Attributes。图4是根据本发明优选实施例的对用户个性化数据进行新建、修改以及删除处理的示意图,如图4所示,文件过滤驱动对用户个性化数据(任何一个存储于户层虚拟文件系统之上的文件都被赋予一个属性)的处理主要包括(I) Remote :该文件存于远程服务端;(2) New :该文件是新建的或者是被修改过的;(3) Deleted :已被删除。在本发明的一个优选实施方式中,当某个用户的文件系统第一次被启动时,所有的文件与目录都被认为具有Remote属性(即存储在服务端)。在运行过程中,当任何文件/目录被删除时,这些文件/目录属性会被设为Deleted (而不是物理上被删除)。任何修改或者新创建的文件则会被至为New。特别的,当某一远程文件被修改时,它会首先被下载到本地缓存,后续操作将针对此本地版本进行,文件状态转换流程请参考图3。下面结合图3对用户层虚拟文件系统的整个运行过程做进一步描述(I)系统初始化用户在选择某一软件部署后,虚拟文件系统的用户层代理程序会首先下载这个按需软件的元数据包,该元数据包主要包括该按需软件的所有文件、目录的层次结构信息、路径名、以及文件属性(大小、访问权限、时间戳等),这是因为服务端实际上是个只读存储,这类元数据包可以事先在服务端压缩好,以便可以随时被访问。下载完成后,用户层代理程序会在本地某个事先指定的位置创建一个“锚文件目录”(anchor folders):在这一目录下,按需软件所有的文件(包括目录)均会被创建,其目录结构、名字、文件属性均与服务端的一样;唯一的区别在于所有的“锚文件”都是空的。这样做的好处在于所有与文件元数据相关的操作(如Set File Attributes/GetFile Attributes/Set File Time/Find xxx File等)可以直接在“锚文件系统”上完成,使得虚拟文件系统程序专注于处理数据操作;同时,“锚文件”也可以直接作为相应文件的缓存以简化其管理。(2)运行过程在运行过程中,服务端的内容为只读;客户端采用Copy-onirite机制,即任何用户使用软件过程中的修改都存于本地的锚文件系统,包括新文件/新目录以及修改的原有远程文件。(3)系统退出用户层文件系统退出时,所有的“锚文件系统”内容以及所有的文件属性都会被保存到一个独立的服务器上,以便下次启动时再从该服务器上下载,从而能够体现最新的数据修改。(4)多用户处理用户层代理程序启动时可以要求用户输入其用户名与密码,认证通过后即可确认该用户身份。相应的,每个用户在服务端拥有一个以其用户名识别的存储目录,用以存储其修改过的数据(包括新创建的),这样就可以区分不同用户,同时对于未修改的应用文件数据则可以只存一份。在实际应用中,本优选实施例可以采用如下的配置客户端为一台安装有 Windows XP SP2 的个人电脑,配置 2GBytes DDR2 内存,一个 Intel PentiumL 6G 处理器,本地硬盘为Hitachi IC25N030ATMR04 Travelstar驱动器,NTFS文件系统。服务器即为普通的PC服务器,两者间以百兆以太网互连。所使用的三个安装文件为WinDbg安装文件(大小为8809KB),Visio补丁安装文件(32605KB)与iTune安装文件(53058KB)。通过实验记录表明,用户层文件系统引入的平均每次文件系统读写操作的时间开销不超过lms,其中,具体的时间开销计算方法是记录上述程序在用户层文件系统之上的执行时间,以及直接在本地文件系统上的执行时间,两者的差值除以总共的文件系统读写操作次数,就是平均每次的额外开销。在实际应用中,将局域网内服务器上的一个目录映射为本地的一个虚拟目录,然后在此虚拟目录下进行若干实用操作,例如自解压安装文件的运行,同时记录用户层虚拟文件系统自身(不包括远程数据读取的开销)引入的额外时间开销。通过本优选实施例,使用Windows系统下的用户层文件系统框架,能够将远程服务器上的文件或者数据映射为客户端的某个本地驱动器,对于使用者(包括应用程序)而言,访问远程的数据就如访问本地文件一样,可以同时在远程服务器上区分不同用户的修改数据。进一步的,对于云游戏系统而言,因为用户层文件系统框架实现了任何应用程序访问虚拟驱动器的操作截获(位于用户层),这就意味着可以截获所有的文件系统访问,从而识别写入\修改\创建等操作,进而对于这些数据(用户个性化数据就包含在其中)进行特殊处理,包括区分各个用户后分别存储以及读取。进一步地,还具有以下优点(1)能够使用户层文件系统在性能上有很大提高,用户层虚拟文件系统自身(不包括远程数据读取的开销)引入的额外时间开销平均不超过Ims ; (2)兼容性好,可用于目前主流的Windows系统。采用上述实施例提供的文件系统访问的处理方法,解决了相关技术中FUSE系统和FIFS系统存在的性能不足、兼容性不好等缺陷而无法更好地使使用者容易访问或修改云存储上的文件或数据的问题,能够使使用者(包括应用程序)可以像访问本机文件那样访问远程服务器上的文件或数据,同时可以在远程服务器上区分不同用户的修改数据,进而达到了提高系统性能、减小额外时间开销以及增强系统兼容性的效果。图5是根据本发明实施例的文件系统访问的处理系统的结构框图,该系统用以实现上述实施例提供的文件系统访问的处理方法,如图5所示,该系统包括输入输出管理器
10、文件系统驱动20、用户层代理程序30,以及位于输入输出管理器和文件系统驱动之间的文件过滤驱动40。其中,文件过滤驱动40包括接收模块42,用于接收输入输出管理器转发的来自用户的操作请求消息;判断模块44,连接至接收模块42,用于判断操作请求消息是否符合预定的过滤条件;执行模块46,连接至判断模块44,用于在判断模块的判断结果为是的情况下,将操作请求消息发送给用户层代理程序进行处理,否则,将操作请求消息发送给文件系统驱动进行处理。在本优选实施例中,操起请求消息包括输入输出请求包IRP和对应于IRP的完成例程,其中,完成例程包括以下至少之一设备控制Device Control IRP、创建Create IRP、清除 / 关闭 Cleanup/Close IRP、目录控制 Directory Control IRP、询问信息 Query InfoIRP、读取 Read IRP、写入 Write IRP。采用上述实施例提供的文件系统访问的处理系统,解决了相关技术中FUSE系统和FIFS系统存在的性能不足、兼容性不好等缺陷而无法更好地使使用者容易访问或修改云存储上的文件或数据的问题,能够使使用者(包括应用程序)可以像访问本机文件那样访问远程服务器上的文件或数据,同时可以在远程服务器上区分不同用户的修改数据,进而达到了提高系统性能、减小额外时间开销以及增强系统兼容性的效果。从以上的描述中,可以看出,本发明实现了如下技术效果通过在输入输出管理器和文件系统驱动之间预先设置文件过滤驱动,并使用该文件过滤驱动对用户的IRP(输入输出请求包)进行拦截并对IRP进行分析后再分类发送给用户层代理程序或文件系统驱动的方式,解决了相关技术中FUSE系统和FIFS系统存在的性能不足、兼容性不好等缺陷而无法更好地使使用者容易访问或修改云存储上的文件或数据的问题,能够使使用者(包括应用程序)可以像访问本机文件那样访问远程服务器上的文件或数据,同时可以在远程服务器上区分不同用户的修改数据,进而达到了提高系统性能、减小额外时间开销以及增强系统兼容性的效果。显然,本领域的技术人员应该明白,上述的本发明的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件结合。以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
权利要求
1.一种文件系统访问的处理方法,其特征在于,包括: 文件过滤驱动接收输入输出管理器转发的来自用户的操作请求消息,其中,所述文件过滤驱动是预先设置在所述输入输出管理器和文件系统驱动之间的; 所述文件过滤驱动判断所述操作请求消息是否符合预定的过滤条件,在判断结果为是的情况下,将所述操作请求消息发送给用户层代理程序进行处理,否则,将所述操作请求消息发送给所述文件系统驱动进行处理。
2.根据权利要求1所述的方法,其特征在于,所述输入输出管理器、所述文件系统驱动以及所述文件过滤驱动均位于内核空间。
3.根据权利要求1或2所述的方法,其特征在于,所述操起请求消息包括:输入输出请求包IRP和对应于所述IRP的完成例程,其中,所述完成例程包括以下至少之一: 设备控制Device Control IRP、创建Create IRP、清除/关闭Cleanup/Close IRP、目录控制 Directory Control IRP、询问信息 Query Info IRP、读取 Read IRP、写入 Write IRP。
4.根据权利要求3所述的方法,其特征在于,当所述完成例程为所述CreateIRP时,将所述操作请求消息发送给用户层代理程序进行处理包括: 所述Create IRP调用目标询问名称串Ob Query Name String获取所述IRP的完整路径名; 所述Create IRP通过将所述完整路径名与元数据信息进行对比的方式判断所述IRP是否属于预先设置的欲截获对象,在属于所述欲截获对象的情况下,将所述IRP的地址存储在内部无用信息表中且将所述IRP发送给所述用户层代理程序进行处理。
5.根据权利要求3所述的方法,其特征在于,当所述完成例程为所述ReadIRP或所述Write IRP时,将所述 操作请求消息发送给用户层代理程序进行处理包括: 所述Read IRP或所述Write判断所述IRP是否属于预先设置的欲截获对象,在属于所述欲截获对象的情况下,将所述IRP存储在从所述Device Control IRP的队列头中取出的一个IPR结构中,并通过调用IO Complete IRP通知所述用户层代理程序接收所述IRP。
6.根据权利要求3所述的方法,其特征在于,所述Cleanup/CloseIRP用于通知所述用户层代理程序当前访问流程结束,并清空所述当前访问的队列资源。
7.根据权利要求3所述的方法,其特征在于,所述DeviceControl IRP用于传输所述用户层代理程序与所述文件过滤驱动之间的数据。
8.根据权利要求3所述的方法,其特征在于,所述DirectoryControl IRP用于获取所述IRP请求的目标文件目录下的所有文件与目标列表,并将启动时获得的元数据信息返回到所述输入输出管理器。
9.一种文件系统访问的处理系统,其特征在于,包括:输入输出管理器、文件系统驱动、用户层代理程序,以及位于所述输入输出管理器和所述文件系统驱动之间的文件过滤驱动,其中,所述文件过滤驱动包括: 接收模块,用于接收所述输入输出管理器转发的来自用户的操作请求消息; 判断模块,用于判断所述操作请求消息是否符合预定的过滤条件; 执行模块,用于在所述判断模块的判断结果为是的情况下,将所述操作请求消息发送给所述用户层代理程序进行处理,否则,将所述操作请求消息发送给所述文件系统驱动进行处理。
10.根据权利要求9所述的系统,其特征在于,所述操起请求消息包括:输入输出请求包IRP和对应于所述IRP的完成例程,其中,所述完成例程包括以下至少之一: 设备控制Device Control IRP、创建Create IRP、清除/关闭Cleanup/Close IRP、目录控制 Directory Contro l IRP、询问信息 Query Info IRP、读取 Read IRP、写入 Write IRP。
全文摘要
本发明公开了一种文件系统访问的处理方法及系统。其中,该方法包括文件过滤驱动接收输入输出管理器转发的来自用户的操作请求消息,其中,文件过滤驱动是预先设置在输入输出管理器和文件系统驱动之间的;文件过滤驱动判断操作请求消息是否符合预定的过滤条件,在判断结果为是的情况下,将操作请求消息发送给用户层代理程序进行处理,否则,将操作请求消息发送给文件系统驱动进行处理。通过本发明,达到了提高系统性能、减小额外时间开销以及增强系统兼容性的效果。
文档编号G06F17/30GK103077243SQ20131001678
公开日2013年5月1日 申请日期2013年1月16日 优先权日2013年1月16日
发明者姜汉龙, 石坤 申请人:北京数码视讯科技股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1