迅雷云加速开放平台接口说明文档

  • 全局接口
  • 任务接口
  • 接口详细说明
    • XL_Init
      • BOOLXL_Init(void)
    • XL_UnInit
      • BOOL XL_UnInit(void)
    • XL_CreateTask
      • HANDLE XL_CreateTask(DownTaskParam &stParam)
    • XL_DeleteTask
      • BOOL XL_DeleteTask(HANDLE hTask)
    • XL_StartTask
      • BOOL XL_StartTask(HANDLE hTask);
    • XL_StopTask
      • BOOL XL_StopTask(HANDLE hTask)
    • XL_QueryTaskInfoEx
      • BOOL XL_QueryTaskInfoEx(HANDLE hTask, DownTaskInfo & stTaskInfo);
    • XL_DelTempFile
      • BOOL XL_DelTempFile(DownTaskParam &stParam)
    • XL_SetSpeedLimit
      • void XL_SetSpeedLimit(INT32 nKBps)
    • XL_SetProxy
      • BOOL XL_SetProxy(DOWN_PROXY_INFO &stProxyInfo)
    • XL_SetUserAgent
      • void XL_SetUserAgent(const TCHAR *pszUserAgent)
    • XL_ParseThunderPrivateUrl
      • BOOL XL_ParseThunderPrivateUrl(const wchar_t *pszThunderUrl, wchar_t *normalUrlBuffer, INT32 bufferLen)
    • XL_SetUploadSpeedLimit
      • void XL_SetUploadSpeedLimit(INT32 nTcpKBps, INT32 nOtherKBps)
    • XL_CreateTaskByURL
      • HANDLE XL_CreateTaskByURL(const wchar_t *url, const wchar_t *path, const wchar_t *fileName, BOOL IsResume)
    • XL_CreateTaskByThunder
      • LONG XL_CreateTaskByThunder(wchar_t *pszUrl, wchar_t *pszFileName, wchar_t *pszReferUrl, wchar_t *pszCharSet, wchar_t *pszCookie)
    • XL_ForceStopTask
      • BOOL XL_ForceStopTask(HANDLE hTask)
      • 注意事项
  • 接口逻辑说明
    • 任务异步操作
    • 子进程异常退出
  • 其它
    • SDK文件说明

全局接口

接口名称 功能说明
XL_Init 初始化SDK,并使其为处理后续操作做好准备。
XL_UnInit 反初始化SDK,释放模块运行期间申请的资源。
XL_DelTempFile 删除临时文件
XL_SetSpeedLimit 设置最大下载速度
XL_SetProxy 设置全局代理
XL_SetUserAgent 设置HTTP请求时客户端信息
XL_ParseThunderPrivateUrl 将迅雷专用链转成实际URL
XL_SetUploadSpeedLimit 限制上传速度
XL_CreateTaskByURL 简单封装了XL_CreateTask接口
XL_CreateTaskByThunder 拉起迅雷7创建下载任务
XL_ForceStopTask 强制暂停任务

任务接口

接口名称 功能说明
XL_CreateTask 创建任务
XL_DeleteTask 销毁任务
XL_StartTask 开始任务
XL_StopTask 停止任务
XL_QueryTaskInfoEx 查询任务信息

接口详细说明

XL_Init

BOOLXL_Init(void)

初始化下载引擎,并使其为处理后续操作做好准备。
返回值:TRUE表示成功,FALSE表示失败。一些特殊情况会导致初始化失败,如:二进制文件缺失。
说明:该接口必须与XL_Unint(void)成对出现。调用该接口的时,xldl.dll会拉起MiniThunderPlatform.exe子进程。

XL_UnInit

BOOL XL_UnInit(void)

反初始化下载引擎,释放模块运行期间申请的资源。
返回值:TRUE表示成功,FALSE表示失败。
说明:调用该接口后,会通知MiniThunderPlatform.exe子进程退出。

XL_CreateTask

HANDLE XL_CreateTask(DownTaskParam &stParam)

创建任务。可以新建任务也可以续传任务,参数中IsResume用于表示任务是否是续传任务。其他信息请参考DownTaskParam的定义。
参数: [in] stParam,创建任务需要的参数。
DownTaskParam参考:

