Initial commit

This commit is contained in:
cryzlasm
2018-09-06 15:28:31 +08:00
commit 6f94451fdd
52 changed files with 718 additions and 0 deletions

2
.gitattributes vendored Normal file
View File

@@ -0,0 +1,2 @@
# Auto detect text files and perform LF normalization
* text=auto

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -0,0 +1,3 @@
[op]
ps=1
pp=1

Binary file not shown.

Binary file not shown.

View File

@@ -0,0 +1,4 @@
[partner]
id = 80000043
ver = 3.2.1.46

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

13
README.MD Normal file
View File

@@ -0,0 +1,13 @@
# 迅雷下载引擎
分别由 小米, 猎豹, 360极速浏览器等软件提取
不承担软件无毒, 均为网络搜集, 自行校验签名
# 编译可用
[MiniThunder] : (https://github.com/intlinfo/MiniThunder)
此代码 编译之后, 扔给需要的动态库, 可直接下载使用, 看资源数, 来决定下载速度, 貌似无限速

Binary file not shown.

View File

@@ -0,0 +1,36 @@
#pragma once
/*
------------------<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>--------------
*/
#include <Windows.h>
BOOL __stdcall XLInitDownloadEngine();
DWORD __stdcall XLURLDownloadToFile(LPCTSTR pszFileName, LPCTSTR pszUrl, LPCTSTR pszRefUrl, LONG & lTaskId);
DWORD __stdcall XLQueryTaskInfo(LONG lTaskId, LONG *plStatus, ULONGLONG *pullFileSize, ULONGLONG *pullRecvSize);
DWORD __stdcall XLPauseTask(LONG lTaskId, LONG & lNewTaskId);
DWORD __stdcall XLContinueTask(LONG lTaskId);
DWORD __stdcall XLContinueTaskFromTdFile(LPCTSTR pszTdFileFullPath, LONG & lTaskId);
VOID __stdcall XLStopTask(LONG lTaskId);
BOOL __stdcall XLUninitDownloadEngine();
DWORD __stdcall XLGetErrorMsg(DWORD dwErrorId, LPTSTR pszBuffer, DWORD & dwSize);
/*
----------------------<2D><><EFBFBD>Ͷ<EFBFBD><CDB6><EFBFBD>-----------------
*/
enum enumTaskStatus{
enumTaskStatus_Connect = 0, // <20>Ѿ<EFBFBD><D1BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
enumTaskStatus_Download = 2, // <20><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD>
enumTaskStatus_Pause = 10, // <20><>ͣ
enumTaskStatus_Success = 11, // <20>ɹ<EFBFBD><C9B9><EFBFBD><EFBFBD><EFBFBD>
enumTaskStatus_Fail = 12, // <20><><EFBFBD><EFBFBD>ʧ<EFBFBD><CAA7>
};

Binary file not shown.

View File

@@ -0,0 +1,82 @@
#pragma once
#define XL_SUCCESS 0
#define XL_ERROR_FAIL 0x10000000
// <20><>δ<EFBFBD><CEB4><EFBFBD>г<EFBFBD>ʼ<EFBFBD><CABC>
#define XL_ERROR_UNINITAILIZE XL_ERROR_FAIL+1
// <20><>֧<EFBFBD>ֵ<EFBFBD>Э<EFBFBD>飬Ŀǰֻ֧<D6BB><D6A7>HTTP
#define XL_ERROR_UNSPORTED_PROTOCOL XL_ERROR_FAIL+2
// <20><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͼ<EFBFBD><CDBC>ʧ<EFBFBD><CAA7>
#define XL_ERROR_INIT_TASK_TRAY_ICON_FAIL XL_ERROR_FAIL+3
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͼ<EFBFBD><CDBC>ʧ<EFBFBD><CAA7>
#define XL_ERROR_ADD_TASK_TRAY_ICON_FAIL XL_ERROR_FAIL+4
// ָ<><D6B8>Ϊ<EFBFBD><CEAA>
#define XL_ERROR_POINTER_IS_NULL XL_ERROR_FAIL+5
// <20>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD>ǿմ<C7BF>
#define XL_ERROR_STRING_IS_EMPTY XL_ERROR_FAIL+6
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>·<EFBFBD><C2B7>û<EFBFBD>а<EFBFBD><D0B0><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD>
#define XL_ERROR_PATH_DONT_INCLUDE_FILENAME XL_ERROR_FAIL+7
// <20><><EFBFBD><EFBFBD>Ŀ¼ʧ<C2BC><CAA7>
#define XL_ERROR_CREATE_DIRECTORY_FAIL XL_ERROR_FAIL+8
// <20>ڴ治<DAB4><E6B2BB>
#define XL_ERROR_MEMORY_ISNT_ENOUGH XL_ERROR_FAIL+9
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϸ<EFBFBD>
#define XL_ERROR_INVALID_ARG XL_ERROR_FAIL+10
// <20><><EFBFBD>񲻴<EFBFBD><F1B2BBB4><EFBFBD>
#define XL_ERROR_TASK_DONT_EXIST XL_ERROR_FAIL+11
// <20>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϸ<EFBFBD>
#define XL_ERROR_FILE_NAME_INVALID XL_ERROR_FAIL+12
// û<><C3BB>ʵ<EFBFBD><CAB5>
#define XL_ERROR_NOTIMPL XL_ERROR_FAIL+13
// <20>Ѿ<EFBFBD><D1BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFB5BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>޷<EFBFBD><DEB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define XL_ERROR_TASKNUM_EXCEED_MAXNUM XL_ERROR_FAIL+14
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>δ֪
#define XL_ERROR_INVALID_TASK_TYPE XL_ERROR_FAIL+15
// <20>ļ<EFBFBD><C4BC>Ѿ<EFBFBD><D1BE><EFBFBD><EFBFBD><EFBFBD>
#define XL_ERROR_FILE_ALREADY_EXIST XL_ERROR_FAIL+16
// <20>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define XL_ERROR_FILE_DONT_EXIST XL_ERROR_FAIL+17
// <20><>ȡcfg<66>ļ<EFBFBD>ʧ<EFBFBD><CAA7>
#define XL_ERROR_READ_CFG_FILE_FAIL XL_ERROR_FAIL+18
// д<><D0B4>cfg<66>ļ<EFBFBD>ʧ<EFBFBD><CAA7>
#define XL_ERROR_WRITE_CFG_FILE_FAIL XL_ERROR_FAIL+19
// <20>޷<EFBFBD><DEB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>񣬿<EFBFBD><F1A3ACBF><EFBFBD><EFBFBD>Dz<EFBFBD>֧<EFBFBD>ֶϵ<D6B6><CFB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҳ<EFBFBD>п<EFBFBD><D0BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ѿ<EFBFBD>ʧ<EFBFBD><CAA7>
// ͨ<><CDA8><EFBFBD><EFBFBD>ѯ<EFBFBD><D1AF><EFBFBD><EFBFBD>״̬<D7B4><CCAC>ȷ<EFBFBD><C8B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ԭ<EFBFBD><D4AD><EFBFBD><EFBFBD>
#define XL_ERROR_CANNOT_CONTINUE_TASK XL_ERROR_FAIL+20
// <20>޷<EFBFBD><DEB7><EFBFBD>ͣ<EFBFBD><CDA3><EFBFBD>񣬿<EFBFBD><F1A3ACBF><EFBFBD><EFBFBD>Dz<EFBFBD>֧<EFBFBD>ֶϵ<D6B6><CFB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҳ<EFBFBD>п<EFBFBD><D0BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ѿ<EFBFBD>ʧ<EFBFBD><CAA7>
// ͨ<><CDA8><EFBFBD><EFBFBD>ѯ<EFBFBD><D1AF><EFBFBD><EFBFBD>״̬<D7B4><CCAC>ȷ<EFBFBD><C8B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ԭ<EFBFBD><D4AD><EFBFBD><EFBFBD>
#define XL_ERROR_CANNOT_PAUSE_TASK XL_ERROR_FAIL+21
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̫С
#define XL_ERROR_BUFFER_TOO_SMALL XL_ERROR_FAIL+22
// <20><><EFBFBD><EFBFBD>XLInitDownloadEngine<6E><65><EFBFBD>̣߳<DFB3><CCA3>ڵ<EFBFBD><DAB5><EFBFBD>XLUninitDownloadEngine֮ǰ<D6AE>Ѿ<EFBFBD><D1BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// <20><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̣߳<DFB3><CCA3>ڵ<EFBFBD><DAB5><EFBFBD>XLUninitDownloadEngine֮ǰ<D6AE><C7B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EBB1A3>ִ<EFBFBD><D6B4>״̬<D7B4><CCAC>
#define XL_ERROR_INIT_THREAD_EXIT_TOO_EARLY XL_ERROR_FAIL+23
// TP<54><50><EFBFBD><EFBFBD>
#define XL_ERROR_TP_CRASH XL_ERROR_FAIL+24
// <20><><EFBFBD>񲻺Ϸ<F1B2BBBA><CFB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>XLContinueTaskFromTdFile<6C><65><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڲ<EFBFBD><DAB2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>л<EFBFBD>ʧ<EFBFBD><CAA7>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define XL_ERROR_TASK_INVALID XL_ERROR_FAIL+25

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -0,0 +1,2 @@
[partner]
id=80000054

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -0,0 +1,383 @@
#ifndef __GTC_THUNDERWRAPPER__
#define __GTC_THUNDERWRAPPER__
#pragma once
#include "AC/sysupport.h"
namespace gtc {
//////////////////////////////////////////////////////////////////////////////////////////
// 2016-3-4 kp007 Ѹ<><D1B8>ͷ<EFBFBD>ļ<EFBFBD>
#pragma pack(push, 1)
struct DownTaskParam
{
DownTaskParam()
{
memset(this, 0, sizeof(DownTaskParam));
nReserved1 = 5;
bReserved = FALSE;
DisableAutoRename = FALSE;
IsOnlyOriginal = FALSE;
IsResume = TRUE;
}
int nReserved;
wchar_t szTaskUrl[2084]; // <20><><EFBFBD><EFBFBD>URL
wchar_t szRefUrl[2084]; // <20><><EFBFBD><EFBFBD>ҳ
wchar_t szCookies[4096]; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>cookie
wchar_t szFilename[MAX_PATH]; // <20><><EFBFBD>ر<EFBFBD><D8B1><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD>.
wchar_t szReserved0[MAX_PATH];
wchar_t szSavePath[MAX_PATH]; // <20>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD>Ŀ¼
HWND hReserved;
BOOL bReserved;
wchar_t szReserved1[64];
wchar_t szReserved2[64];
BOOL IsOnlyOriginal; // <20>Ƿ<EFBFBD>ֻ<EFBFBD><D6BB>ԭʼ<D4AD><CABC>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD>
UINT nReserved1;
BOOL DisableAutoRename; // <20><>ֹ<EFBFBD><D6B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
BOOL IsResume; // <20>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
DWORD reserved[2048];
};
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, // δ֪<CEB4><D6AA><EFBFBD><EFBFBD>
TASK_ERROR_DISK_CREATE = 0x01, // <20><><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>ʧ<EFBFBD><CAA7>
TASK_ERROR_DISK_WRITE = 0x02, // д<>ļ<EFBFBD>ʧ<EFBFBD><CAA7>
TASK_ERROR_DISK_READ = 0x03, // <20><><EFBFBD>ļ<EFBFBD>ʧ<EFBFBD><CAA7>
TASK_ERROR_DISK_RENAME = 0x04, // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD><CAA7>
TASK_ERROR_DISK_PIECEHASH = 0x05, // <20>ļ<EFBFBD>ƬУ<C6AC><D0A3>ʧ<EFBFBD><CAA7>
TASK_ERROR_DISK_FILEHASH = 0x06, // <20>ļ<EFBFBD>ȫ<EFBFBD><C8AB>У<EFBFBD><D0A3>ʧ<EFBFBD><CAA7>
TASK_ERROR_DISK_DELETE = 0x07, // ɾ<><C9BE><EFBFBD>ļ<EFBFBD>ʧ<EFBFBD><CAA7>ʧ<EFBFBD><CAA7>
TASK_ERROR_DOWN_INVALID = 0x10, // <20><>Ч<EFBFBD><D0A7>DOWN<57><4E>ַ
TASK_ERROR_PROXY_AUTH_TYPE_UNKOWN = 0x20, // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>δ֪
TASK_ERROR_PROXY_AUTH_TYPE_FAILED = 0x21, // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֤ʧ<D6A4><CAA7>
TASK_ERROR_HTTPMGR_NOT_IP = 0x30, // http<74><70><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ip<69><70><EFBFBD><EFBFBD>
TASK_ERROR_TIMEOUT = 0x40, // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ
TASK_ERROR_CANCEL = 0x41, // <20><><EFBFBD><EFBFBD>ȡ<EFBFBD><C8A1>
TASK_ERROR_TP_CRASHED= 0x42, // MINITP<54><50><EFBFBD><EFBFBD>
TASK_ERROR_ID_INVALID = 0x43, // TaskId <20>Ƿ<EFBFBD>
};
struct DownTaskInfo
{
DownTaskInfo()
{
memset(this, 0, sizeof(DownTaskInfo));
stat = TSC_PAUSE;
fail_code = TASK_ERROR_UNKNOWN;
fPercent = 0;
bIsOriginUsable = false;
fHashPercent = 0;
}
DOWN_TASK_STATUS stat;
TASK_ERROR_TYPE fail_code;
wchar_t szFilename[MAX_PATH];
wchar_t szReserved0[MAX_PATH];
__int64 nTotalSize; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܴ<EFBFBD>С(<28>ֽ<EFBFBD>)
__int64 nTotalDownload; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ч<EFBFBD>ֽ<EFBFBD><D6BD><EFBFBD>(<28><><EFBFBD>ܴ<EFBFBD><DCB4>ڻ<EFBFBD><DABB>˵<EFBFBD><CBB5><EFBFBD><EFBFBD><EFBFBD>)
float fPercent; // <20><><EFBFBD>ؽ<EFBFBD><D8BD><EFBFBD>
int nReserved0;
int nSrcTotal; // <20><><EFBFBD><EFBFBD>Դ<EFBFBD><D4B4>
int nSrcUsing; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դ<EFBFBD><D4B4>
int nReserved1;
int nReserved2;
int nReserved3;
int nReserved4;
__int64 nReserved5;
__int64 nDonationP2P; // p2p<32><70><EFBFBD><EFBFBD><EFBFBD>ֽ<EFBFBD><D6BD><EFBFBD>
__int64 nReserved6;
__int64 nDonationOrgin; // ԭʼ<D4AD><CABC>Դ<EFBFBD><D4B4><EFBFBD><EFBFBD><EFBFBD>ֽ<EFBFBD><D6BD><EFBFBD>
__int64 nDonationP2S; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դ<EFBFBD><D4B4><EFBFBD><EFBFBD><EFBFBD>ֽ<EFBFBD><D6BD><EFBFBD>
__int64 nReserved7;
__int64 nReserved8;
int nSpeed; // <20><>ʱ<EFBFBD>ٶ<EFBFBD>(<28>ֽ<EFBFBD>/<2F><>)
int nSpeedP2S; // <20><>ʱ<EFBFBD>ٶ<EFBFBD>(<28>ֽ<EFBFBD>/<2F><>)
int nSpeedP2P; // <20><>ʱ<EFBFBD>ٶ<EFBFBD>(<28>ֽ<EFBFBD>/<2F><>)
bool bIsOriginUsable; // ԭʼ<D4AD><CABC>Դ<EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD>Ч
float fHashPercent; // <20>ֲ<EFBFBD><D6B2><EFBFBD><E1B9A9>ֵ
int IsCreatingFile; // <20>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD>ڴ<EFBFBD><DAB4><EFBFBD><EFBFBD>ļ<EFBFBD>
DWORD reserved[64];
};
enum DOWN_PROXY_TYPE
{
PROXY_TYPE_IE = 0,
PROXY_TYPE_HTTP = 1,
PROXY_TYPE_SOCK4 = 2,
PROXY_TYPE_SOCK5 = 3,
PROXY_TYPE_FTP = 4,
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 stAType;
wchar_t szHost[2048];
INT32 nPort;
wchar_t szUser[50];
wchar_t szPwd[50];
wchar_t szDomain[2048];
};
struct WSAPROTOCOL_INFOW;
#pragma pack(pop)
//////////////////////////////////////////////////////////////////////////////////////////
// 2016-3-4 kp007 <09><><EFBFBD><EFBFBD><E5BAAF>ָ<EFBFBD><D6B8>
typedef BOOL (*fn_Init)(void);
typedef BOOL (*fn_UnInit)(void);
typedef HANDLE (*fn_TaskCreate)(DownTaskParam &stParam);
typedef BOOL (*fn_TaskDelete)(HANDLE hTask);
typedef BOOL (*fn_TaskStart) (HANDLE hTask);
typedef BOOL (*fn_TaskPause) (HANDLE hTask);
typedef BOOL (*fn_TaskQuery) (HANDLE hTask,DownTaskInfo &stTaskInfo);
typedef BOOL (*fn_TaskQueryEx) (HANDLE hTask,DownTaskInfo &stTaskInfo);
typedef void (*fn_LimitSpeed)(INT32 nKBps);
typedef void (*fn_LimitUploadSpeed)(INT32 nTcpBps,INT32 nOtherBps);
typedef BOOL (*fn_DelTempFile)(DownTaskParam &stParam);
typedef BOOL (*fn_SetProxy)(DOWN_PROXY_INFO &stProxy);
typedef void (*fn_SetUserAgent)( const TCHAR* pszUserAgent );
typedef BOOL (*fn_GetFileSizeWithUrl)(const wchar_t * lpURL, INT64& iFileSize);
typedef BOOL (*fn_ParseThunderPrivateUrl)(const TCHAR *pszThunderUrl, TCHAR *normalUrlBuffer, INT32 bufferLen);
typedef LONG (*fn_SetAdditionInfo)( HANDLE task_id, WSAPROTOCOL_INFOW *sock_info, CHAR *http_resp_buf, LONG buf_len );
typedef BOOL (*fn_SetFileIdAndSize)(HANDLE hTask, char szFileId[40], unsigned __int64 nFileSize);
#define CHECKFUNC(f, ret) if (f == NULL) return ret;
#define CHECKFUNC_(f) if (f == NULL) return;
////////////////////////////////////////////////////////////////////////////////////////////////////////
// thunderWrapper <09><> 2016-3-4 kp007
// Ѹ<><D1B8><EFBFBD><EFBFBD><EFBFBD>ط<EFBFBD>װ<EFBFBD><D7B0>
//
////////////////////////////////////////////////////////////////////////////////////////////////////////
class thunderWrapper
{
public:
thunderWrapper(PCWSTR pDllPath = L"xldl.dll")
: m_hModule(NULL)
, m_hTask(NULL)
{
_Init = NULL; // (fn_Init) ::GetProcAddress(m_hModule, "XL_Init");
_UnInit = NULL; // (fn_UnInit) ::GetProcAddress(m_hModule, "XL_UnInit");
_TaskCreate = NULL; // (fn_TaskCreate) ::GetProcAddress(m_hModule, "XL_CreateTask");
_TaskDelete = NULL; // (fn_TaskDelete) ::GetProcAddress(m_hModule, "XL_DeleteTask");
_TaskStart = NULL; // (fn_TaskStart) ::GetProcAddress(m_hModule, "XL_StartTask");
_TaskPause = NULL; // (fn_TaskPause) ::GetProcAddress(m_hModule, "XL_StopTask");
_TaskQuery = NULL; // (fn_TaskQuery) ::GetProcAddress(m_hModule, "XL_QueryTaskInfo");
_TaskQueryEx = NULL; // (fn_TaskQueryEx) ::GetProcAddress(m_hModule, "XL_QueryTaskInfoEx");
_LimitSpeed = NULL; // (fn_LimitSpeed) ::GetProcAddress(m_hModule, "XL_SetSpeedLimit");
_LimitUploadSpeed = NULL; // (fn_LimitUploadSpeed) ::GetProcAddress(m_hModule, "XL_SetUploadSpeedLimit");
_DelTempFile = NULL; // (fn_DelTempFile) ::GetProcAddress(m_hModule, "XL_DelTempFile");
_SetProxy = NULL; // (fn_SetProxy) ::GetProcAddress(m_hModule, "XL_SetProxy");
_SetUserAgent = NULL; // (fn_SetUserAgent) ::GetProcAddress(m_hModule, "XL_SetUserAgent");
_GetFileSizeWithUrl = NULL; // (fn_GetFileSizeWithUrl) ::GetProcAddress(m_hModule, "XL_GetFileSizeWithUrl");
_ParseThunderPrivateUrl = NULL; // (fn_ParseThunderPrivateUrl) ::GetProcAddress(m_hModule, "XL_ParseThunderPrivateUrl");
_SetAdditionInfo = NULL; // (fn_SetAdditionInfo) ::GetProcAddress(m_hModule, "XL_SetAdditionInfo");
_SetFileIdAndSize = NULL; // (fn_SetFileIdAndSize) ::GetProcAddress(m_hModule, "XL_SetFileIdAndSize");
//m_hModule = ::LoadLibraryW(pDllPath);
//assert(m_hModule);
//if (m_hModule == NULL)
//{
// throw L"can not load xldl.dll";
//}
//_Init = (fn_Init) ::GetProcAddress(m_hModule, "XL_Init");
//_UnInit = (fn_UnInit) ::GetProcAddress(m_hModule, "XL_UnInit");
//_TaskCreate = (fn_TaskCreate) ::GetProcAddress(m_hModule, "XL_CreateTask");
//_TaskDelete = (fn_TaskDelete) ::GetProcAddress(m_hModule, "XL_DeleteTask");
//_TaskStart = (fn_TaskStart) ::GetProcAddress(m_hModule, "XL_StartTask");
//_TaskPause = (fn_TaskPause) ::GetProcAddress(m_hModule, "XL_StopTask");
//_TaskQuery = (fn_TaskQuery) ::GetProcAddress(m_hModule, "XL_QueryTaskInfo");
//_TaskQueryEx = (fn_TaskQueryEx) ::GetProcAddress(m_hModule, "XL_QueryTaskInfoEx");
//_LimitSpeed = (fn_LimitSpeed) ::GetProcAddress(m_hModule, "XL_SetSpeedLimit");
//_LimitUploadSpeed = (fn_LimitUploadSpeed) ::GetProcAddress(m_hModule, "XL_SetUploadSpeedLimit");
//_DelTempFile = (fn_DelTempFile) ::GetProcAddress(m_hModule, "XL_DelTempFile");
//_SetProxy = (fn_SetProxy) ::GetProcAddress(m_hModule, "XL_SetProxy");
//_SetUserAgent = (fn_SetUserAgent) ::GetProcAddress(m_hModule, "XL_SetUserAgent");
//_GetFileSizeWithUrl = (fn_GetFileSizeWithUrl) ::GetProcAddress(m_hModule, "XL_GetFileSizeWithUrl");
//_ParseThunderPrivateUrl = (fn_ParseThunderPrivateUrl) ::GetProcAddress(m_hModule, "XL_ParseThunderPrivateUrl");
//_SetAdditionInfo = (fn_SetAdditionInfo) ::GetProcAddress(m_hModule, "XL_SetAdditionInfo");
//_SetFileIdAndSize = (fn_SetFileIdAndSize) ::GetProcAddress(m_hModule, "XL_SetFileIdAndSize");
}
virtual ~thunderWrapper(void)
{
if (m_hModule)
{
::FreeLibrary(m_hModule);
}
}
bool init(PCWSTR pDllPath = L"xldl.dll")
{
assert(!m_hModule);
m_hModule = ::LoadLibraryW(pDllPath);
assert(m_hModule);
if (m_hModule == NULL)
{
throw L"can not load xldl.dll";
}
_Init = (fn_Init) ::GetProcAddress(m_hModule, "XL_Init");
_UnInit = (fn_UnInit) ::GetProcAddress(m_hModule, "XL_UnInit");
_TaskCreate = (fn_TaskCreate) ::GetProcAddress(m_hModule, "XL_CreateTask");
_TaskDelete = (fn_TaskDelete) ::GetProcAddress(m_hModule, "XL_DeleteTask");
_TaskStart = (fn_TaskStart) ::GetProcAddress(m_hModule, "XL_StartTask");
_TaskPause = (fn_TaskPause) ::GetProcAddress(m_hModule, "XL_StopTask");
_TaskQuery = (fn_TaskQuery) ::GetProcAddress(m_hModule, "XL_QueryTaskInfo");
_TaskQueryEx = (fn_TaskQueryEx) ::GetProcAddress(m_hModule, "XL_QueryTaskInfoEx");
_LimitSpeed = (fn_LimitSpeed) ::GetProcAddress(m_hModule, "XL_SetSpeedLimit");
_LimitUploadSpeed = (fn_LimitUploadSpeed) ::GetProcAddress(m_hModule, "XL_SetUploadSpeedLimit");
_DelTempFile = (fn_DelTempFile) ::GetProcAddress(m_hModule, "XL_DelTempFile");
_SetProxy = (fn_SetProxy) ::GetProcAddress(m_hModule, "XL_SetProxy");
_SetUserAgent = (fn_SetUserAgent) ::GetProcAddress(m_hModule, "XL_SetUserAgent");
_GetFileSizeWithUrl = (fn_GetFileSizeWithUrl) ::GetProcAddress(m_hModule, "XL_GetFileSizeWithUrl");
_ParseThunderPrivateUrl = (fn_ParseThunderPrivateUrl) ::GetProcAddress(m_hModule, "XL_ParseThunderPrivateUrl");
_SetAdditionInfo = (fn_SetAdditionInfo) ::GetProcAddress(m_hModule, "XL_SetAdditionInfo");
_SetFileIdAndSize = (fn_SetFileIdAndSize) ::GetProcAddress(m_hModule, "XL_SetFileIdAndSize");
CHECKFUNC(_Init, false);
return _Init() == TRUE;
}
bool unInit()
{
CHECKFUNC(_UnInit, false);
return TRUE == _UnInit();
}
bool taskCreate(DownTaskParam &param)
{
CHECKFUNC(_TaskCreate, false);
m_hTask = _TaskCreate(param);
return m_hTask != NULL;
}
bool taskCreate(PCWSTR ptaskUrl, PCWSTR pSavePath, PCWSTR pFileName)
{
assert(ptaskUrl && pSavePath && pFileName);
DownTaskParam param;
std::wcsncpy(param.szTaskUrl, ptaskUrl, _countof(param.szTaskUrl));
std::wcsncpy(param.szFilename, pFileName, _countof(param.szFilename));
std::wcsncpy(param.szSavePath, pSavePath, _countof(param.szSavePath));
return taskCreate(param);
}
bool taskDelete()
{
CHECKFUNC(_TaskDelete, false);
assert(m_hTask);
bool bl = TRUE == _TaskDelete(m_hTask);
if(bl) m_hTask = NULL;
return bl;
}
bool taskStart()
{
CHECKFUNC(_TaskStart, false);
assert(m_hTask);
return TRUE == _TaskStart(m_hTask);
}
bool taskPause()
{
CHECKFUNC(_TaskPause, false);
assert(m_hTask);
return TRUE == _TaskPause(m_hTask);
}
bool taskQuery(DownTaskInfo &stTaskInfo)
{
CHECKFUNC(_TaskQuery, false);
assert(m_hTask);
return TRUE == _TaskQuery(m_hTask, stTaskInfo);
}
bool taskQueryEx(DownTaskInfo &stTaskInfo)
{
CHECKFUNC(_TaskQueryEx, false);
assert(m_hTask);
return TRUE == _TaskQueryEx(m_hTask, stTaskInfo);
}
void limitSpeed(INT32 nBps)
{
CHECKFUNC_(_LimitSpeed);
_LimitSpeed(nBps);
}
void limitUploadSpeed(INT32 nTcpBps,INT32 nOtherBps)
{
CHECKFUNC_(_LimitUploadSpeed);
_LimitUploadSpeed(nTcpBps, nOtherBps);
}
bool delTempFile(DownTaskParam &stParam)
{
CHECKFUNC(_DelTempFile,false);
return TRUE == _DelTempFile(stParam);
}
bool setProxy(DOWN_PROXY_INFO &stProxy)
{
CHECKFUNC(_SetProxy, false);
return TRUE == _SetProxy(stProxy);
}
void setUserAgent(const TCHAR *pszUserAgent)
{
CHECKFUNC_(_SetUserAgent);
_SetUserAgent(pszUserAgent);
}
bool getFileSizeWithUrl(const wchar_t * lpURL, INT64& iFileSize)
{
CHECKFUNC(_GetFileSizeWithUrl, false);
return TRUE == _GetFileSizeWithUrl(lpURL, iFileSize);
}
bool parseThunderPrivateUrl(const TCHAR *pszThunderUrl, TCHAR *normalUrlBuffer, INT32 bufferLen)
{
//if (_ParseThunderPrivateUrl == NULL ) return FALSE;
CHECKFUNC(_ParseThunderPrivateUrl, false);
return TRUE == _ParseThunderPrivateUrl(pszThunderUrl, normalUrlBuffer, bufferLen);
}
LONG setAdditionInfo(HANDLE task_id, WSAPROTOCOL_INFOW *sock_info, CHAR *http_resp_buf, LONG buf_len)
{
CHECKFUNC(_SetAdditionInfo, 0);
return _SetAdditionInfo(task_id, sock_info, http_resp_buf, buf_len);
}
LONG setFileIdAndSize(char szFileId[40], unsigned __int64 nFileSize)
{
CHECKFUNC(_SetFileIdAndSize, 0);
assert(m_hTask);
return _SetFileIdAndSize(m_hTask, szFileId, nFileSize);
}
private:
HMODULE m_hModule;
HANDLE m_hTask;
fn_Init _Init;
fn_UnInit _UnInit;
fn_TaskCreate _TaskCreate;
fn_TaskDelete _TaskDelete;
fn_TaskStart _TaskStart;
fn_TaskPause _TaskPause;
fn_TaskQuery _TaskQuery;
fn_TaskQueryEx _TaskQueryEx;
fn_LimitSpeed _LimitSpeed;
fn_LimitUploadSpeed _LimitUploadSpeed;
fn_DelTempFile _DelTempFile;
fn_SetProxy _SetProxy;
fn_SetUserAgent _SetUserAgent;
fn_GetFileSizeWithUrl _GetFileSizeWithUrl;
fn_ParseThunderPrivateUrl _ParseThunderPrivateUrl;
fn_SetAdditionInfo _SetAdditionInfo;
fn_SetFileIdAndSize _SetFileIdAndSize;
};
}
#endif // __GTC_THUNDERWRAPPER__

