当前位置: BOLT界面引擎 > 知识库文章 > 如何使用绝对路径加载XAR

如何使用绝对路径加载XAR

作者:李亚星 2013-01-18

 

BOLT界面引擎从342版本起,已经支持以绝对路径加载xar,在这种情况下,加载xar可以以最少的磁盘io和最高效率加载xar

 

使用绝对路径加载xar,这个绝对路径并不是指真正的磁盘文件的物理路径,而是xlfsio挂载到的虚拟路径,所以在使用绝对路径加载xar之前,需要确保该虚拟路径已经正确挂载。简单来说,以绝对路径加载xar,步骤如下:

 

以迅雷7加载ThunderBolt.xar(整体xar)为例,并且需要mount到的绝对路径都是C:\\Program Files\Thunder Network\Thunder\Xar\ThunderBolt,那么:

 

1.   首先需要将真实路径挂载到目的绝对路径

 

挂载使用的apiXLFSIO.dllXLFS_MountDirmount语法如下:

 

XLFS_API(long) XLFS_MountDir(const wchar_t* pDestPath,const wchar_t* pSrcPath,long mountOption,const wchar_t* mountCmd);

其中destPath指定了目标路径,srcpath指定了源文件,mountoptionmountcmd是保留字段,目前尚未使用

 

源文件支持下面三种形式:

a)     普通的整体xar文件

假定源文件的磁盘路径是C:\\Program Files\Thunder Network\Thunder\Xar\ThunderBolt.xar

那么mount语法如下:

XLFS_MountDir(L” C:\\Program Files\\Thunder Network\\Thunder\\Xar\\ThunderBolt”, L”xar@file:// C:\\Program Files\\Thunder Network\\Thunder\\Xar\\ThunderBolt.xar$”, 0, 0);

需要注定mount协议是xar

 

b)    合并到exe/dll文件PE段的整体xar

假定ThunderBolt.xar通过XLUEPack工具,合并到了Thunder.exe.thunderbolt

那么mount语法如下:

XLFS_MountDir(L” C:\\Program Files\\Thunder Network\\Thunder\\Xar\\ThunderBolt”, L”xar@section:// C:\\Program Files\\Thunder Network\\Thunder\\Program\\Thunder.exe|.thunderbolt$”, 0, 0);

需要指定mount协议是section

 

c)     合并到exe/dll文件资源段的整体xar

假定ThunderBolt.xar通过XLUEPack工具,合并到了Thunder.exe资源段的100类型下的id101的资源

那么mount语法如下:

XLFS_MountDir(L” C:\\Program Files\\Thunder Network\\Thunder\\Xar\\ThunderBolt”, L”xar@resource:// C:\\Program Files\\Thunder Network\\Thunder\\Program\\Thunder.exe|100|101 $”, 0, 0);

需要指定mount协议是resource

 

合并到PE文件的sectionresource两种形式,都需要对win32平台下的PE文件格式有所了解,注意事项请参考在线文档《XLUEPack的使用说明》。

 

上面的调用就是把一个整体xar,分别以file/section/resource协议挂载到了指定的虚拟路径下面,这样加载时候可以直接使用这个绝对路径了

 

2.   直接使用绝对路径加载xar

 

加载xar仍然使用XLUE_LoadXAR接口,内部会根据参数指定的路径是否是绝对路径,来使用对应的加载方式:

XLUE_LoadXAR( C:\\Program Files\\Thunder Network\\Thunder\\Xar\\ThunderBolt)

 

需要注意的是,以绝对路径加载xar时候,会以路径最后一段路径名作为xar的名字,比如上面方式加载的xar名字就是ThunderBolt了,这种情况下,无法再加载重名的xar了,不管是新方式还是老方式。

 

 

使用绝对路径加载xar需要注意下面几点:

l  相比之前的searchpath+xar名字的加载方式,该方式效率更高

l  使用绝对路径加载时候,内部将不再走searchpath的搜索流程,也就是添加的searchpath不再对该方式加载xar有影响。

l  使用绝对路径加载xar,支持的xar形式就不仅仅限于.xar/.zip等磁盘文件形式了,包括PE段模式和资源文件模式也可以支持,有更高的灵活性

l  加载到exedll文件的PE段或者资源段时候,需要对win32平台的PE文件格式有了解

 

 

迅雷公司 版权所有 Copyright 2003-2010 Thunder Inc.All Rights Reserved. 意见反馈:xl7doc@xunlei.com