struct DownTaskParam {
int nReserved1;
TCHAR szTaskUrl[2084]; // 任务URL,支持http,https,ftp,ftps格式
TCHAR szRefUrl[2084]; // 可空,HTTP下载所在的网页URL
TCHAR szCookies[4096]; // 可空,浏览器cookie
TCHAR szFilename[MAX_PATH]; // 下载保存文件名.
TCHAR szReserved[MAX_PATH];
TCHAR szSavePath[MAX_PATH]; // 文件保存目录
HWND hReserved;
BOOL bReserved1;
TCHAR szReserved1[64];
TCHAR szReserved2[64];
BOOL IsOnlyOriginal; //是否只从原始地址下载
UINT nReserved2;
BOOL bReserved2;
BOOL IsResume; // 是否用续传
DWORD reserved[2048];
}

返回值:返回任务的句柄。
说明:任务创建后,是不会马上就下载的,需要调用XL_StartTask。异步执行。

XL_DeleteTask

BOOL XL_DeleteTask(HANDLE hTask)

销毁任务,释放任务在运行期间申请的资源。
参数: [in]hTask,任务句柄
返回值:TRUE表示成功,FALSE表示失败。当任务不存在时,调用会失败。
说明:在任务暂停、成功以及删除任务的时候都需要调用该接口,保证资源尽快的释放。 异步执行,如果任务出于pending状态则不能调用该接口。

XL_StartTask

BOOL XL_StartTask(HANDLE hTask);

开始下载。任务创建成功后,不会马上开始下载,需调用此接口才会开始下载。
参数: [in]hTask,任务句柄
返回值:TRUE表示成功,FALSE表示失败。当任务不存在时,调用会失败。
说明:异步执行,如果任务出于pending状态则不能调用该接口。

XL_StopTask

BOOL XL_StopTask(HANDLE hTask)

停止下载
参数: [in]hTask,任务句柄
返回值:TRUE表示成功,FALSE表示失败。当任务不存在时,调用会失败。
说明:获取任务信息是使用轮询方式的,最终任务下载了多少数据在任务停止下载后查询才是正确的。调用后任务不会立即停止,需轮询到任务状态为PAUSE之后,才能获取到。

XL_QueryTaskInfoEx

BOOL XL_QueryTaskInfoEx(HANDLE hTask, DownTaskInfo & stTaskInfo);

查询任务当前信息。
参数: [in]hTask,任务句柄 [out] stTaskInfo, 任务信息。
DownTaskInfo参考:

struct DownTaskInfo {
DOWN_TASK_STATUS stat; //任务状态
TASK_ERROR_TYPE fail_code; //错误码
TCHAR szFilename[MAX_PATH]; //文件名
TCHAR szReserved[MAX_PATH];
__int64 nTotalSize; // 该任务总大小(字节)
__int64 nTotalDownload; // 下载有效字节数(可能存在回退的情况)
float fPercent; // 下载进度
int nTotalTime; // 不提供该值
int nSrcTotal; // 总资源数
int nSrcUsing; // 可用资源数
int nReserved1;
int nReserved2;
int nReserved3;
int nReserved;
__int64 nTotalUpload; // 现不提供该值
__int64 nDonationP2P; // p2p资源贡献的数据长度
__int64 nReserved4;
__int64 nDonationOrgin; // 原始资源贡献的数据长度
__int64 nDonationP2S; // 镜像资源贡献的数据长度
__int64 nReserved5;
__int64 nReserved6;
int nSpeed; // 速度(字节/秒)
int nSpeedP2S; // 加速服务器资源的下载速度
int nSpeedP2P; // peer下载速度
bool IsOriginUsable; // 原始资源是否可用
float fReserved;
int bReserved;
DWORD reserved[64];
}; enum DOWN_TASK_STATUS {
NOITEM = 0, TSC_ERROR, TSC_PAUSE, TSC_DOWNLOAD, TSC_COMPLETE, TSC_STARTPENDING, TSC_STOPPENDING
};enum TASK_ERROR_TYPE { TASK_ERROR_UNKNOWN = 0x00, // 未知错误 TASK_ERROR_DISK_CREATE = 0x01, // 创建文件失败 TASK_ERROR_DISK_WRITE = 0x02, // 写文件失败 TASK_ERROR_DISK_READ = 0x03, // 读文件失败 TASK_ERROR_DISK_RENAME = 0x04, // 重命名失败 TASK_ERROR_DISK_PIECEHASH = 0x05, // 文件片校验失败 TASK_ERROR_DISK_FILEHASH = 0x06, // 文件全文校验失败 TASK_ERROR_DISK_DELETE = 0x07, // 删除文件失败失败 TASK_ERROR_DOWN_INVALID = 0x10, // 无效的DOWN地址 TASK_ERROR_PROXY_AUTH_TYPE_UNKOWN = 0x20, // 代理类型未知 TASK_ERROR_PROXY_AUTH_TYPE_FAILED = 0x21, // 代理认证失败 TASK_ERROR_HTTPMGR_NOT_IP = 0x30, // http下载中无ip可用 TASK_ERROR_TIMEOUT = 0x40, // 任务超时 TASK_ERROR_CANCEL = 0x41, // 任务取消 TASK_ERROR_TP_CRASHED= 0x42, // MINITP崩溃 TASK_ERROR_ID_INVALID = 0x43, // TaskId 非法
};

