IBackgroundCopyCallback::JobTransferred 方法 (bits.h)

当作业中的所有文件都已成功传输时,BITS 会调用 JobTransferred 方法的实现。 对于BG_JOB_TYPE_UPLOAD_REPLY作业,BITS 在上传文件传输到服务器并将回复传输到客户端后调用 JobTransferred 方法。

语法

HRESULT JobTransferred(
  [in] IBackgroundCopyJob *pJob
);

参数

[in] pJob

包含与作业相关的信息,例如作业完成的时间、传输的字节数和传输的文件数。 不释放 pJob;当 方法返回时,BITS 释放接口。

返回值

此方法应返回 S_OK;否则,BITS 将继续调用此方法,直到返回 S_OK 。 出于性能原因,应将返回除 S_OK 以外的值的次数限制为多次。 作为返回错误代码的替代方法,请考虑始终返回 S_OK 并在内部处理错误。 调用此方法的间隔是任意的。

请注意,如果此方法失败,并且你调用 了 IBackgroundCopyJob2::SetNotifyCmdLine 方法,则执行命令行,并且不会再次调用此方法。

注解

通常,实现应调用 IBackgroundCopyJob::Complete 方法来确认 BITS 已成功传输文件。 在调用 Complete 方法之前,下载文件和回复文件在客户端上不可用。

如果未在 90 天内调用 Complete 方法或 IBackgroundCopyJob::Cancel 方法 (默认 JobInactivityTimeout 组策略) ,则 BITS 将取消作业并删除下载的文件和回复文件;作业取消不会影响已成功上传的文件。

如果要在回调中检索回复数据,请查询 iBackgroundCopyJob2 接口的 pJob 并调用其 GetReplyData 方法。 若要检索包含回复数据的文件的名称,请调用 GetReplyFileName 方法。

BITS 不保证传输的文件对第三方入侵的完整性。 客户端可以实施完整性检查,以在调用 Complete 方法之前验证传输的文件。 若要在传输文件时获取通知,请实现 IBackgroundCopyCallback2::FileTransferred 方法。 在回调中,调用 IBackgroundCopyFile3::GetTemporaryName 方法以获取包含已下载内容的临时文件的名称。 验证内容,然后调用 IBackgroundCopyFile3::SetValidationState 方法以指示内容是否有效。 如果内容无效,并且 BITS 从源服务器下载了文件,则作业将进入错误状态。 如果作业是从对等机下载的,则 BITS 将从源服务器下载文件。

注意 BITS 支持每个用户最多同时发出四个通知。 如果一个或多个应用程序阻止用户返回所有四个通知,则以同一用户身份运行的应用程序在一个或多个阻止通知返回之前不会收到通知。 若要降低回调阻止其他通知的可能性,请保持实现简短。
 

示例

请参阅 IBackgroundCopyCallback 接口的示例代码。

要求

要求
最低受支持的客户端 Windows XP
最低受支持的服务器 Windows Server 2003
目标平台 Windows
标头 bits.h

另请参阅

IBackgroundCopyCallback

IBackgroundCopyJob

IBackgroundCopyJob::Cancel

IBackgroundCopyJob::Complete