发明内容
本发明所要解决的技术问题是提供一种文件操作的执行方法,以增强和驱动级恶意程序攻防的对抗能力,并避免因文件操作干扰而导致安全软件间产生不兼容的潜在可能性。
本发明还提供了一种文件操作的执行装置,用以保证上述方法在实际中的应用及实现。
为了解决上述问题,本发明实施例公开了一种文件操作的执行方法,包括:
获取文件操作请求,所述请求中包括调用者输入参数,所述输入参数中包括文件路径;
依据所述文件路径在对象管理器中查找对应的文件对象解析例程;
若查找到对应的文件对象解析例程,则依据所述文件对象解析例程生成I/O请求包,并发送至预置的文件系统下层设备的原始地址。
优选的是,所述依据文件路径在对象管理器中查找对应的文件对象解析例程的步骤具体包括以下子步骤;
子步骤S1、判断文件路径是否已经拆解完毕,若否,则执行子步骤S2;若是,则执行子步骤S4;
子步骤S2、按照路径分隔符拆解出文件路径中下一个待拆解的路径段;
子步骤S3、采用当前拆解出的路径段在对象管理器中搜索,判断是否存在对应的文件对象例程;若是,则返回子步骤S1;若否,则执行子步骤S5;
子步骤S4、获得所述文件路径对应的文件对象解析例程。
子步骤S5、返回未找到对应文件对象解析例程的信息。
优选的是,所述调用者输入参数具有用户态地址;在查找文件对象解析例程之前,所述的方法还包括:
重构所述用户态地址至内核态内存空间。
优选的是,所述I/O请求包中包括从文件操作请求中提取的文件操作信息,在发送I/O请求包至预置的文件系统下层设备的原始地址之后,还包括:
由所述文件系统下层设备依据所述文件操作信息继续执行对应的文件操作。
优选的是,在获取文件操作请求之前,还包括:
调用者发起文件操作请求,调用对应的文件操作接口例程;其中,所述请求中包括调用者输入参数,所述输入参数中包括文件路径;
依据系统平台的类型构建内核态结构参数,依据所述内核态结构参数生成相应的文件操作控制码,并发送至操作系统内核态。
优选的是,在构建内核态结构参数之前,还包括:
文件操作接口例程将调用者输入参数中的ANSI相关参数转换为UNICODE类型,并调用对应的文件操作接口宽字符例程。
优选的是,所述文件操作接口例程包括文件创建例程FSCreateFile,在由所述文件系统下层设备继续执行所请求的文件操作之前,还包括:
插入新创建的文件对象至对象管理器,并得到返回的文件句柄。
优选的是,所述的方法,还包括:
依据所述文件操作请求校验调用者输入参数,若校验通过,则执行查找文件对象解析例程的步骤。
优选的是,所述文件操作接口例程与WINDOWS标准API一致,所述文件操作接口例程还包括:文件读取例程FSReadFile、文件写入例程FSWriteFile、文件属性设置例程FSSetFileAttributes、文件属性获取例程FSGetFileAttributes、文件指针设置例程FSSetFilePointer、增强文件指针设置例程FSSetFilePointerEx、文件大小获取例程FSGetFileSize、文件删除例程FSDeleteFile、目录移除例程FSRemoveDirectory、句柄关闭例程FSCloseHandle、第一个文件查找例程FSFindFirstFile、下一个文件查找例程FSFindNextFile、文件查找关闭例程FSFindClose、增加文件属性获取例程FSGetFileAttributesEx、判断路径是否为目录的例程FSPathIsDirectory、判断目标文件是否存在的例程FSPathFileExists、长路径获取例程FSGetLongPathName、短路径获取例程FSGetShortPathName、路径查找例程FSSearchPath、增强文件大小获取例程FSGetFileSizeEx、文件复制例程FSCopyFile、文件移动例程FSMoveFile和/或增强文件移动例程FSMoveFileEx。
优选的是,所述控制码包括:文件创建操作控制码FILE_IO_CREATE_FILE、文件读取操作控制码FILE_IO_READ_FILE、文件写入操作控制码FILE_IO_WRITE_FILE、文件查询操作控制码FILE_IO_QUERY_FILE、文件设置操作控制码FILE_IO_SET_FILE和/或文件关闭准备操作控制码FILE_IO_PREPARE_CLOSE。
本发明实施例还公开了一种文件操作的执行装置,包括:
内核态请求获取模块,用于获取文件操作请求,所述请求中包括调用者输入参数,所述输入参数中包括文件路径;
内核态对象解析模块,用于依据所述文件路径在对象管理器中查找对应的文件对象解析例程;若查找到对应的文件对象解析例程,则调用内核IRP生成发送模块;
内核态IRP生成发送模块,用于依据所述文件对象解析例程生成I/O请求包,并发送至预置的文件系统下层设备的原始地址。
优选的是,所述内核对象解析模块具体包括以下子模块;
文件路径拆解子模块,用于按照路径分隔符逐级拆解出文件路径中的路径段;
对象管理器搜索子模块,用于采用当前拆解出的路径段在对象管理器中搜索,查找对应的文件对象例程。
优选的是,所述调用者输入参数具有用户态地址;所述的装置还包括:
内核地址重构模块,用于重构所述用户态地址至内核态内存空间。
优选的是,所述的装置,还包括:
用户态请求发送模块,用于由调用者发起文件操作请求,调用对应的文件操作接口例程;其中,所述请求中包括调用者输入参数,所述输入参数中包括文件路径;
用户态控制码发送模块,用于依据系统平台的类型构建内核态结构参数,依据所述内核态结构参数生成相应的文件操作控制码,并发送至操作系统内核态。
优选的是,所述的装置,还包括:
宽字符例程调用模块,用于将调用者输入参数中的ANSI相关参数转换为UNICODE类型,并调用对应的文件操作接口宽字符例程。
优选的是,所述文件操作接口例程包括文件创建例程FSCreateFile,所述的装置还包括:
句柄获取模块,用于插入新创建的文件对象至对象管理器,并得到返回的文件句柄。
优选的是,所述的装置,还包括:
内核态参数校验模块,用于依据所述文件操作请求校验调用者输入参数,若校验通过,则调用内核对象解析模块。
与现有技术相比,本发明具有以下优点:
在操作系统用户态接口完整实现一套文件操作调用库,调用者发起文件操作请求,调用对应的文件操作接口例程,操作系统内核态驱动获取并校验所述来自用户态的请求,构建查询数据结构循环解析传入的文件路径,最终查找到对象管理器中维护的对象类型,这一过程有效对抗了内核态的劫持内险。此后,操作系统内核态驱动构建并填充IRP请求数据包,发送至预先确定的文件系统下层设备的原始地址处,此时文件系统调用栈上的第三方过滤驱动,包括其他安全软件和驱动级恶意程序可以被穿透,从而既可以有效避免因文件操作干扰而导致和其他安全软件间产生不兼容的潜在可能性;又可以增强和驱动级恶意程序攻防时的对抗能力。
本发明实施例中所采用的文件路径解析方法还能动态解析目标文件路径,例如,对于动态映射的网络磁盘驱动器,通过搜索对象管理器就能动态获得DOS-Style文件路径格式、盘符和文件系统下层设备对象之间的对应处理关系,因而本发明实施例还有适用范围广,适用场景多的优点。
具体实施方式
为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本发明作进一步详细的说明。
本发明实施例的核心构思之一在于,在操作系统用户态接口完整实现一套文件操作调用库,调用者发起文件操作请求,调用对应的文件操作接口例程,操作系统内核态驱动获取并校验所述来自用户态的请求,构建查询数据结构循环解析传入的文件路径,最终查找到对象管理器中维护的对象类型,这一过程有效对抗了内核态的劫持内险。此后,操作系统内核态驱动构建并填充IRP请求数据包,发送至预先确定的文件系统下层设备的原始地址处,此时文件系统调用栈上的第三方过滤驱动(其他安全软件、驱动级恶意程序)被穿透(旁路,bypass)。简而言之,即本发明通过建立一条新的、可信的、可以穿透过滤驱动的文件操作执行路径,有效避免了传统操作系统的文件执行路径上存在的风险。
参考图2,示出了本发明的一种文件操作的执行方法实施例1的步骤流程图,具体可以包括以下步骤:
步骤201、获取文件操作请求,所述请求中包括调用者输入参数,所述输入参数中包括文件路径;
需要说明的是,在本发明实施例中,所述文件包括WINDOWS操作系统中所支持类型的文件,所述文件操作是指针对文件的原子操作或原子操作的组合,所述原子操作包括:文件创建、文件读取、文件写入、文件属性设置、文件属性获取、文件指针设置、文件大小获取、文件删除、目录移除、句柄关闭、第一个文件查找、下一个文件查找、文件查找关闭、判断路径是否为目录、判断目标文件是否存在、长路径获取、短路径获取、路径查找、文件复制、文件移动等。例如,文件的杀毒操作即为文件读取、第一个文件查找、下一个文件查找、文件查找关闭、文件移动等原子操作的组合。
步骤202、依据所述文件操作请求校验调用者输入参数,若校验通过,则依据所述文件路径在对象管理器中查找对应的文件对象解析例程;
参考图3,在本发明的一种优选实施例中,所述依据文件路径在对象管理器中查找对应的文件对象解析例程的步骤具体可以包括以下子步骤;
子步骤S1、判断文件路径是否已经拆解完毕,若否,则执行子步骤S2;若是,则执行子步骤S4;
子步骤S2、按照路径分隔符拆解出文件路径中下一个待拆解的路径段;
子步骤S3、采用当前拆解出的路径段在对象管理器中搜索,判断是否存在对应的文件对象例程;若是,则返回子步骤S1;若否,则执行子步骤S5;
子步骤S4、获得所述文件路径对应的文件对象解析例程。
子步骤S5、返回未找到对应文件对象解析例程的信息。
在具体实现中,可以预先构建对象管理器查询的OpenPacket结构,基于路径分隔符“\”循环拆解文件路径,例如,文件路径为:c:\a\b.txt,则第一次拆解出的路径段为c:,第二次拆解出的路径段为:c:\a,第三次拆解出的路径段为:c:\a\b.txt,即在本发明实施例,是基于递归调用的方式拆解文件路径。对象管理器(Object Manager)是Windows NT内核的一个基本组件。Windows NT在设计的时候,“面向对象”的设计思想已大行其道,即将原本散落在操作系统各处的资源集中抽象、封装起来,进而为各种内部服务提供一致的访问途径。对象管理器主要用于实现以下功能:(1)提供一种公共的、统一的机制来使用系统资源;(2)将对象保护隔离到操作系统的统一区域中,从而可以做到C2安全等级;(3)提供一种机制来记录进程使用对象的数量,从而可以对系统资源的使用加上限制;(4)建立一套对象命名方案,可以更方便地融合现有的对象。对象管理器共维护了几十种对象类型(Windows 2000是27种对象类型;Windows XP是29种对象类型),常见的如:符号链接(Symbolic Link)、进程(Process)、线程(Thread)、作业(Job)、文件(File)、事件(Event)、定时器(Timer)等等。
对象管理器中维护有拉链式的对象Hash表,基于每次拆解出的路径段搜索对象管理器,若能查找到对应的对象解析例程ParseProcedure,则继续下一次的文件路径拆解,并基于下一次拆解出的路径段和之前已拆解出的路径段搜索对象管理器,若当前的文件路径经过循环解析被完全拆解完毕,则经过搜索对象管理器找到的文件对象解析例程ParseRoutine为当前文件路径对应的文件对象解析例程。
公知的是,例程是某个系统对外提供的功能接口或服务的集合。比如操作系统的API、服务等就是例程。
为使本领域技术人员更好地理解本发明,以下结合图4、图5、图6、图7、图8和图9所示的对象管理器搜索示意图,通过一个具体例子详细说明本发明拆解文件路径搜索对象管理器的操作。
例如,文件路径为:c:\test\test.txt,c:就是一个符号链接(SymbolicLink),对象管理器搜索实质上是一个符号链接的查询过程。
(1)参考图4,搜索从对象管理器的“根”开始(即“\”);
(2)找到“\”下的GLOBAL??目录;
(3)根据GLOBAL??目录找到“\”下的GLOBAL??文件夹;此后,继续在GLOBAL??里寻找c:(注意C:在图中属于SymbolicLink)
(4)参考图5,从GLOBAL??文件夹中找到C:;
(5)依据C:所对应的类型(Type):SymbolicLink和附加信息(Additional Information):\Device\HarddiskVolume1找到Device文件夹;如有必要,会继续解析\Device\harddiskVolume1符号链接等等,直接无法拆解为止。
(6)参考图6,从Device文件夹下找到HarddiskVolume1。
又如,文件路径为“SystemRoot\System32\Drivers\ntfs.sys”,“SystemRoot”也是符号链接;
(1)参考图7,先找到SystemRoot;
(2)依据SystemRoot所对应的类型(Type):SymbolicLink和附加信息(Additional Information):\Device\Harddisk0\Partitionl\WINDOWS找到Device文件夹;
(3)参考图8,找到Device文件夹下的\Harddisk0;
(4)找到\Harddisk0下的Partitionl,依据Partitionl所对应的类型(Type):SymbolicLink和附加信息(Additional Information):\Device\HarddiskVolume1找到Device文件夹;
(5)参考图9,找到Device文件夹下的HarddiskVolume1。
在本例中,路径拆解的依据是路径分隔符“\”,每找到一个分隔符,就认为找到一段“因子”,然后去搜索对象管理器,如有必要再合并路径,重新搜索对象管理器。在本实施例中,搜索出的文件对象解析例程是一个函数,这个函数在注册的时候就和某个因子对应,它知道如何去正确地处理这些因子。
本发明实施例中所采用的文件路径解析方法能动态解析目标文件路径,例如,对于动态映射的网络磁盘驱动器,通过搜索对象管理器就能动态获得DOS-Style文件路径格式、盘符和文件系统下层设备对象之间的对应处理关系,因而本发明实施例还有适用范围广,适用场景多的优点。
步骤203、若查找到对应的文件对象解析例程,则依据所述文件对象解析例程生成I/O请求包,并发送至预置的文件系统下层设备的原始地址。
在具体实现中,文件对象解析Parse Routine的实现类似于微软的IoParseDevice例程(模拟实现),其内部会构建并填充I/O请求包(I/ORequest Packet,IRP)并发送至文件系统下层设备的原始地址处。在微软的Windows操作系统家族中,都通过发送IRP来进行和驱动程序的通讯。用来封装IRP的数据结构不仅仅用来描述一个I/O操作的请求本身的内容,还要用来维护这一请求在一系列驱动程序中传递的过程中的相关状态信息。也就是说IRP可以被定义为:是I/O系统为了处理一个I/O请求而用来存储必要信息的地方。当一个线程调用一个I/O服务的时候,I/O管理器构造IRP,用于在I/O系统处理此请求的过程中代表此请求。
在具体实现中,所述文件系统下层设备的原始地址可以在系统初始化时设置。经过此步骤,文件系统调用栈上的第三方过滤驱动(其他安全软件、驱动级恶意程序)会被穿透,从而可以有效避免因文件操作干扰而导致和其他安全软件间产生不兼容的潜在可能性;还可以增强和驱动级恶意程序攻防时的对抗能力。
在实际中,所述I/O请求包中包括从文件操作请求中提取的文件操作信息,当I/O请求包(IPR)被发送至预置的文件系统下层设备的原始地址之后,则由所述文件系统下层设备依据所述文件操作信息继续执行对应的文件操作。具体而言,当IRP发送给文件系统的设备对象后,直到写入硬盘,还要经过一系列复杂的处理过程,一般而言,这个请求还要经过卷快照(Volsnap.sys)、卷管理器(Ftdisk.sys)、分区管理器(Partmgr.sys)、磁盘类驱动(disk.sys)、磁盘端口驱动(以IDE系统为例是atapi.sys)、小端口驱动(以Adaptec 1540 SCSI为例是Ahal54x.sys)等一系列的传递,最终由小端口驱动决定写入磁盘或磁带机的相应偏移。卷管理(包括快照)引入了动态的概念,使得windows可以创建多分区卷(比如镜像卷mirrors,条带卷stripes,RAID-5等),该组件会根据实际情况将请求定位到目标卷的某个偏移。分区管理器负责通知即插即用管理器当前有哪些分区,以及他们的状态(创建、删除等)。磁盘类驱动实现了对于所有磁盘共有的功能,例如,SCSI(Small Computer SystemInterface,小型计算机系统接口)Port是针对SCSI总线上的磁盘特性。最后小端口驱动针对某些厂商的特有产品特点,这类驱动往往由厂商自己提供。总的来说,就是每一层根据自己的接口,接收上层传递来的请求,以自己看到的“视图”,找到目标设备的某个扇区偏移,创建、写入、删除数据。
参考图10,示出了本发明的一种文件操作的执行方法实施例2的步骤流程图,具体可以包括:
步骤401、加载文件操作接口例程,初始化文件系统下层设备的原始地址;
作为具体应用的一种示例,所述文件操作接口例程包括:文件创建例程FSCreateFile、文件读取例程FSReadFile、文件写入例程FSWriteFile、文件属性设置例程FSSetFileAttributes、文件属性获取例程FSGetFileAttributes、文件指针设置例程FSSetFilePointer、增强文件指针设置例程FSSetFilePointerEx、文件大小获取例程FSGetFileSize、文件删除例程FSDeleteFile、目录移除例程FSRemoveDirectory、句柄关闭例程FSCloseHandle、第一个文件查找例程FSFindFirstFile、下一个文件查找例程FSFindNextFile、文件查找关闭例程FSFindClose、增加文件属性获取例程FSGetFileAttributesEx、判断路径是否为目录的例程FSPathIsDirectory、判断目标文件是否存在的例程FSPathFileExists、长路径获取例程FSGetLongPathName、短路径获取例程FSGetShortPathName、路径查找例程FSSearchPath、增强文件大小获取例程FSGetFileSizeEx、文件复制例程FSCopyFile、文件移动例程FSMoveFile和/或增强文件移动例程FSMoveFileEx。所述文件操作接口例程的设置,如调用约定、调用参数和对应的WINDOWS标准API一致。上述每个例程均包括窄字符例程和宽字符例程,例如对于FSCreateFile而言,包括窄字符例程FSCreateFileA和宽字符例程FSCreateFileW。
步骤402、调用者发起文件操作请求,调用对应的文件操作接口例程;其中,所述请求中包括调用者输入参数,所述输入参数中包括文件路径和用户态地址;
例如,调用者进程发起FSCreateFileA的文件创建请求。
步骤403、所述文件操作接口例程的用户态部分将调用者输入参数中的ANSI相关参数转换为UNICODE类型,并调用对应的文件操作接口宽字符例程;
公知的是,ANSI中的字符采用8bit,而UNICODE中的字符采用16bit。(对于字符来说ANSI以单字节存放英文字符,以双字节存放中文等字符,而Unicode下,英文和中文的字符都以双字节存放)。
以文件创建过程为例,为保证平台适用性,FSCreateFileA会将调用者输入参数中的ANSI相关参数转换为UNICODE类型,并调用对应的文件操作接口宽字符例程FSCreateFileW。
当然,若在实际中直接调用的是宽字符例程,则无需执行本步骤。
步骤404、依据系统平台的类型构建内核态结构参数,依据所述内核态结构参数生成相应的文件操作控制码,并发送至操作系统内核态;
所述系统平台的类型包括32位、64位以及32位兼容模式。作为本发明一种具体应用的示例,与所述文件操作接口例程对应的控制码包括:文件创建操作控制码FILE_IO_CREATE_FILE、文件读取操作控制码FILE_IO_READ_FILE、文件写入操作控制码FILE_IO_WRITE_FILE、文件查询操作控制码FILE_IO_QUERY_FILE、文件设置操作控制码FILE_IO_SET_FILE和/或文件关闭准备操作控制码FILE_IO_PREPARE_CLOSE。所述控制码定义了操作系统用户态和内核态驱动通信时的统一标识。
以文件创建过程为例,FSCreateFileW通过判断系统平台类型(32位、64位或32位兼容模式)构建结构参数,发送控制码FILE_IO_CREATE_FILE并同步等待返回。
在实际中,FSCreateFileW还可以处理畸形文件名、文件路径,并实际完成参数转换的操作。操作系统用户态和内核态驱动通信时输入、输出缓冲区可以采用METHOD_BUFFERED方式传输。METHOD_BUFFERED方式为:先分配缓冲,再从这个缓冲copy数据,缓冲区大小是输入缓冲和输出缓冲间空间较大的那个。读缓冲被copy到新的缓冲。在返回前,只是copy返回值到相同的缓冲。返回值被放到IO_STATUS_BLOCK,IO管理器copy数据到输出缓冲。
步骤405、操作系统内核态驱动获取文件操作请求,校验调用者输入参数,并重构(Captured)所述用户态地址至内核态内存空间;
以文件创建过程为例,由FSCreateFileW例程内核部分将执行步骤,并在内核态内存空间处理相应的调用者输入参数。
步骤406、若输入参数校验通过,则依据所述文件路径在对象管理器中查找对应的文件对象解析例程;
步骤407、若查找到对应的文件对象解析例程,则依据所述文件对象解析例程生成I/O请求包,并发送至预置的文件系统下层设备的原始地址。
以文件创建过程为例,FSCreateFileW的内核部分会校验用户态传入参数,构建OpenPacket结构,循环解析文件路径格式并搜索对象管理器维护的拉链式对象Hash表。具体可以采用路径分隔符“\”拆解输入的文件路径,拆解出的路径部分搜索对象管理器维护的拉链式对象Hash表,查找出对应的ParseProcedure。在循环解析完毕时,便认为找到了对象的Parse Routine例程。Parse Routine内部会构建并填充IRP请求数据包并发送至文件系统下层设备的原始地址处,完成文件穿透的创建过程。此时,文件系统调用栈上的第三方过滤驱动(其他安全软件、驱动级恶意程序)被旁路。
在具体实现中,对于新创建出的对象还可以通过ObInsertObject例程插入至对象管理器的Hash结构中,并得到返回的文件句柄。并且,内核还可以同步调用返回用户态句柄信息以及调用结果。如果调用失败,用户态接口可以设置相应的错误码,这样,调用者线程可以通过GetLastError例程得到详细的错误信息。
以下结合图11所示的应用本发明实施例实现的文件操作执行流示意图更进一步说明本发明的工作原理。
调用者111调用本实施例中实现的驱动接口层112,而非调用现有技术中的内核接口层113;
驱动接口层112调用模拟内核执行层校验调用者输入参数114;
调用者输入参数验证通过后,执行搜索对象管理器循环解析文件路径115得到对象解析例程116,以及,构建IRP发送至文件系统下层设备原始地址117的操作;
在此过程中,现有技术中的文件对象解析例程118、顶层过滤驱动a119、底层过滤驱动N120被穿透。
IRP被发送至文件系统下层设备121后,由文件系统下层设备121执行IRP所请求的操作。
需要说明的是,对于方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本发明所必须的。
参考图12,示出了本发明的一种文件操作的执行装置实施例的结构框图,具体可以包括以下模块:
内核态请求获取模块121,用于获取文件操作请求,所述请求中包括调用者输入参数,所述输入参数中包括文件路径;
内核态参数校验模块122,用于依据所述文件操作请求校验调用者输入参数,若校验通过,则调用内核对象解析模块123;
内核态对象解析模块123,用于依据所述文件路径在对象管理器中查找对应的文件对象解析例程;若查找到对应的文件对象解析例程,则调用内核IRP生成发送模块124;
内核态IRP生成发送模块124,用于依据所述文件对象解析例程生成I/O请求包,并发送至预置的文件系统下层设备的原始地址。
在本发明的一种优选实施例中,所述内核对象解析模块123具体可以包括以下子模块;
文件路径拆解子模块,用于按照路径分隔符逐级拆解出文件路径中的路径段;
对象管理器搜索子模块,用于采用当前拆解出的路径段在对象管理器中搜索,查找对应的文件对象例程。
在具体实现中,所述调用者输入参数具有用户态地址;所述的装置还可以包括:
内核地址重构模块,用于重构所述用户态地址至内核态内存空间。
在本发明的一种优选实施例中,还可以包括以下模块:
用户态请求发送模块,用于由调用者发起文件操作请求,调用对应的文件操作接口例程;其中,所述请求中包括调用者输入参数,所述输入参数中包括文件路径;
用户态控制码发送模块,用于依据系统平台的类型构建内核态结构参数,依据所述内核态结构参数生成相应的文件操作控制码,并发送至操作系统内核态。
在具体实现中,还可以包括以下模块:
宽字符例程调用模块,用于将调用者输入参数中的ANSI相关参数转换为UNICODE类型,并调用对应的文件操作接口宽字符例程。
作为本发明实施例一种具体应用的示例,所述文件操作接口例程可以包括文件创建例程FSCreateFile,所述的装置还可以包括以下模块:
句柄获取模块,用于插入新创建的文件对象至对象管理器,并得到返回的文件句柄。
由于所述装置实施例基本相应于前述图1、图2和图3所示的方法实施例,故本实施例的描述中未详尽之处,可以参见前述实施例中的相关说明,在此就不赘述了。
本发明可用于众多通用或专用的计算系统环境或配置中。例如:个人计算机、服务器计算机、手持设备或便携式设备、平板型设备、多处理器系统、基于微处理器的系统、置顶盒、可编程的消费电子设备、网络PC、小型计算机、大型计算机、包括以上任何系统或设备的分布式计算环境等等。
本发明可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本发明,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
以上对本发明所提供的一种文件操作的执行方法和一种文件操作的执行装置进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。