返回值TRUE表示成功,FALSE表示失败。
说明IsOriginUsable,原始资源是否可用,是一个布尔型的参数,但是原始连接原始资源是一个耗时的操作,意味着中间有段时间原始资源是否有效是未知的。这个参数的初始态是false,所以就存在原始资源是有效,但在任务刚开始时这个参数是false的问题。上层在使用该值的时候需要根据业务逻辑再做处理。

XL_DelTempFile

BOOL XL_DelTempFile(DownTaskParam &stParam)

删除任务的临时文件。下载引擎会创建 .td 、 .td.cfg后缀的文件用来保存已下载的数据。
参数: [in]stParam,任务参数,参考创建任务中的参数。但是这里只有文件保存的目录和文件名是必须。
返回值:TRUE表示成功,FALSE表示失败。
说明:文件名是最后真正保存到磁盘的文件名,不带临时文件后缀名。最终保存的文件名会和创建任务不一样,所以这个文件名要以查询任务信息返回的文件名为准。在保存路径下已经存在相同文件名的文件时,最终保存的文件名就会自动改变文件名:filename.zip → filename(1).zip。 异步执行。

XL_SetSpeedLimit

void XL_SetSpeedLimit(INT32 nKBps)

设置最大下载速度。
参数: [in]nKBps, 速度上限值
说明:异步执行

XL_SetProxy

BOOL XL_SetProxy(DOWN_PROXY_INFO &stProxyInfo)

设置下载代理,全局任务代理信息。
参数: [in]stProxyIfno 代理信息
DOWN_PROXY_INFO参考:

enum DOWN_PROXY_TYPE {
PROXY_TYPE_IE = 0,
PROXY_TYPE_HTTP = 1,
PROXY_TYPE_RESERVED= 2, //不支持该代理
PROXY_TYPE_SOCK5 = 3,
PROXY_TYPE_UNKOWN = 255,
};
enum DOWN_PROXY_AUTH_TYPE { PROXY_AUTH_NONE =0, PROXY_AUTH_AUTO, PROXY_AUTH_BASE64, PROXY_AUTH_NTLM, PROXY_AUTH_DEGEST, PROXY_AUTH_UNKOWN, }; struct DOWN_PROXY_INFO { BOOL bIEProxy; BOOL bProxy; DOWN_PROXY_TYPE stPType; DOWN_PROXY_AUTH_TYPE stResverd; TCHAR szHost[2048]; INT32 nPort; TCHAR szUser[50]; TCHAR szPwd[50]; TCHAR szDomain[2048]; };

返回值:TRUE表示成功,FALSE表示失败。参数非法返回FALSE

XL_SetUserAgent

void XL_SetUserAgent(const TCHAR *pszUserAgent)

设置向原始资源的Http任务请求的UserAgent。
参数: [in]pszUserAgent,客户端UserAgent字符串
说明:在调用该方法后创建的任务的才会使用新的UserAgent。

XL_ParseThunderPrivateUrl

BOOL XL_ParseThunderPrivateUrl(const wchar_t *pszThunderUrl, wchar_t *normalUrlBuffer, INT32 bufferLen)

迅雷专用链是根据一定逻辑从普通URL转成的。
参数: [in] pszThunderUrl,迅雷专用链URL [out] normalUrlBuffer,存储转化后的普通URL的缓冲区 [out] bufferLen,normalUrlBuffer的缓冲区大小,单位字符数
返回值:TRUE表示成功,FALSE表示失败
说明:此函数功能独立,和其他函数没有依赖关系,可随时单独使用

XL_SetUploadSpeedLimit

void XL_SetUploadSpeedLimit(INT32 nTcpKBps, INT32 nOtherKBps)

可根据实际情况设置外网和内网的上传速度。
参数: [in] nTcpKBps, 内网上传速度,单位为KB/s [in] nOtherKBps, 外网上传速度,单位为KB/s
返回值:无

XL_CreateTaskByURL

HANDLE XL_CreateTaskByURL(const wchar_t *url, const wchar_t *path, const wchar_t *fileName, BOOL IsResume)

