点量BT内核使用说明文档 参数:
hDownloader:下载任务的句柄。
index:文件的序号,要求 >=0 , 小于DLBT_Downloader_GetFileCount取得的文件的总数目。
说明:
Bitcomet以及点量BT 3.6版本后,均有可能有padding file存在,目的是为了更少的文件更新量以及较好的磁盘利用率,详见:DLBT_CreateTorrent的说明。
DLBT_Downloader_GetFilePathName
功能:获得任务(对应一个Torrent文件)中所包含的某个文件的路径和名称。
DLBT_API HRESULT WINAPI DLBT_Downloader_GetFilePathName ( HANDLE hDownloader, // 下载任务的句柄 int index, // 文件的序号 LPWSTR pBuffer, // 传出文件名
int * pBufferSize, // 传入buffer的大小,传出文件名的实际长度
bool needFullPath = false// 是否需要全部的路径还是只需要文件在种子中的相对路径
); 说明:
如果buffer的大小小于要返回的文件路径名大小,则会返回ERROR_INSUFFICIENT_BUFFER错误码,此时pBufferSize中会传出实际需要的大小,成功则返回S_OK。needFullPath如果为false,则只返回名字和在种子文件中的相对路径,否则返回在磁盘上的绝对路径。
DLBT_Downloader_GetFileHash
功能:获取某个文件的Hash值(SHA1算法)。只有制作种子时使用bUpdateExt才能获取到。
DLBT_API HRESULT WINAPI DLBT_Downloader_GetFileHash (
HANDLE hDownloader, // 下载任务的句柄
int index, // 要获取的文件的序号,piece的数目可以通过LPSTR pBuffer, // 传出Hash字符串
int * pBufferSize // 传入pBuffer的大小,pieceInfoHash固定为个字节,因此此处应该是
DLBT_Downloader_GetFileCount获得
的长度。 说明:
如果buffer的大小小于要返回的hash大小---建议使用48即可,则会返回ERROR_INSUFFICIENT_BUFFER错误码,此时pBufferSize中会传出实际需要的大小,成功则返回S_OK。详见DLBT_CreateTorrent中对bUpdateExt的说明。
点量BT,致力于最专业的BT传输内核
点量BT内核使用说明文档
DLBT_Downloader_GetFileProgress
功能:获得任务(对应一个Torrent文件)中所包含的某个文件的下载进度。
DLBT_API float WINAPI DLBT_Downloader_GetFileProgress (HANDLE hDownloader, int index);
参数:
hDownloader:下载任务的句柄。
index:文件的序号,要求 >=0 , 小于DLBT_Downloader_GetFileCount取得的文件的总数目。 说明:
该函数需要对数据进行一遍统计,需要进行一定的操作,建议仅在必要时使用
DLBT_FILE_PRIORITIZE
功能:设置单个文件的下载优先级。
enum DLBT_FILE_PRIORITIZE {
DLBT_FILE_PRIORITY_CANCEL = 0, // 取消该文件的下载
DLBT_FILE_PRIORITY_NORMAL, // 正常优先级 DLBT_FILE_PRIORITY_ABOVE_NORMAL, // 高优先级
DLBT_FILE_PRIORITY_MAX // 最高优先级(如果有该优先级的文件还未下完,不会下
载低优先级的文件) };
DLBT_Downloader_SetFilePrioritize
功能:设置文件的下载的优先级,可以通过这个接口设置某些文件不下载。
DLBT_API HRESULT WINAPI DLBT_Downloader_SetFilePrioritize ( HANDLE hDownloader,
int index, // 文件序号 DLBT_FILE_PRIORITIZE prioritize, // 优先级
BOOL bDoPriority = TRUE
); 参数:
hDownloader:下载任务的句柄。
index:文件的序号,要求 >=0 , 小于DLBT_Downloader_GetFileCount取得的文件的总数目。 prioritize:文件的优先级,请参考DLBT_FILE_PRIORITIZE。
bDoPriority:是否立即应用这个设置,如果有多个文件需要设置,建议暂时不立即应用,让最后一
点量BT,致力于最专业的BT传输内核
点量BT内核使用说明文档
个文件应用设置,或者可以主动调用DLBT_Downloader_ApplyPrioritize函数来应用,因为每应用一次设置都要对所有Piece操作一遍,比较麻烦,所以应该一起应用。
DLBT_Downloader_ApplyPrioritize
功能:立即应用对文件优先级的设置。
DLBT_API void WINAPI DLBT_Downloader_ApplyPrioritize (HANDLE hDownloader);
参数:
hDownloader:下载任务的句柄。
DLBT_Downloader_GetPiecesStatus
功能:获取当前每个分块的状态,比如可以用于判断是否需要去更新(是否已经拥有了该块)。
DLBT_API HRESULT WINAPI DLBT_Downloader_GetPiecesStatus (
HANDLE hDownloader, // 任务句柄
bool * pieceArray, // 标记每个块是否本地已是最新的数组 int arrayLength, // 数组的长度
int * pieceDownloaded // 已经下载的分块的数目,在显示下载的分块的图形时,该参数比较有用。如果发现该数字和上次获取时没有
// 变化,则可以不需要重画当前的分块状态图 );
参数:
hDownloader:下载任务的句柄。
pieceArray:标记分块状态的数组指针,bool (布尔)类型。该数组的长度必须与任务的总分块数相同,也就是必须是DLBT_Downloader_GetPieceCount个元素的数组,由内核逐一对数组中的元素赋值。True代表该块已经是最新了,false代表还没有该块,或者该块需要更新。
arrayLength:标记传入的pieceArray的长度,内核用于验证是否和任务的总分块数一致。 pieceDownloaded:当前已经拥有的正确的分块的数目,在显示下载的分块图形时,该参数非常有用。如果发现该数字和上次获取时一致,则无需去浏览pieceArray中的内容,也无需重画分块状态图。
说明:
该接口可以用于显示分块状态(哪些下载完成了)
DLBT_Downloader_SetPiecePrioritize
功能:设置Piece(分块)的下载优先级,比如可以用于取消某些分块的下载,从指定位置开始下载
等。index表示分块的序号。
点量BT,致力于最专业的BT传输内核
点量BT内核使用说明文档
DLBT_API HRESULT WINAPI DLBT_Downloader_SetPiecePrioritize (
HANDLE hDownloader,
int index, // 文件序号 DLBT_FILE_PRIORITIZE prioritize, // 优先级
BOOL bDoPriority = TRUE // 是否立即应用这个设置(如果有多个分块需要设置,建因为每应用一次设置都要对所有Piece操作一遍,比较麻烦,所以应该一起应用
议暂时不立即应用,让最后一个块应用设置,或者可以主动调用DLBT_Downloader_ApplyPrioritize函数来应用, ); 参数:
hDownloader:下载任务的句柄。
index:块的序号,要求 >=0 , 小于该任务块的总数目:DLBT_Downloader_GetPieceCount。 prioritize:文件的优先级,请参考DLBT_FILE_PRIORITIZE。
bDoPriority:是否立即应用这个设置,如果有多个分块需要设置,建议暂时不立即应用,让最后一个块应用设置,或者可以主动调用DLBT_Downloader_ApplyPrioritize函数来应用,因为每应用一次设置都要对所有Piece操作一遍,比较麻烦,所以应该一起应用。
说明:
该接口一可以支持数据块级别的下载优先级设定,使得高优先级的数据块最快下载,更好地支持了音视频点播直播等P2P应用;提升点播或直播数据时拖动的响应速度。在用户拖动进度条时,程序计算出分块的位置,设置该区域的块优先下载,则内核会下载该区域,以实现灵敏的响应进度条拖动。
DLBT_Downloader_AddPeerSource
功能:手工指定连接哪一个用户。
DLBT_API void WINAPI DLBT_Downloader_AddPeerSource (HANDLE hDownloader, char * ip, USHORT port);
参数:
hDownloader:下载任务的句柄。 ip:要连接的用户的IP地址。 port:要连接的用户的端口号。 说明:
如果连接几次,该用户都不能被连接上(比如对方不在线),那么该用户将有可能被删除出去,不再进行连接。如果在你们的系统中,要连接的是服务器,那么建议每30s或者1分钟调用一次该函数,以防止服务器短期下线。这样每隔一段时间连接一次就会解决这个问题。30s调用一次不会造成资源浪费,内部会有自动判断,如果已经在连接,则不会再建立连接。
点量BT,致力于最专业的BT传输内核
相关推荐: