[发明专利]一种基于Hook技术的文件打包方法及系统有效
申请号: | 201310183949.5 | 申请日: | 2013-05-17 |
公开(公告)号: | CN103294784A | 公开(公告)日: | 2013-09-11 |
发明(设计)人: | 陈飞舟;吴才忠;刘畅 | 申请(专利权)人: | 珠海金山网络游戏科技有限公司;成都西山居互动娱乐科技有限公司 |
主分类号: | G06F17/30 | 分类号: | G06F17/30 |
代理公司: | 广州嘉权专利商标事务所有限公司 44205 | 代理人: | 陈国荣 |
地址: | 519000 广东省珠*** | 国省代码: | 广东;44 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 基于 hook 技术 文件 打包 方法 系统 | ||
技术领域
本发明涉及计算机应用领域,尤其是一种基于Hook技术的文件打包方法及系统。
背景技术
Hook,又叫钩子,是Windows消息处理机制的一个平台。应用程序可以在Hook上面设置子程序以监视指定窗口的某种消息,而且其所监视的窗口可以由其他进程所创建。消息到达后,应用程序会在目标窗口处理函数之前处理Hook。因此,Hook机制允许应用程序截获处理Windows消息或特定事件。
实际上,Hook是一个处理消息的程序段,能通过系统调用而挂入到系统中。Hook程序在系统发出的消息未到达目的窗口前,就先捕获该消息,从而使Hook函数优先得到控制权。这时,Hook函数既可以加工处理或改变该消息,也可以不作任何处理而继续传递该消息,还可以强制结束该消息的传递。
现有软件客户端的资源通常采用打包方式进行存储,从而获得传输更方便、资源更保密以及访问速度更快等优点。然而在文件打包的过程中,传统的打包方式并不会关心包内文件的位置与读取次序之间的关系。这可能会导致原本有访问次序关系的两个文件在包文件内的位置相距比较远,使硬盘磁头在读取包文件时跳跃较大,从而增加了硬盘的寻道时间和降低了包文件的访问速度。
发明内容
为了解决上述技术问题,本发明的目的是:提供一种基于Hook技术且访问速度快的文件打包方法。
本发明的另一目的是:提供一种基于Hook技术且访问速度快的文件打包系统。
本发明解决其技术问题所采用的技术方案是:一种基于Hook技术的文件打包方法,包括:
A、采用Hook技术对包内文件的访问顺序进行采集,从而得到文件访问序列列表;
B、根据得到的文件访问序列列表对待打包的文件进行打包,从而将待打包的文件写入到包文件中。
进一步,所述步骤A,其包括:
A1、清空文件访问序列列表;
A2、通过Hook技术,将包内文件打开函数重定向到文件序列采集函数;
A3、运行程序客户端,触发包内文件的读取逻辑,从而将包内文件的文件名存储到文件访问序列列表中;
A4、所述的文件序列采集函数调用包内文件打开函数并判断是否所有的包内文件均已被读取,若是,则结束采集,从而得到存储有文件名的文件访问序列列表;反之,则重新执行步骤A3。
进一步,所述步骤B,其包括:
B1、将待打包的文件以及相应的文件访问序列列表传给打包工具;
B2、所述的打包工具读取文件访问序列列表中的文件名;
B3、所述的打包工具在待打包的文件中查询,查看是否有文件名与所述读取的文件名相同的文件,若有,则读取该文件的内容,并将读取的内容存储至包文件的末尾,然后执行步骤B4,反之,则直接执行步骤B4;
B4、判断是否文件访问序列列表中的所有文件名均已被读取,若是,则执行步骤B5,反之,则重新执行步骤B2;
B5、将余下的待打包的文件写入包文件的末尾,并生成用于访问包内文件的索引区,然后将生成的索引区存储至包文件的末尾。
进一步,在所述步骤B之后还设有步骤C,所述步骤C,其具体为:
对打包后的包文件进行更新,从而将需要新增的包外文件和需要更新的包内文件存储到包文件中,并重新生成包文件的索引区。
进一步,在所述步骤B之后还设有步骤D,所述步骤D,其具体为,根据得到的文件访问序列列表对待整理的包文件进行整理,从而删除无法访问到的包内文件并对包内文件进行重新排序。
进一步,所述步骤D,其包括:
D1、整理工具加载待整理的包文件和相应的文件访问序列列表;
D2、所述的整理工具读取文件访问序列列表中的文件名;
D3、所述的整理工具在待整理的包文件索引区中查询,查看是否有文件名与所述读取的文件名相同的包内文件,若有,则读取该文件的内容,并将读取的文件内容存储至新包文件的末尾,然后执行步骤D4,反之,则直接执行步骤D4;
D4、判断是否文件访问序列列表中的所有文件名均已被读取,若是,则执行步骤D5,反之,则重新执行步骤D2;
D5、将待整理的包文件中余下的包内文件存储至新包文件的末尾,并生成用于访问包内文件的索引区,然后将生成的索引区存储至新包文件的末尾;
D6、删除待整理的包文件并保留整理后的新包文件。
进一步,所述文件名为一个文件的文件名或用于表示文件类别的通配符。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于珠海金山网络游戏科技有限公司;成都西山居互动娱乐科技有限公司,未经珠海金山网络游戏科技有限公司;成都西山居互动娱乐科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201310183949.5/2.html,转载请声明来源钻瓜专利网。