通过任务URL、路径、文件名创建任务。
参数: [in] url, 任务URL,不能为空,包括空字符字符长度不能超过2084 [in] path, 任务路径,不能为空,包括空字符字符长度不能超过260 [in] fileName, 任务文件名,不能为空,包括空字符字符长度不能超过260 [in] IsResume, 是否是续传任务
返回值:返回任务的句柄

XL_CreateTaskByThunder

LONG XL_CreateTaskByThunder(wchar_t *pszUrl, wchar_t *pszFileName, wchar_t *pszReferUrl, wchar_t *pszCharSet, wchar_t *pszCookie)

通过传递URL和文件名等信息拉起迅雷7的新建面板创建下载任务。
参数: [in] pszUrl,任务URL [in] pszFileName,下载保存的文件名 [in] pszReferUrl,引用页URL [in] pszCharSet,当前网页的字符集 [in] pszCookie,下载数据所需的cookie
返回值:0成功,其他为失败

XL_ForceStopTask

BOOL XL_ForceStopTask(HANDLE hTask)

强制暂停任务
参数: [in] hTask,任务句柄
返回值:TRUE表示成功,FALSE表示失败。当任务不存在时,调用会失败
说明:在开启UAC下载大文件时,调用XL_StopTask可能需要消耗比较长的时间。这种情况下如果需要快速暂停任务,可以调用XL_ForceStopTask,不过有可能导致已经下载的还没写到磁盘的数据丢失。

注意事项

1.全局接口是线程不安全的,且XL_Init外的其他接口必须在该函数成功返回后才能调用;
2.如果任务处于TSC_STARTPENDING或TSC_STOPPENDING,关于任务的操作只能调用查询任务信息的接口。

接口逻辑说明

任务异步操作

任务的操作是异步执行的。调用接口有两个操作: 1.操作上层xldl.dll中的虚任务 2.在命令队列对push一条相关操作的命令

接口层可以操作的任务都是虚任务,真实任务是在MiniThunderPlatfom进程创建的。任务创建的流程: 1.Xldl创建虚任务; 2.将操作与参数push到命令队列; 3.命令处理线程负责执行队列中的命令,与MiniThunderPlatfom同步通信; 4.MiniThunderPlatfom创建任务成功后,虚任务就可以和实任务映射。 之后所有对virtual task 的操作都将映射到真正的task,并在MiniTP执行真正的操作。 任务信息查询,任务信息的更新需要调用者驱动,需要调用者每隔1s调用一次该接口。任务信息查询和更新的流程: 1.调用接口查询信息时,先从虚任务查询任务信息,第一次调用的时候肯定没有信息 2.将查询操作与参数push到命令队列; 3.命令处理线程负责执行队列中的命令,与MiniThunderPlatfom同步通信; 4.查询到真实任务信息后,将信息存储到虚任务中; 5.第二次查询就可以直接查询到任务信息,这些信息是上一次查询到的。 这里就会出现这样的情况,第一次查询操作不能获取到任务信息,即任务处于pause/start_pending状态中。更极端的情况,任务下载完成前一次查询没有调用过,在任务完成后再调用该接口会发现任务进度为0。

子进程异常退出

这种情况是不被欢迎的,但又不可避免。子进程异常退出后MiniThunderPlatfom创建的任务会销毁。这样,虚任务除了与真实任务的映射关系,其实并无意义。这时候,查询任务信息就会返回任务出错,错误码为TASK_ERROR_ID_INVALID(任务id非法)。这时需要重新创建续传任务,接口为XL_CreateTask,结构体中其他参数与创建普通任务相同,参数IsResume设为TRUE。

其它

SDK文件说明

Sdk总共有10个二进制文件。二进制文件之间的依赖关系如下图所示:

各个文件功能介绍:

文件名 功能
xldl.dll 导出MiniTP接口
MiniThunderPlatform.exe 独立进程
download_engine.dll MiniTP核心库
zlib1.dll 压缩通信数据
dl_peer_id.dll 获取迅雷客户端标识
XLBugReport.exe 负责上报捕获到的崩溃
XLBugHandler.dll 负责拉起XLBugReport .exe
minizip.dll、mini_unzip.dll 用于压缩文件崩溃堆栈
atl71.dll 微软提供的程序库

