mirror of
https://github.com/netfun2000/ThunderOpenSDK.git
synced 2026-02-27 09:54:20 +08:00
更新自用SDK
This commit is contained in:
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,3 @@
|
||||
[op]
|
||||
ps=1
|
||||
pp=1
|
||||
Binary file not shown.
Binary file not shown.
@@ -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.
@@ -0,0 +1 @@
|
||||
1.2.141023.7z
|
||||
Binary file not shown.
@@ -0,0 +1,159 @@
|
||||
#pragma once
|
||||
|
||||
// 所有结构体定义按1字节对齐
|
||||
#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]; // 任务URL
|
||||
wchar_t szRefUrl[2084]; // 引用页
|
||||
wchar_t szCookies[4096]; // 浏览器cookie
|
||||
wchar_t szFilename[MAX_PATH]; // 下载保存文件名.
|
||||
wchar_t szReserved0[MAX_PATH];
|
||||
wchar_t szSavePath[MAX_PATH]; // 文件保存目录
|
||||
HWND hReserved;
|
||||
BOOL bReserved;
|
||||
wchar_t szReserved1[64];
|
||||
wchar_t szReserved2[64];
|
||||
BOOL IsOnlyOriginal; // 是否只从原始地址下载
|
||||
UINT nReserved1;
|
||||
BOOL DisableAutoRename; // 禁止智能命名
|
||||
BOOL IsResume; // 是否用续传
|
||||
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, // 未知错误
|
||||
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 非法
|
||||
};
|
||||
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; // 该任务总大小(字节)
|
||||
__int64 nTotalDownload; // 下载有效字节数(可能存在回退的情况)
|
||||
float fPercent; // 下载进度
|
||||
int nReserved0;
|
||||
int nSrcTotal; // 总资源数
|
||||
int nSrcUsing; // 可用资源数
|
||||
int nReserved1;
|
||||
int nReserved2;
|
||||
int nReserved3;
|
||||
int nReserved4;
|
||||
__int64 nReserved5;
|
||||
__int64 nDonationP2P; // p2p贡献字节数
|
||||
__int64 nReserved6;
|
||||
__int64 nDonationOrgin; // 原始资源共享字节数
|
||||
__int64 nDonationP2S; // 镜像资源共享字节数
|
||||
__int64 nReserved7;
|
||||
__int64 nReserved8;
|
||||
int nSpeed; // 即时速度(字节/秒)
|
||||
int nSpeedP2S; // 即时速度(字节/秒)
|
||||
int nSpeedP2P; // 即时速度(字节/秒)
|
||||
bool bIsOriginUsable; // 原始资源是否有效
|
||||
float fHashPercent; // 现不提供该值
|
||||
int IsCreatingFile; // 是否正在创建文件
|
||||
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); //旧版接口,使用Ex接口替换
|
||||
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);
|
||||
};
|
||||
@@ -0,0 +1,135 @@
|
||||
#include "DownWrapper.h"
|
||||
|
||||
namespace DownEngine
|
||||
{
|
||||
|
||||
CDownWrapper::CDownWrapper(LPCWSTR sPath)
|
||||
{
|
||||
m_hModule = LoadLibraryW(sPath);
|
||||
if (m_hModule == NULL)
|
||||
{
|
||||
throw L"can not load xldl.dll";
|
||||
}
|
||||
WCHAR szModulePath[MAX_PATH] = { 0 };
|
||||
GetModuleFileNameW(NULL, szModulePath, MAX_PATH);
|
||||
PathRemoveFileSpecW(szModulePath); // 拆分路径 新版使用PathCchRemoveFileSpec
|
||||
|
||||
WCHAR szDllpath[MAX_PATH] = { 0 };
|
||||
PathCombineW(szDllpath, szModulePath, L"xldl.dll"); // 连接路径, 新版建议使用 PathCchCombine
|
||||
m_Init = (fn_Init) GetProcAddress(m_hModule, "XL_Init");
|
||||
m_UnInit = (fn_UnInit) GetProcAddress(m_hModule, "XL_UnInit");
|
||||
m_TaskCreate = (fn_TaskCreate) GetProcAddress(m_hModule, "XL_CreateTask");
|
||||
m_TaskDelete = (fn_TaskDelete) GetProcAddress(m_hModule, "XL_DeleteTask");
|
||||
m_TaskStart = (fn_TaskStart) GetProcAddress(m_hModule, "XL_StartTask");
|
||||
m_TaskStop = (fn_TaskStop) GetProcAddress(m_hModule, "XL_StopTask");
|
||||
m_ForceStopTask = (fn_ForceStopTask) GetProcAddress(m_hModule, "XL_ForceStopTask");
|
||||
m_QueryTaskInfo = (fn_QueryTaskInfo) GetProcAddress(m_hModule, "XL_QueryTaskInfo");
|
||||
m_QueryTaskInfoEx = (fn_QueryTaskInfoEx) GetProcAddress(m_hModule, "XL_QueryTaskInfoEx");
|
||||
m_DelTempFile = (fn_DelTempFile) GetProcAddress(m_hModule, "XL_DelTempFile");
|
||||
m_SetSpeedLimit = (fn_SetSpeedLimit) GetProcAddress(m_hModule, "XL_SetSpeedLimit");
|
||||
m_SetUploadSpeedLimit = (fn_SetUploadSpeedLimit) GetProcAddress(m_hModule, "XL_SetUploadSpeedLimit");
|
||||
m_SetProxy = (fn_SetProxy) GetProcAddress(m_hModule, "XL_SetProxy");
|
||||
m_SetUserAgent = (fn_SetUserAgent) GetProcAddress(m_hModule, "XL_SetUserAgent");
|
||||
m_ParseThunderPrivateUrl = (fn_ParseThunderPrivateUrl) GetProcAddress(m_hModule, "XL_ParseThunderPrivateUrl");
|
||||
m_GetFileSizeWithUrl = (fn_GetFileSizeWithUrl) GetProcAddress(m_hModule, "XL_GetFileSizeWithUrl");
|
||||
m_SetFileIdAndSize = (fn_SetFileIdAndSize) GetProcAddress(m_hModule, "XL_SetFileIdAndSize");
|
||||
m_SetAdditionInfo = (fn_SetAdditionInfo) GetProcAddress(m_hModule, "XL_SetAdditionInfo");
|
||||
m_CreateTaskByURL = (fn_CreateTaskByURL) GetProcAddress(m_hModule, "XL_CreateTaskByURL");
|
||||
m_CreateTaskByThunder = (fn_CreateTaskByThunder) GetProcAddress(m_hModule, "XL_CreateTaskByThunder");
|
||||
m_CreateBTTaskByThunder = (fn_CreateBTTaskByThunder) GetProcAddress(m_hModule, "XL_CreateBTTaskByThunder");
|
||||
}
|
||||
|
||||
CDownWrapper::~CDownWrapper()
|
||||
{
|
||||
if (m_hModule)
|
||||
{
|
||||
FreeLibrary(m_hModule);
|
||||
}
|
||||
}
|
||||
|
||||
HANDLE CDownWrapper::TaskCreate(DownTaskParam ¶m)
|
||||
{
|
||||
CHECKFUNC(m_TaskCreate, NULL); return m_TaskCreate(param);
|
||||
}
|
||||
BOOL CDownWrapper::TaskDelete(HANDLE hTask)
|
||||
{
|
||||
CHECKFUNC(m_TaskDelete, FALSE); return m_TaskDelete(hTask);
|
||||
}
|
||||
BOOL CDownWrapper::TaskStart(HANDLE hTask)
|
||||
{
|
||||
CHECKFUNC(m_TaskStart, FALSE); return m_TaskStart(hTask);
|
||||
}
|
||||
BOOL CDownWrapper::TaskStop(HANDLE hTask)
|
||||
{
|
||||
CHECKFUNC(m_TaskStop, FALSE); return m_TaskStop(hTask);
|
||||
}
|
||||
BOOL CDownWrapper::TaskForceStop(HANDLE hTask)
|
||||
{
|
||||
CHECKFUNC(m_ForceStopTask, FALSE); return m_ForceStopTask(hTask);
|
||||
}
|
||||
BOOL CDownWrapper::TaskQueryInfo(HANDLE hTask, DownTaskInfo & stTaskInfo)
|
||||
{
|
||||
CHECKFUNC(m_QueryTaskInfo, FALSE); return m_QueryTaskInfo(hTask, stTaskInfo);
|
||||
}
|
||||
BOOL CDownWrapper::TaskQueryInfoEx(HANDLE hTask, DownTaskInfo & stTaskInfo)
|
||||
{
|
||||
CHECKFUNC(m_QueryTaskInfoEx, FALSE); return m_QueryTaskInfoEx(hTask, stTaskInfo);
|
||||
}
|
||||
BOOL CDownWrapper::DelTempFile(DownTaskParam &stParam)
|
||||
{
|
||||
CHECKFUNC(m_DelTempFile, FALSE); return m_DelTempFile(stParam);
|
||||
}
|
||||
void CDownWrapper::SetSpeedLimit(INT32 nBps)
|
||||
{
|
||||
CHECKFUNC_(m_SetSpeedLimit); m_SetSpeedLimit(nBps);
|
||||
}
|
||||
void CDownWrapper::SetUploadSpeedLimit(INT32 nTcpBps, INT32 nOtherBps)
|
||||
{
|
||||
CHECKFUNC_(m_SetUploadSpeedLimit); m_SetUploadSpeedLimit(nTcpBps, nOtherBps);
|
||||
}
|
||||
BOOL CDownWrapper::SetProxy(DOWN_PROXY_INFO &stProxyInfo)
|
||||
{
|
||||
CHECKFUNC(m_SetProxy, FALSE); return m_SetProxy(stProxyInfo);
|
||||
}
|
||||
void CDownWrapper::SetUserAgent(const wchar_t *pszUserAgent)
|
||||
{
|
||||
CHECKFUNC_(m_SetUserAgent); m_SetUserAgent(pszUserAgent);
|
||||
}
|
||||
BOOL CDownWrapper::ParseThunderPrivateUrl(const wchar_t *pszThunderUrl, wchar_t *normalUrlBuffer, INT32 bufferLen)
|
||||
{
|
||||
CHECKFUNC(m_ParseThunderPrivateUrl, FALSE); return m_ParseThunderPrivateUrl(pszThunderUrl, normalUrlBuffer, bufferLen);
|
||||
}
|
||||
BOOL CDownWrapper::GetFileSizeWithUrl(const wchar_t * lpURL, INT64& iFileSize)
|
||||
{
|
||||
CHECKFUNC(m_GetFileSizeWithUrl, FALSE); return m_GetFileSizeWithUrl(lpURL, iFileSize);
|
||||
}
|
||||
BOOL CDownWrapper::SetFileIdAndSize(HANDLE hTask, char szFileId[40], unsigned __int64 nFileSize)
|
||||
{
|
||||
CHECKFUNC(m_SetFileIdAndSize, FALSE); return m_SetFileIdAndSize(hTask, szFileId, nFileSize);
|
||||
}
|
||||
BOOL CDownWrapper::SetAdditionInfo(HANDLE task_id, WSAPROTOCOL_INFOW *sock_info, CHAR *http_resp_buf, LONG buf_len)
|
||||
{
|
||||
CHECKFUNC(m_SetAdditionInfo, FALSE); return m_SetAdditionInfo(task_id, sock_info, http_resp_buf, buf_len);
|
||||
}
|
||||
HANDLE CDownWrapper::CreateTaskByURL(const wchar_t *url, const wchar_t *path, const wchar_t *fileName, BOOL IsResume)
|
||||
{
|
||||
CHECKFUNC(m_CreateTaskByURL, FALSE); return m_CreateTaskByURL(url, path, fileName, IsResume);
|
||||
}
|
||||
LONG CDownWrapper::CreateTaskByThunder(wchar_t *pszUrl, wchar_t *pszFileName, wchar_t *pszReferUrl, wchar_t *pszCharSet, wchar_t *pszCookie)
|
||||
{
|
||||
CHECKFUNC(m_CreateTaskByThunder, FALSE); return m_CreateTaskByThunder(pszUrl, pszFileName, pszReferUrl, pszCharSet, pszCookie);
|
||||
}
|
||||
LONG CDownWrapper::CreateBTTaskByThunder(const wchar_t *pszPath)
|
||||
{
|
||||
CHECKFUNC(m_CreateBTTaskByThunder, FALSE); return m_CreateBTTaskByThunder(pszPath);
|
||||
}
|
||||
DownTaskParam CDownWrapper::CreateDownTaskParam(const wchar_t TaskUrl[], const wchar_t Filename[], const wchar_t SavePath[], BOOL IsResume, BOOL IsOnlyOriginal, BOOL DisableAutoRename)
|
||||
{
|
||||
DownTaskParam TaskParam;
|
||||
TaskParam.DisableAutoRename = FALSE;
|
||||
StrCpyW(TaskParam.szTaskUrl, TaskUrl);
|
||||
StrCpyW(TaskParam.szFilename, Filename);
|
||||
StrCpyW(TaskParam.szSavePath, SavePath);
|
||||
return TaskParam;
|
||||
}
|
||||
};
|
||||
@@ -0,0 +1,67 @@
|
||||
#pragma once
|
||||
#include "./xldl.h"
|
||||
|
||||
#define DEF_DETOUR_FUNC( func, returntype, ...) typedef returntype ( * fn_##func )(##__VA_ARGS__); fn_##func m_##func;
|
||||
|
||||
#define CHECKFUNC(f, ret) if (f == NULL) return ret;
|
||||
#define CHECKFUNC_(f) if (f == NULL) return;
|
||||
namespace DownEngine
|
||||
{
|
||||
class CDownWrapper
|
||||
{
|
||||
public:
|
||||
CDownWrapper(LPCWSTR sPath);
|
||||
virtual ~CDownWrapper();
|
||||
BOOL InitEngine()
|
||||
{
|
||||
CHECKFUNC(m_Init, FALSE); return m_Init();
|
||||
}
|
||||
BOOL UnEngine()
|
||||
{
|
||||
CHECKFUNC(m_UnInit, FALSE); return m_UnInit();
|
||||
}
|
||||
HANDLE TaskCreate(DownTaskParam ¶m);
|
||||
BOOL TaskDelete(HANDLE hTask);
|
||||
BOOL TaskStart(HANDLE hTask);
|
||||
BOOL TaskStop(HANDLE hTask);
|
||||
BOOL TaskForceStop(HANDLE hTask);
|
||||
BOOL TaskQueryInfo(HANDLE hTask, DownTaskInfo & stTaskInfo);
|
||||
BOOL TaskQueryInfoEx(HANDLE hTask, DownTaskInfo & stTaskInfo);
|
||||
BOOL DelTempFile(DownTaskParam &stParam);
|
||||
void SetSpeedLimit(INT32 nBps);
|
||||
void SetUploadSpeedLimit(INT32 nTcpBps, INT32 nOtherBps);
|
||||
BOOL SetProxy(DOWN_PROXY_INFO &stProxyInfo);
|
||||
void SetUserAgent(const wchar_t *pszUserAgent);
|
||||
BOOL ParseThunderPrivateUrl(const wchar_t *pszThunderUrl, wchar_t *normalUrlBuffer, INT32 bufferLen);
|
||||
BOOL GetFileSizeWithUrl(const wchar_t * lpURL, INT64& iFileSize);
|
||||
BOOL SetFileIdAndSize(HANDLE hTask, char szFileId[40], unsigned __int64 nFileSize);
|
||||
BOOL SetAdditionInfo(HANDLE task_id, WSAPROTOCOL_INFOW *sock_info, CHAR *http_resp_buf, LONG buf_len);
|
||||
HANDLE CreateTaskByURL(const wchar_t *url, const wchar_t *path, const wchar_t *fileName, BOOL IsResume);
|
||||
LONG CreateTaskByThunder(wchar_t *pszUrl, wchar_t *pszFileName, wchar_t *pszReferUrl, wchar_t *pszCharSet, wchar_t *pszCookie);
|
||||
LONG CreateBTTaskByThunder(const wchar_t *pszPath);
|
||||
DownTaskParam CreateDownTaskParam(const wchar_t TaskUrl[], const wchar_t Filename[], const wchar_t SavePath[], BOOL IsResume = TRUE, BOOL IsOnlyOriginal = FALSE, BOOL DisableAutoRename = FALSE);
|
||||
private:
|
||||
HMODULE m_hModule;
|
||||
DEF_DETOUR_FUNC(Init, BOOL, void);
|
||||
DEF_DETOUR_FUNC(UnInit, BOOL, void);
|
||||
DEF_DETOUR_FUNC(TaskCreate, HANDLE, DownTaskParam &stParam);
|
||||
DEF_DETOUR_FUNC(TaskDelete, BOOL, HANDLE hTask);
|
||||
DEF_DETOUR_FUNC(TaskStart, BOOL, HANDLE hTask);
|
||||
DEF_DETOUR_FUNC(TaskStop, BOOL, HANDLE hTask);
|
||||
DEF_DETOUR_FUNC(ForceStopTask, BOOL, HANDLE hTask);
|
||||
DEF_DETOUR_FUNC(QueryTaskInfo, BOOL, HANDLE hTask, DownTaskInfo & stTaskInfo);
|
||||
DEF_DETOUR_FUNC(QueryTaskInfoEx, BOOL, HANDLE hTask, DownTaskInfo & stTaskInfo);
|
||||
DEF_DETOUR_FUNC(DelTempFile, BOOL, DownTaskParam &stParam);
|
||||
DEF_DETOUR_FUNC(SetSpeedLimit, void, INT32 nKBps);
|
||||
DEF_DETOUR_FUNC(SetUploadSpeedLimit, void, INT32 nTcpKBps, INT32 nOtherKBps);
|
||||
DEF_DETOUR_FUNC(SetProxy, BOOL, DOWN_PROXY_INFO &stProxyInfo);
|
||||
DEF_DETOUR_FUNC(SetUserAgent, void, const wchar_t *pszUserAgent);
|
||||
DEF_DETOUR_FUNC(ParseThunderPrivateUrl, BOOL, const wchar_t *pszThunderUrl, wchar_t *normalUrlBuffer, INT32 bufferLen);
|
||||
DEF_DETOUR_FUNC(GetFileSizeWithUrl, BOOL, const wchar_t * lpURL, INT64& iFileSize);
|
||||
DEF_DETOUR_FUNC(SetFileIdAndSize, BOOL, HANDLE hTask, char szFileId[40], unsigned __int64 nFileSize);
|
||||
DEF_DETOUR_FUNC(SetAdditionInfo, BOOL, HANDLE task_id, WSAPROTOCOL_INFOW *sock_info, CHAR *http_resp_buf, LONG buf_len);
|
||||
DEF_DETOUR_FUNC(CreateTaskByURL, HANDLE, const wchar_t *url, const wchar_t *path, const wchar_t *fileName, BOOL IsResume);
|
||||
DEF_DETOUR_FUNC(CreateTaskByThunder, LONG, wchar_t *pszUrl, wchar_t *pszFileName, wchar_t *pszReferUrl, wchar_t *pszCharSet, wchar_t *pszCookie);
|
||||
DEF_DETOUR_FUNC(CreateBTTaskByThunder, LONG, const wchar_t *pszPath);
|
||||
};
|
||||
};
|
||||
@@ -0,0 +1,164 @@
|
||||
#pragma once
|
||||
|
||||
#ifdef WIN32
|
||||
#include <WinSock2.h>
|
||||
#include <windows.h>
|
||||
#endif
|
||||
|
||||
// 所有结构体定义按1字节对齐
|
||||
#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]; // 任务URL
|
||||
wchar_t szRefUrl[2084]; // 引用页
|
||||
wchar_t szCookies[4096]; // 浏览器cookie
|
||||
wchar_t szFilename[MAX_PATH]; // 下载保存文件名.
|
||||
wchar_t szReserved0[MAX_PATH];
|
||||
wchar_t szSavePath[MAX_PATH]; // 文件保存目录
|
||||
HWND hReserved;
|
||||
BOOL bReserved;
|
||||
wchar_t szReserved1[64];
|
||||
wchar_t szReserved2[64];
|
||||
BOOL IsOnlyOriginal; // 是否只从原始地址下载
|
||||
UINT nReserved1;
|
||||
BOOL DisableAutoRename; // 禁止智能命名
|
||||
BOOL IsResume; // 是否用续传
|
||||
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, // 未知错误
|
||||
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 非法
|
||||
};
|
||||
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; // 该任务总大小(字节)
|
||||
__int64 nTotalDownload; // 下载有效字节数(可能存在回退的情况)
|
||||
float fPercent; // 下载进度
|
||||
int nReserved0;
|
||||
int nSrcTotal; // 总资源数
|
||||
int nSrcUsing; // 可用资源数
|
||||
int nReserved1;
|
||||
int nReserved2;
|
||||
int nReserved3;
|
||||
int nReserved4;
|
||||
__int64 nReserved5;
|
||||
__int64 nDonationP2P; // p2p贡献字节数
|
||||
__int64 nReserved6;
|
||||
__int64 nDonationOrgin; // 原始资源共享字节数
|
||||
__int64 nDonationP2S; // 镜像资源共享字节数
|
||||
__int64 nReserved7;
|
||||
__int64 nReserved8;
|
||||
int nSpeed; // 即时速度(字节/秒)
|
||||
int nSpeedP2S; // 即时速度(字节/秒)
|
||||
int nSpeedP2P; // 即时速度(字节/秒)
|
||||
bool bIsOriginUsable; // 原始资源是否有效
|
||||
float fHashPercent; // 现不提供该值
|
||||
int IsCreatingFile; // 是否正在创建文件
|
||||
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); //旧版接口,使用Ex接口替换
|
||||
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);
|
||||
};
|
||||
Binary file not shown.
Reference in New Issue
Block a user