Binary file not shown.

View File

@@ -0,0 +1,21 @@
MIT License
Copyright (c) 2017 Himmelt
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

View File

@@ -0,0 +1,2 @@
# ThunderOpenSDK
ThunderOpenSDK

View File

@@ -0,0 +1,6 @@
2014-05-15
更新日志:
1.调整原始资源废弃策略
2.增加对raw deflate压缩格式的支持
3.增加浏览器模式

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -0,0 +1,4 @@
[partner]
id = 80000054
ver = 3.2.1.48

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -0,0 +1 @@
1.2.141023.7z

Binary file not shown.

159
xiaomi_Thunder_Cloud/xldl.h Normal file
View File

@@ -0,0 +1,159 @@
#pragma once
// <20><><EFBFBD>нṹ<D0BD><EFBFBD>尴1<E5B0B4>ֽڶ<D6BD><DAB6><EFBFBD>
#pragma pack(push, 1)
struct DownTaskParam
{
DownTaskParam()
{
memset(this, 0, sizeof(DownTaskParam));
nReserved1 = 5;
bReserved = FALSE;
DisableAutoRename = FALSE;
IsOnlyOriginal = FALSE;
IsResume = TRUE;
}
int nReserved;
wchar_t szTaskUrl[2084]; // <20><><EFBFBD><EFBFBD>URL
wchar_t szRefUrl[2084]; // <20><><EFBFBD><EFBFBD>ҳ
wchar_t szCookies[4096]; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>cookie
wchar_t szFilename[MAX_PATH]; // <20><><EFBFBD>ر<EFBFBD><D8B1><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD>.
wchar_t szReserved0[MAX_PATH];
wchar_t szSavePath[MAX_PATH]; // <20>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD>Ŀ¼
HWND hReserved;
BOOL bReserved;
wchar_t szReserved1[64];
wchar_t szReserved2[64];
BOOL IsOnlyOriginal; // <20>Ƿ<EFBFBD>ֻ<EFBFBD><D6BB>ԭʼ<D4AD><CABC>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD>
UINT nReserved1;
BOOL DisableAutoRename; // <20><>ֹ<EFBFBD><D6B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
BOOL IsResume; // <20>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
DWORD reserved[2048];
};
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, // δ֪<CEB4><D6AA><EFBFBD><EFBFBD>
TASK_ERROR_DISK_CREATE = 0x01, // <20><><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>ʧ<EFBFBD><CAA7>
TASK_ERROR_DISK_WRITE = 0x02, // д<>ļ<EFBFBD>ʧ<EFBFBD><CAA7>
TASK_ERROR_DISK_READ = 0x03, // <20><><EFBFBD>ļ<EFBFBD>ʧ<EFBFBD><CAA7>
TASK_ERROR_DISK_RENAME = 0x04, // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD><CAA7>
TASK_ERROR_DISK_PIECEHASH = 0x05, // <20>ļ<EFBFBD>ƬУ<C6AC><D0A3>ʧ<EFBFBD><CAA7>
TASK_ERROR_DISK_FILEHASH = 0x06, // <20>ļ<EFBFBD>ȫ<EFBFBD><C8AB>У<EFBFBD><D0A3>ʧ<EFBFBD><CAA7>
TASK_ERROR_DISK_DELETE = 0x07, // ɾ<><C9BE><EFBFBD>ļ<EFBFBD>ʧ<EFBFBD><CAA7>ʧ<EFBFBD><CAA7>
TASK_ERROR_DOWN_INVALID = 0x10, // <20><>Ч<EFBFBD><D0A7>DOWN<57><4E>ַ
TASK_ERROR_PROXY_AUTH_TYPE_UNKOWN = 0x20, // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>δ֪
TASK_ERROR_PROXY_AUTH_TYPE_FAILED = 0x21, // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֤ʧ<D6A4><CAA7>
TASK_ERROR_HTTPMGR_NOT_IP = 0x30, // http<74><70><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ip<69><70><EFBFBD><EFBFBD>
TASK_ERROR_TIMEOUT = 0x40, // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ
TASK_ERROR_CANCEL = 0x41, // <20><><EFBFBD><EFBFBD>ȡ<EFBFBD><C8A1>
TASK_ERROR_TP_CRASHED= 0x42, // MINITP<54><50><EFBFBD><EFBFBD>
TASK_ERROR_ID_INVALID = 0x43, // TaskId <20>Ƿ<EFBFBD>
};
struct DownTaskInfo
{
DownTaskInfo()
{
memset(this, 0, sizeof(DownTaskInfo));
stat = TSC_PAUSE;
fail_code = TASK_ERROR_UNKNOWN;
fPercent = 0;
bIsOriginUsable = false;
fHashPercent = 0;
}
DOWN_TASK_STATUS stat;
TASK_ERROR_TYPE fail_code;
wchar_t szFilename[MAX_PATH];
wchar_t szReserved0[MAX_PATH];
__int64 nTotalSize; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܴ<EFBFBD>С(<28>ֽ<EFBFBD>)
__int64 nTotalDownload; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ч<EFBFBD>ֽ<EFBFBD><D6BD><EFBFBD>(<28><><EFBFBD>ܴ<EFBFBD><DCB4>ڻ<EFBFBD><DABB>˵<EFBFBD><CBB5><EFBFBD><EFBFBD><EFBFBD>)
float fPercent; // <20><><EFBFBD>ؽ<EFBFBD><D8BD><EFBFBD>
int nReserved0;
int nSrcTotal; // <20><><EFBFBD><EFBFBD>Դ<EFBFBD><D4B4>
int nSrcUsing; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դ<EFBFBD><D4B4>
int nReserved1;
int nReserved2;
int nReserved3;
int nReserved4;
__int64 nReserved5;
__int64 nDonationP2P; // p2p<32><70><EFBFBD><EFBFBD><EFBFBD>ֽ<EFBFBD><D6BD><EFBFBD>
__int64 nReserved6;
__int64 nDonationOrgin; // ԭʼ<D4AD><CABC>Դ<EFBFBD><D4B4><EFBFBD><EFBFBD><EFBFBD>ֽ<EFBFBD><D6BD><EFBFBD>
__int64 nDonationP2S; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դ<EFBFBD><D4B4><EFBFBD><EFBFBD><EFBFBD>ֽ<EFBFBD><D6BD><EFBFBD>
__int64 nReserved7;
__int64 nReserved8;
int nSpeed; // <20><>ʱ<EFBFBD>ٶ<EFBFBD>(<28>ֽ<EFBFBD>/<2F><>)
int nSpeedP2S; // <20><>ʱ<EFBFBD>ٶ<EFBFBD>(<28>ֽ<EFBFBD>/<2F><>)
int nSpeedP2P; // <20><>ʱ<EFBFBD>ٶ<EFBFBD>(<28>ֽ<EFBFBD>/<2F><>)
bool bIsOriginUsable; // ԭʼ<D4AD><CABC>Դ<EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD>Ч
float fHashPercent; // <20>ֲ<EFBFBD><D6B2><EFBFBD><E1B9A9>ֵ
int IsCreatingFile; // <20>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD>ڴ<EFBFBD><DAB4><EFBFBD><EFBFBD>ļ<EFBFBD>
DWORD reserved[64];
};
enum DOWN_PROXY_TYPE
{
PROXY_TYPE_IE = 0,
PROXY_TYPE_HTTP = 1,
PROXY_TYPE_SOCK4 = 2,
PROXY_TYPE_SOCK5 = 3,
PROXY_TYPE_FTP = 4,
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 stAType;
wchar_t szHost[2048];
INT32 nPort;
wchar_t szUser[50];
wchar_t szPwd[50];
wchar_t szDomain[2048];
};
struct WSAPROTOCOL_INFOW;
#pragma pack(pop)
namespace DownEngine
{
extern "C" __declspec(dllimport) BOOL XL_Init(void);
extern "C" __declspec(dllimport) BOOL XL_UnInit(void);
extern "C" __declspec(dllimport) HANDLE XL_CreateTask(DownTaskParam &stParam);
extern "C" __declspec(dllimport) BOOL XL_DeleteTask(HANDLE hTask);
extern "C" __declspec(dllimport) BOOL XL_StartTask(HANDLE hTask);
extern "C" __declspec(dllimport) BOOL XL_StopTask(HANDLE hTask);
extern "C" __declspec(dllimport) BOOL XL_ForceStopTask(HANDLE hTask);
extern "C" __declspec(dllimport) BOOL XL_QueryTaskInfo(HANDLE hTask, DownTaskInfo & stTaskInfo); //<2F>ɰ<EFBFBD><C9B0>ӿڣ<D3BF>ʹ<EFBFBD><CAB9>Ex<45>ӿ<EFBFBD><D3BF>
extern "C" __declspec(dllimport) BOOL XL_QueryTaskInfoEx(HANDLE hTask, DownTaskInfo & stTaskInfo);
extern "C" __declspec(dllimport) BOOL XL_DelTempFile(DownTaskParam &stParam);
extern "C" __declspec(dllimport) void XL_SetSpeedLimit(INT32 nKBps);
extern "C" __declspec(dllimport) void XL_SetUploadSpeedLimit(INT32 nTcpKBps,INT32 nOtherKBps);
extern "C" __declspec(dllimport) BOOL XL_SetProxy(DOWN_PROXY_INFO &stProxyInfo);
extern "C" __declspec(dllimport) void XL_SetUserAgent(const wchar_t *pszUserAgent);
extern "C" __declspec(dllimport) BOOL XL_ParseThunderPrivateUrl(const wchar_t *pszThunderUrl, wchar_t *normalUrlBuffer, INT32 bufferLen);
extern "C" __declspec(dllimport) BOOL XL_GetFileSizeWithUrl(const wchar_t * lpURL, INT64& iFileSize);
extern "C" __declspec(dllimport) BOOL XL_SetFileIdAndSize(HANDLE hTask, char szFileId[40], unsigned __int64 nFileSize);
extern "C" __declspec(dllimport) BOOL XL_SetAdditionInfo( HANDLE task_id, WSAPROTOCOL_INFOW *sock_info, CHAR *http_resp_buf, LONG buf_len );
extern "C" __declspec(dllimport) HANDLE XL_CreateTaskByURL(const wchar_t *url, const wchar_t *path, const wchar_t *fileName, BOOL IsResume);
extern "C" __declspec(dllimport) LONG XL_CreateTaskByThunder(wchar_t *pszUrl, wchar_t *pszFileName, wchar_t *pszReferUrl, wchar_t *pszCharSet, wchar_t *pszCookie);
extern "C" __declspec(dllimport) LONG XL_CreateBTTaskByThunder(const wchar_t *pszPath);
};