迅雷云加速开放平台接口说明文档相关推荐

  1. 迅雷云加速开放平台接口说明

    全局接口 接口名称 功能说明 XL_Init 初始化SDK,并使其为处理后续操作做好准备. XL_UnInit 反初始化SDK,释放模块运行期间申请的资源. XL_DelTempFile 删除临时文件 ...

  2. 迅雷云加速开放平台学习笔记——说明

    最近在研究软件的自动更新功能,手动更新太麻烦而且对电脑小白来说容易出错.之前对自动更新没什么概念,不知道如何实现.简单百度之后,原来"更新"功能是一个单独的模块,在需要更新的时候启 ...

  3. 迅雷云加速开放平台c#demo

    迅雷云加速开放平台c#demo.很多人很遇到下载文件的问题.这个例子是调用迅雷云加速开放平台的dll,进行下载,速度很快,下载过程中可以获取到很全的下载信息,比如下载速度,进度,完成状态等. 例子中带 ...

  4. 迅雷云加速开放平台学习笔记——实现

    从示例代码的流程来看,示例文件的下载经历了以下几个步骤:初始化下载引擎(XL_Init(void))-->初始化下载参数(DownTaskParam)-->新建任务(XL_CreateTa ...

  5. “淘宝” 开放平台接口设计思路

    最近对接的开放平台有点多,像淘宝.京东.快手.抖音等电商平台的开放平台基本对接了个遍,什么是CRUD BODY也许就是这样的吧!!! 虽然对接各大开放平台没啥技术含量,但咱也得学点东西不是,不能白对接 ...

  6. 云极知客开放平台接口调用方法(C#)

    云极知客为企业提供基于SAAS的智能问答服务.支持企业个性化知识库的快速导入,借助语义模型的理解和分析,使企业客户立即就拥有本行业的24小时客服小专家.其SAAS模式实现零成本投入下的实时客服数据的可 ...

  7. 技术分享|明源云天际集成开放平台接口中心基于IdentityServer4的鉴权机制

    源宝导读:企业数字化生态建设中为解决集成多样性和资源统一管理的痛点引入企业级网关,网关作为资源访问的大门,身份认证鉴权是其业务的重中之重,本文将介绍企业级网关-天际集成开放平台是如何通过Identit ...

  8. 迅雷 API 接口说明文档 -调用迅雷自动下载

    我们可以利用迅雷提供的开放API接口来自动下载文件.详细的接口说明大家可以看下面的. 先要说明一下的就是 迅雷的API接口是用 .com 来调用的 首先就是脚本了,各种语言写法不同,我这里提供用vbs ...

  9. Caysn打印机IOS平台打印开发包、接口说明文档及示例程序_20170717

    打印机开发包,接口说明文档,打印示例程序下载地址:Caysn打印机IOS开发包.接口说明文档.打印示例程序_20170717 Framework版本要求:IOS8  Framework架构:armv7 ...

最新文章

  1. 怎么打公式_迫真公式部~注入之里技
  2. Orac and Game of Life CodeForces - 1350E(思维+BFS)
  3. Dede 删除文档同时文章中的图片的方法
  4. Tensorflow 卷积神经网络 (四)cifar100实战
  5. Windows核心技术--com组件实用入门教程
  6. 应用计算机测线性电阻伏安特性曲线,测绘线性电阻和非线性电阻的伏安特性曲线.pdf...
  7. c语言中各个符号的意义及作用是什么,C语言各类符号意义以及用法是什么?
  8. MongoDB 文档操作之插入、查询
  9. 免费PDF拆分与合并工具
  10. OpenTCS打造移动机器人交通管制系统(十)
  11. 励志:滴滴打车CTO张博:生死战役,技术和时间赛跑
  12. 牛客网《剑指offer》专栏刷题练习|锻炼递归思想|练习栈的使用
  13. 解决nginx启动时域名解析失败而导致服务启动失败的问题【proxy_pass后面的域名进行DNS解析,解析失败则无法启动nginx】
  14. 递归(五):递归图形
  15. TestStand-序列步骤属性
  16. XP中超级终端使用方法
  17. android adb 卸载内置系统apk方法
  18. js给input赋值后,触发相应函数
  19. 【JAVA】字符串及StringBuffe和StringBuilder
  20. nodemailer使用记录

热门文章

  1. react-native自定义头部
  2. 初等模型---双层玻璃窗的功效
  3. Halcon 第七章『图像的几何变换』◆第2节:投影变换
  4. 学习记录(一)制作python版本的CIFAR10数据集
  5. 64位Ubuntu上装QQ
  6. linux驱动绑定设备 命令 bind,linux gadget 驱动
  7. C++智能指针3——弱指针weak_ptr详解
  8. 华为发布全栈数据中心、新一代智慧园区两大方案,加速行业数字化与绿色发展双转型
  9. scrapy同时爬取51job和智联招聘
  10. 英雄联盟无限乱斗连接不上服务器,LOL无限火力不排队匹配方法 LOL无限火力不排队秒进小技巧...