《用户应用程序的控制方法》由会员分享,可在线阅读,更多相关《用户应用程序的控制方法(6页珍藏版)》请在金锄头文库上搜索。
1、用户应用程序的控制方法专利名称:用户应用程序的控制方法技术领域:本发明涉及一种在用户终端机上执行的用户应用程序的控制方法,更详细地讲,涉及一种能在用户应用程序执行过程中,一边从规定的服务器下载所需要的数据,一边执行用户应用程序的用户应用程序控制方法。背景技术:现有技术的程序包(package)游戏(离线游戏)是将游戏程序和该游戏所需要的全部数据存储在CD(光盘)等存储介质中,然后发布给用户的。但是,包含这样的程序包游戏的程序包形式的软件产品被非法复制,被没有合法权限的用户使用的情况很多。因此,如果使这样的程序包形式的软件产品在线化,不仅可以防止上述非法复制,还可以利用如自动更新这样的在线软件的
2、各种优点。基于这样的原因,需要一种将程序包形式的软件产品容易地转换为在线软件的方法。此外,即使是在线软件的情况下,在将进行该在线游戏所需要的全部文件下载到用户计算机中之前,也不能进行上述在线游戏。而且,在线游戏随着其发展,将变得更加复杂,用户初期必须下载的数据量将变得更多。最近,为了进行在线游戏,在初期必须下载的数据量超过200Mbyte的情况频繁发生。象这样,由于初期必须下载的数据量过大,所以存在在线游戏的最初用户不能容易地参加在线游戏的缺点。因此,需要一种即使为了进行整个在线游戏所需要的数据量大,在仅下载其中一少部分之后,就能进行在线游戏的方法。本发明就是为了解决上述问题而提出的,其目的在
3、于能容易地使现有的程序包形式的软件产品成为在线软件,获得在线数据流(on-linestreaming)的效果,并且通过网络保持与服务器的连接,从而有效地防止来自外部的盗用(hacking)、解密(cracking)以及非法的软件使用。此外,本发明的目的在于,通过使程序包软件容易地在线化,可以定期地监视上述程序包软件是否被非法复制,如果是非法复制产品,则使上述程序包软件停止工作,从而防止非法复制。此外,本发明的目的还在于,通过使程序包软件在线化,从而能按照使用时间来对程序包软件进行计费。此外,本发明的目的还在于,以文件模块为单位而不是以整个文件为单位来下载在线软件,使在初期必须下载的数据量最小化
4、,从而用户在初期就能容易地享受游戏。此外,本发明的目的在于,调查在线游戏所要求的数据模式(pattern),并据此使被下载的数据最优化,在用户应用程序请求读出数据的情况下,利用上述被调查的数据模式,接收通过后台P2P预先下载的必要数据,从而可以使用户为了下载数据而等待的时间最小化,并且能使服务器的带宽使用最小化。发明内容为了实现上述目的,根据本发明的一个实施例,提供一种用户应用程序控制方法,用于控制由客户计算机执行的用户应用程序,其特征在于,包括以下步骤接收来自于用户应用程序的、针对文件的文件读出请求的步骤;判断上述文件是否保存在上述客户计算机中的步骤;如果上述文件保存在上述客户计算机中,则向
5、上述用户应用程序传输上述文件的数据步骤;以及如果上述文件没有保存在上述客户计算机中,则从保存有上述文件的、通过网络而与上述客户计算机连接的规定服务器接收上述文件的数据中的一部分数据,并保存在上述客户计算机中,然后向上述用户应用程序传输上述接收的数据。图1是表示本发明的客户计算机和文件服务器的网络连接的图。图2是表示本发明的包含在客户计算机中的用户应用程序、在线数据流文件库和网络接口的关系的方框图。图3是表示对来自于本发明的在客户计算机中执行的用户应用程序的文件读出请求进行处理的顺序的流程图。图4是表示对来自于本发明的在客户计算机中执行的用户应用程序的文件写入请求进行处理的顺序的流程图。图5是表
6、示在对本发明的用户应用程序访问的文件内的数据模块进行构造,从而构成优先文件的情况下,数据模块和优先文件的关系的图。图6是表示由本发明的一个实施例构成的索引表的图。具体实施例方式以下参照附图,对本发明的实施方式进行详细说明。图1是表示本发明的客户计算机和文件服务器的网络连接的图。用户为了进行在线游戏,在自己的客户计算机102、103上,通过互联网与规定的在线游戏服务器104连接。在现有的程序包形式的游戏软件的情况下,利用本发明可以简单地实现在线化,在游戏进行中与游戏服务器104连接,从而进行游戏。即,在现有的程序包游戏的情况下,用户不必购入CD等,仅与游戏服务器104连接,就能利用本发明,在仅下
7、载了游戏的所有文件或数据之后,直接开始游戏。图2是表示利用本发明的包含在客户计算机中的用户应用程序、在线数据流文件库和网络接口的关系的方框图。用户应用程序201是现有的程序包软件或利用本发明对现有的程序包软件的一部分进行修改后的程序。此外,用户应用程序201也可以是现有的在线软件。本发明用于使现有的程序包软件在线化,从而获得各种有用的效果,但本发明的一些思想也可以容易地应用于现有的在线软件,从而获得有用的效果。在线数据流文件库(onlinestreamingfilelibrary)202对用户应用程序201的文件读出请求和文件写入请求进行钩挂(hooking),从而进行该文件读出请求和文件写入
8、请求,并且具有保持与服务器104的连接、监视非法的软件使用等功能。此外,在线数据流文件库还具有从服务器或在网络上相邻的其他客户计算机下载所需要的数据的功能。在线数据流文件库还可以具有库以外的不同形式。在线数据流文件库202与已有的运行体系标准的文件输入输出API(应用程序接口)进行钩挂。在已有运行体系标准的文件输入输出API的例子,有微软公司的窗口运行体系中的CreateFile()、ReadFile()、WriteFile()等函数。在窗口运行体系中,对于所有的Win32API都有导入段(ImportSection)。导入段是一种跳转矢量表(JumpVectorTable)。例如,在Crea
9、teFile()函数的情况下,在导入段中保存针对上述CreateFile()函数的指针。因此,在可执行文件(在窗口运行体系中,是具有.exe扩展名的文件)中使用CreateFile()函数的情况下,上述可执行文件参照上述导入段,获得CreateFile()函数的指针,运行该指针所指的函数。API钩子函数(APIHooking)将在上述导入段中的各输入输出函数的地址变更为其他函数的地址。例如,在导入段中,如果CreateFile()函数的指针不指向运行体系提供的CreateFile()函数的地址,而是变更为指向其他函数的地址,则在用户应用程序中执行CreateFile()的情况下,不执行运行体系
10、提供的CreateFile()函数,而是执行上述其他函数。为了执行上述API钩子函数,在用户应用程序的主函数(mainfunction)(例如窗口系统中的winmain()函数)的开始和结束追加钩子初始化函数和API钩子结束函数,执行API钩子函数。API钩子初始化函数是由本发明提供的函数,它具有将上述用户应用程序的导入段中的各输入输出API函数的指针变更为本发明的输入输出函数的指针的功能。API钩子结束函数具有将上述被变更的导入段恢复原状的功能。因此,根据本发明,向现有的程序包软件的主函数中追加2个函数,由此执行程序包软件的在线化。根据本发明的其他实施例,可以钩挂主函数的入口指针(entry
11、point)本身。作为该方法的一个例子,有类似于计算机病毒程序将自身的代码附加在可执行文件中的方法。根据本实施例,具有不必修改全部应用程序,就能实现程序包软件的在线化的优点。图3是表示利用本发明,在客户计算机中执行的、处理来自于用户应用程序的文件读出请求的顺序的流程图。首先,利用本发明,修改API钩子函数用的输入输出API函数的跳转矢量表,以执行本发明的输入输出API函数。在步骤301中,从用户应用程序201接收文件读出请求,并钩挂(hooking)该请求。即,执行用户应用程序201中的ReadFile()函数,但上述ReadFile()函数的执行被钩挂,本发明的在线数据流文件输入输出API函
12、数(onlinestreamingFileI/OAPIfunction)被执行。本发明的在线数据流文件输入输出API函数被保存在在线数据流文件库202中。在步骤302中,本发明的在线数据流文件输入输出API函数判定上述用户应用程序201请求的文件是否保存在上述用户应用程序201被保存的客户计算机中。如果上述用户应用程序201请求的文件保存在上述客户计算机中,则在步骤303中读出上述文件的数据,将上述文件的数据传输给用户应用程序201。上述文件的数据可以是文件的全部数据,也可以是包含在上述文件中的数据中的一部分数据。例如,在用户应用程序是规定的游戏程序的情况下,是保存有为了执行上述游戏程序所必需
13、的图形数据的文件,上述游戏程序需要上述图形数据,所以发出读出请求,但如果保存有上述图形数据的文件被保存在客户计算机中,则读出该文件,将其传输给游戏程序。在步骤302中,如果用户应用程序201请求的数据没有被保存在本地客户计算机中,则在步骤304中,在线数据流文件输入输出API函数经由网络接口203而与规定的服务器104连接。上述规定的服务器经由网络而与上述客户计算机连接。上述规定的服务器保存有上述用户应用程序201需要的全部数据。在步骤305中,在线数据流文件输入输出API函数从服务器104接收文件的数据,在步骤306中,将上述接收的数据与本地客户计算机钩挂。具有如下优点,即不仅通过这样的钩挂
14、来重复下载同一数据,而且利用后述的优先文件的概念,预先下载被推定为将要下载的数据。例如,在现在需要的数据是文件1的模块5的情况下,如果根据之前一边执行用户应用程序201一边对其工作进行调查的结果,判断用户应用程序201同时使用模块5和模块6,则预先从服务器104同时下载模块5和模块6,对它们进行钩挂。在步骤307中,在线数据流文件输入输出API函数将从服务器104接收的文件的数据传输给用户应用程序201。这样,用户应用程序201可以继续被执行。例如,虽然执行整个游戏软件所需要的数据文件的全部数据量为200Mbyte,但如果游戏软件为了显示现在的画面所需要的图形数据为3Mbyte,并且该图形文件
15、被保存在本地客户计算机中,则与保存该图形文件的服务器连接,下载上述所需要的图形数据来使用它。因此,根据本发明,用户不必在初期下载大量的数据文件,就能容易地享受在线游戏。此外,在利用本发明使程序包软件在线化的情况下,也可以适时地从服务器仅下载所需要的数据的一部分来进行游戏。即,根据本发明,即使不预先将执行用户应用程序所需要的全部数据保存到本地客户计算机中,也能执行用户应用程序。此外,根据本发明的另一个实施例,接收文件的数据中的一部分数据来进行文件的数据读出和接收,该一部分数据的接收是利用上述文件的区距(offet)和上述一部分数据的大小来进行的。对此将参照图5和图6在后面详细说明。根据本发明的另
16、一个实施例,在一个客户计算机102上执行的用户应用程序201没有发出文件读出请求的期间,识别在网络上相邻的其他客户计算机103中是否保存有执行用户应用程序201所需要的数据,如果在其他客户计算机103中保存有所需要的数据,则接收该数据,将其保存在客户计算机102中。同样,其他的客户计算机103也可以从客户计算机102接收数据。执行该处理的程序可以在用户应用程序201开始的同时在后台开始,或者也可以与用户应用程序201的开始和结束无关,从客户计算机102、103开始执行。根据本发明,在用户应用程序请求数据之前,预先下载所需要的数据,将其保存在本地客户计算机中,所以不仅能高效地执行用户应用程序,还能减轻服务器104的负担。根据本发明的另一个实施例,从用户应用程序201对数据读出请求进行钩挂,如果上述数据被保存在本地客户计算机中,则将该数据传输给用户应用程序201,如果上述数据没有被保存在本地客户计算机中,则判断该数据是否被保存在网络上相邻的其他客户计算机中。如果被保存在其他客户计算机中,则利用P2P来下载该数据。如果没有保存在客户计算机中,则与服务器连接进行下