计算机系统及访问文件系统的方法

文档序号:6572194阅读:574来源:国知局

专利名称::计算机系统及访问文件系统的方法
技术领域
:本发明涉及计算机系统及使用访问NTFS(NT文件系统)文件系统的方法,特别涉及一种MSDOS(微软磁盘操作系统)下进行NTFS文件系统访问的计算机系统及访问NTFS文件的方法,在WINDOWS(视窗)NT或WINDOWS2000系统无法正常工作时访问NTFS分区文件。
背景技术
:随着WINDOWSNT和WINDOWS2000的广泛使用,NTFS文件系统的使用也越来越广泛,但是一旦WINDOWS系统瘫痪,我们将无法访问NTFS分区中的文件,NTFS是NT/2000系统特有的文件系统,而WINDOWS系统非常庞大,我们无法从可移动介质上启动它,这时只有将硬盘放到其它NT系统上访问,这对于用户来说是非常不便的;否则,如果我们想拷贝磁盘上的文档,或对系统杀毒(有些病毒导致系统瘫痪,杀毒后即可正常运行)是不可能的。这就需要提供一种环境,这种环境非常小,能够在标准移动介质-软盘上运行,为我们的应用程序提供NTFS分区文件访问服务。针对上述条件和实际需要,DOS是最佳选择,因为它是微软公司的产品,更重要的是它的核心非常小,只有几百KB,(其它提供NTFS文件访问的非WINDOWS平台都非常大,也不能在软盘上运行),当然它不支持NTFS分区,因此,我们需要一种DOS环境下的NTFS文件访问环境。目前,DOS环境下NTFS文件系统访问程序已经出现,它是做成DOS驱动形式的,但它有严重的不足一、不支持长文件名,因为DOS的文件系统是8.3格式,这是DOS的限制,而NTFS文件系统的文件名是长文件名,因此它不能很好的工作,有时是不能工作。二、不支持UNICODE(统一编码),这也是DOS的限制,DOS只支持OEM(原设备制造商)/ANSI(美国国家标准协会)字符,对于东南亚的双字节字符(如中文、日文、韩文等)和一些单字节语言是不能支持的,文件名中有这些文字的文件/目录它也不能访问。三、占用的资源不会释放,即使在你访问FAT(文件分配表)文件系统时,它占用的资源也不会释放。四、编程比较复杂,不易修改与维护,因为它是DOS的驱动,处处受限于DOS驱动的模式。五、不安全。任何人得到这个程序都可以访问NTFS分区上的内容。
发明内容针对上述现有的NTFS分区文件的访问方法中出现的这些问题,本发明的目的在于提供一种能够访问NTFS分区文件的计算机系统,它不依赖于DOS系统本身,而是根据应用程序的需要提供文件访问接口,从根据上解决了它受限于操作系统的问题,本发明的另一目的是提供一种在DOS下访问NTFS分区文件的方法。根据本发明的一个方面,提供一种在DOS下访问NTFS文件系统的计算机系统,包括磁盘访问环境生成部件,用于基于应用程序建立磁盘扇区访问环境;分区访问环境生成部件,用于基于应用程序建立分区访问环境;NTFS文件环境生成部件,用于基于应用程序建立NTFS文件访问环境;文件系统环境生成部件,用于基于应用程序建立文件操作环境。根据本发明的另一方面,提供一种在DOS下访问NTFS文件系统的方法,该方法包括(a)提供一个磁盘访问环境生成部件,用于基于应用程序建立能够进行磁盘访问的环境;(b)提供一个分区访问环境生成部件,用于基于应用程序建立能够进行分区访问的环境;(c)提供一个NTFS文件环境生成部件,用于基于应用程序建立能够进行NTFS文件访问的环境;(d)提供一个文件系统环境生成部件,用于基于应用程序建立能够对文件操作的环境;(e)查找文件,所述文件系统环境生成部件将调用者传入的文件名转成相应文件环境的全路径名,然后查找该文件,如果找到该文件,将该文件的一些数据填入一个数据结构,并将该结构对应的句柄返回给用户;(f)读写文件,调用者提供文件句柄,将句柄信息提供给相应的NTFS文件环境生成部件,NTFS文件环境生成部件将信息传给分区访问环境生成部件,分区访问环境生成部件将NTFS文件系统生成部件传送的信息进行处理之后传给磁盘访问环境生成部件,磁盘访问环境生成部件将处理后的信息以及其它相关信息发给磁盘,完成读写功能。图1示出了本发明的在DOS下对NTFS文件系统进行访问的计算机系统的结构框图;图2示出了访问NTFS文件系统的工作流程图。具体实施例方式我们要处理的NTFS文件系统是一种磁盘文件系统。磁盘分为面(或者是磁头),每面又分为很多道,每道有若干扇区组成,每个扇区的大小是固定的,一般为512字节。整个磁盘又分为若干个区,称为分区,每个区对应一个独立的文件系统,对于DOS或WINDOWS操作系统而言就一个磁盘号,如C、D、E等。NTFS文件系统也是磁盘上的一个分区,对于NTFS文件系统而言,它不涉及磁盘的这种立体结构,对它而言,它所在的磁盘分区是由一系列的单元构成的,这些单元线性排列。也就说它看到盘是一个线性的存储空间。NTFS文件系统主要由以下几部分组成一、引导区。引导区存放着有关磁盘结构、分区结构、分区大小的信息和WINDOWS系统引导代码。二、MFT(masterfiletable,主文件表)表。MTF表是NTFS的基本结构,整个分区的每一部分,包括MFT表本身也是该表中的一个表项,前16个表项是NTFS文件系统自用的。三、属性表。属性表包括NTFS文件系统中文件的各种属性定义,包括NTFS系统已经定义的和用户自己定义的。四、分配表。NTFS文件系统将整个磁盘分区划成大小固定的存储分配单元,称为簇,每一个簇有对应的标识,表明该簇是否被占用,即分配表。五、根目录。为了便于用户管理,NTFS文件系统的文件组织结构也是一个树状结构,起始位置位为根,称为根目录,根目录可以存文件,也可以存一个目录,称为子目录,子目录中可以存文件,也可以存下一级目录。本发明就是根据上述NTFS文件系统结构建立起来的,但它与传统的方法有着本质的区别,就是,传统的方法是将文件系统的这种解释、处理过程集成到操作系统中,写成对应操作系统的驱动程序,它处处受限于操作的环境,无法满足应用的需要。本发明的这种“环境”不依赖于操作系统,因此完全不受操作系统的限制,只是根据应用程序的需要而工作,能够完全满足应用的需要。图1是本发明的在DOS下针对NTFS文件系统进行访问的计算机系统的结构框图,该计算机系统基于应用程序访问NTFS文件系统,而非靠DOS驱动形式访问,包括建立磁盘访问环境部件,支持8G以上硬盘的扇区访问;建立分区访问环境部件,每一个分区是独立的,所有针对该分区的访问不会越界到其它分区上;建立NTFS文件环境部件,提供单个文件的访问;建立文件系统环境部件,为应用程序提供NTFS分区文件的查找、打开、读写等访问环境。应用程序访问FAT分区文件通过DOS进行。下面将详细描述每个部件的工作过程磁盘访问环境建立部件此部件首先检测磁盘的类型和扇区的访问方法,例如通过传统的INT13调用只能访问8G以下的磁盘扇区,它要求给它传递磁盘号、磁头号、磁道号、扇区号、扇区数量等。对于INT13X调用,它要求给它传递磁盘号、起始磁盘号、扇区数量等,它可以访问2T大小的硬盘(如果扇区大小为512字节的话)。以上两方法都要求提供一个16位的段偏移格式的缓冲区指针。还有其它访问方法,它们要求传递的参数也不相同。这一步就是建立对调用者来说是统一的磁盘访问方法,我们提供线性的访问方法,要求调用者传递磁盘号、起始扇区号、扇区数量等信息,对于缓冲区指针,要求传递一个线性的32位地址,因为应用程序是在32位线性地址环境下运行。它个环境会将调用者的请求根据磁盘的类型,将调用者的请求参数做一定的转换,并调用相应的功能,完成扇区访问。同时,这个环境中还利用应用环境中的内存,做磁盘读写缓冲,以加速磁盘访问的速度。分区访问环境建立部件磁盘上已经被用户分成很多区(也可能只有一个分区),一个NTFS文件系统也是磁盘上的一个分区,并且从NTFS文件系统的角度看,磁盘分区是一个线性空间,这个环境的作用就是遍历磁盘上的所有分区,找到NTFS分区,并记录下每个NTFS分区在磁盘上的位置,为每个分区建立一个独立的结构,保证对某个分区的访问不会到其它分区上,即使是调用者发出了错误的指示。对于磁盘文件系统,磁盘的第一个扇区是主分区表,它有四个表项,四个表项可以指示不同的分区类型,也就是不同的文件系统类型,也可以是指向另一个扩展的分区表。扩展的分区表也有四个表项,它的作用与主要区表类似。每个分区表项有16个字节组成,包括分区的起止位置、大小和类型信息。其中类型信息为一个字节,它的低6位表示文件系统类型,07表示是NTFS分区。最高位(第7位)表示是否在MIRROR组或STRIP组中,第6位表示是否有错,这些都是该步必须考虑的问题。分区访问环境还提供对于引导区、MFT表、分配表、属性表、目录区等的访问,提供对MFT表中某个文件的访问,对文件进行访问时,要求调用者提供读、写命令、起始位置、数据长度、数据缓冲区地址等。NTFS文件环境建立部件此部件提供单个文件的访问、查找,每一个分区是一个独立的文件环境,它是要求调用者提供完整的路径名,如ABCD\EFGH,这是要求对根目录下的ABCD目录下的EFGH文件进行访问,而且这一步要求用户传递的文件名是ANSI格式的,而非UNICODE格式的,它的长度只受用户缓冲区大小的限制。NTFS文件环境会将用户传来的文件名进行路径分解,从根目录一步一步调用分区访问环境,找到ABCD目录,然后再调用分区访问环境,在ABCD目录中找到EFGH文件。在根目录中查找文件的过程如下一、通过MFT表读取根目录;二、在根目录中找ABCD目录项,记下它的MTF表项索引;三、根据MTF表索引读取ABCD目录;四、ABCD目录中找EFGH目录项;五、根据目录项中的MTF表索引,访问EFGH文件。以上每一步都是通过分区访问环境提供的功能完成的。由于目录中的文件名是UNICODE编码的,所以在这一步会调用UNICODE到ANSI代码的转换函数,这个函数是由应用程序提供的,这样,应用程序想支持哪一种言语,就提供相语言的UNICODE到ANSI转换的函数即可。文件系统环境建立部件此部件提供文件的查找、打开、读写、目录操作等访问环境。文件系统的主要操作包括查找文件、打开文件、读文件、写文件、找目录、进入目录、在目录中找文件、访问目录中的文件等操作,这是根据应用程序的要求确定的。对于查找文件和打开文件,都会产生另一个问题,就是找开文件也好,查找文件也好,完成后都进行后续操作,需要向调用者提供一个文件的唯一标识,称为句柄,以后就可以使用句柄进行读、写、关闭、找下一个等操作。一个句柄对应一个数据结构,该结构包括文件的文件环境标识、全文件名、MFT记录索引号,文件当前的指针,文件在大小,文件的属性等信息。这是各种文件访问函数必须的功能,也就是应用程序必须的功能,必须提供。比如,调用者要查找文件”H\ABCD\*.*”,H是逻辑盘号,也是文件环境的标识,根据此标识找到相应的文件环境,然后调用文件访问环境,查找该文件环境上的ABCD\*.*文件,如果找到,向调用者返回一个句柄,并将找到的文件名返回给调用者。如果要打开文件”H\ABCD\EFGH”,先分析H盘所对应的文件访问环境,调用该环境,查找文件”ABCD\EFGH”,若找到该文件,将有数据存入一句柄对应的数据结构中,将句丙返回给调用者。在调用者要求打开文件时,调用者会传一个文件名,文件系统环境将用户传来的文件名转换成完成的路径名后,传给文件环境,请求检查文件是否存在,如果不存在,向调用者返回错误,也就是一个INVALID_HANDLE_VALUE,如果文件存在,则返回一个可用句柄,如果可用句柄用尽,也返回INVALID_HANDLE_VALUE,实际上在本实例是不可能的,因为应用程序需要的最大句柄数是已知的。而且本实例未提供共享检测,因为应用程序不需要做这一步工作。这体现出了本发明的优点。图2是访问NTFS文件系统的工作流程图,步骤如下初始化磁盘扇区访问;初始化分区访问环境;初始化NTFS文件访问环境;初始化NTFS文件系统环境。在以上各环境建立之后,接着进行文件的查找和读写。打开文件文件系统环境将调用者传入的文件名转成相应文件环境的全路径名,然后调用文件相应的文件环境,查找该文件,如果找到该文件,则将该文件的一些数据填入一个数据结构中,并将该结构对应的句柄返回给用户。读写文件文件的读和写基本相同,读写文件时,调用者要提供文件句柄,通过句柄,知道文件所在的文件环境、读写命令、起始位置、读写长度、数据缓冲地址等,将这些信息传给相应的文件环境,文件环境将这些信息传给分区访问环境,分区访问环境将文件的起始位置转换成对应的簇号,将簇号转成起始扇区号,将读写长度转换成扇区数,将起始扇区号、扇区数、磁盘号、数据缓冲区地址传给磁盘访问环境,磁盘访问环境最终将读写命令、起始扇区号、扇区数、数据缓冲区地址发给磁盘,完成读写功能。在以上各步中,都可以根据应用程序的特点,做优化。如比查找文件,对于该实例,查找文件后的第一个运作就是打开该文件,因此可以在找到该文件的同时,就将打开文件所需的数据记录下来,打开文件时就非常节省时间。本实例中所有缓冲区包括句柄对应的数据结构不到300K,NTFS文件的结构远远比FAT结构复杂,文件访问的速度比FAT有2M缓冲区的情况还快。本发明不但适用于NTFS文件系统,也适用于其它文件系统,例如FAT文件系统,尽管DOS支持FAT文件系统,但它支持的路径的长度不能超过64字节,它不支持长文件名,它不支持UNICODE。第一点限制是致命的,在WINDOWS下路径可以超过64字节,在DOS下如果依赖DOS提供的功能,这些文件是无法访问的。利用本发明完全可以解决上述问题。权利要求1.一种在DOS下访问NTFS文件系统的计算机系统,包括磁盘访问环境生成部件,用于基于应用程序建立磁盘扇区访问环境;分区访问环境生成部件,用于基于应用程序建立分区访问环境;NTFS文件环境生成部件,用于基于应用程序建立NTFS文件访问环境;文件系统环境生成部件,用于基于应用程序建立文件操作环境。2.如权利要求1所述的计算机系统,其中,所述磁盘访问环境生成部件包括检测磁盘类型的单元;对应于应用程序的线性32位地址的缓冲区指针单元;请求调用者传递参数的单元;转换单元,根据磁盘的类型将参数进行转换,并调用相应功能,完成扇区访问;加速磁盘访问速度的单元,利用应用环境下的内存,进行磁盘读写缓冲,以加速磁盘访问速度。3.如权利要求2所述的计算机系统,其中,所述参数包括读写命令,磁盘号,起始扇区号,扇区数量,数据缓冲区地址。4.如权利要求1所述的计算机系统,其中,所述分区访问环境生成部件包括分区独立结构建立单元,用于查找磁盘上的所有分区,找到NTFS分区,记录下每个NTFS分区在磁盘上的位置,为每个分区建立一个独立的结构;访问单元,提供对磁盘引导区、MFT表、分配表、属性表、目录区的访问,提供对MFT表中文件的访问;请求调用者单元,当对文件进行访问时,请求调用者提供读、写命令、起始位置、数据长度、数据缓冲区地址;信息处理单元,将文件的起始位置转换成对应的簇号,将簇号转换成起始扇区号,将数据长度转换成扇区数。5.如权利要求1所述的计算机系统,其中,所述NTFS文件环境生成部件包括路径请求单元,要求调用者提供单个文件完整的路径名,以便对该路径名下的文件进行访问;文件查找单元,从根目录调用分区访问环境,找到所述文件。6.如权利要求5所述的计算机系统,其中,所述文件的文件名是ANSI格式的。7.如权利要求1所述的计算机系统,所述文件系统环境提供文件的查找、打开、读写、目录操作访问。8.如权利要求7所述的计算机系统,其中,所述文件系统环境生成部件包括句柄产生单元,根据应用程序的要求,完成相应的文件操作,向调用者提供一个句柄,该句柄是所述文件的唯一标识。9.如权利要求8所述的计算机系统,其中,所述句柄对应一个数据结构,该结构包括文件的文件环境标识、全文件名、MFT记录索引号、文件当前的指针、文件的大小、文件的属性。10.一种在DOS下访问NTFS文件系统的方法,该方法包括(a)提供一个磁盘访问环境生成部件,用于基于应用程序建立能够进行磁盘访问的环境;(b)提供一个分区访问环境生成部件,用于基于应用程序建立能够进行分区访问的环境;(c)提供一个NTFS文件环境生成部件,用于基于应用程序建立能够进行NTFS文件访问的环境;(d)提供一个文件系统环境生成部件,用于基于应用程序建立能够对文件操作的环境;(e)打开文件,所述文件系统环境生成部件将调用者传入的文件名转成相应文件环境的全路径名,然后查找该文件,如果找到该文件,将该文件的一些数据填入一个数据结构,并将该结构对应的句柄返回给用户;(f)读写文件,调用者提供文件句柄,将句柄信息提供给相应的NTFS文件环境生成部件,NTFS文件环境生成部件将信息传给分区访问环境生成部件,分区访问环境生成部件将NTFS文件系统生成部件传送的信息进行处理之后传给磁盘访问环境生成部件,磁盘访问环境生成部件将处理后的信息以及其它相关信息发给磁盘,完成读写功能。11.如权利要求10所述的方法,在所述(f)步中,在分区访问环境生成部件中的信息处理包括将文件的起始位置转换成对应的簇号;将簇号转换成起始扇区号;将数据长度转换成扇区数。12.如权利要求10所述的方法,其中,在所述(f)步中,所述相关信息包括读写命令、磁盘号、数据缓冲区地址。全文摘要一种在DOS下访问NTFS文件系统的计算机系统和方法,包括(a)提供磁盘访问环境生成部件,基于应用程序建立磁盘访问环境;(b)提供分区访问环境生成部件,基于应用程序建立分区访问环境;(c)提供NTFS文件环境生成部件,基于应用程序建立NTFS文件访问环境;(d)提供文件系统环境生成部件,基于应用程序建立文件操作环境;(e)查找文件,文件系统环境生成部件将调用者传入的文件名转成相应文件环境的全路径名,然后查找该文件,如找到将对应句柄返给用户;(f)读写文件,调用者提供文件句柄,句柄信息提供给NTFS文件环境生成部件,该部件将信息传给分区访问环境生成部件,分区访问环境生成部件将信息处理之后传给磁盘访问环境生成部件,磁盘访问环境生成部件将处理后的信息及其它相关信息发给磁盘,完成读写功能。文档编号G06F12/00GK1409223SQ0114215公开日2003年4月9日申请日期2001年9月14日优先权日2001年9月14日发明者刘锋申请人:北京瑞星科技股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1