IBackgroundCopyJob::Complete 方法 (bits.h)

结束作业并将传输的文件保存在客户端上。

语法

HRESULT Complete();

返回值

此方法返回以下 HRESULT 值。 方法还可以返回与将传输的文件的临时副本重命名为其给定名称相关的错误。

返回代码 说明
S_OK
已成功传输所有文件。
BG_S_PARTIAL_COMPLETE
已成功传输的文件子集。
BG_S_UNABLE_TO_DELETE_FILES
作业已成功完成;但是,该服务无法删除与作业关联的临时文件。
BG_E_INVALID_STATE
对于下载,作业的状态不能BG_JOB_STATE_CANCELLED或BG_JOB_STATE_ACKNOWLEDGED。

对于上传,作业的状态必须BG_JOB_STATE_TRANSFERRED。

注解

在调用 Complete 方法之前,下载文件不可用。 在 BITS 成功传输文件后调用 Complete 方法。 方法将临时下载文件重命名为其最终目标名称,并从队列中删除作业。 请注意,当服务器收到最后一个片段时,BITS 会重命名临时上传文件,这就是下载作业需要网络连接和上传作业不需要的原因。

如果作业的状态为 BG_JOB_STATE_TRANSFERRED,则所有文件都已成功传输。 若要检查作业的状态,请调用 IBackgroundCopyJob::GetState 方法。 还可以实现 IBackgroundCopyCallback 接口,以在所有文件已传输到客户端时接收通知。

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

如果 HRESULT S_OK 或BG_S_PARTIAL_COMPLETE,BITS 将从传输队列中删除作业。 如果 BITS 无法重命名所有临时文件,作业将保留在传输队列中。 已成功重命名的文件可供用户使用。 (状态BG_JOB_STATE_TRANSFERRED ) ,直到应用程序能够解决问题并再次调用 Complete 方法或 IBackgroundCopyJob::Cancel 方法来取消作业,作业将保留在队列中。 若要确定下载作业未重命名的文件,请参阅 BG_FILE_PROGRESS 结构的 Completed 成员。

对于下载作业,可以在传输过程中随时调用 Complete 方法;但是,只会保存调用此方法之前成功传输到客户端的文件。 例如,如果在 BITS 处理五个文件中的第三个文件时调用 Complete 方法,则仅保存前两个文件。 若要确定已传输的文件,请调用 IBackgroundCopyFile::GetProgress 方法,并将 BytesTransferred 成员与 BG_FILE_PROGRESS 结构的 BytesTotal 成员进行比较。

对于上传作业,仅当作业的状态为BG_JOB_STATE_TRANSFERRED时,才能调用 Complete 方法。

BITS 不保证传输的文件对第三方入侵的完整性。 客户端可以在调用 Complete 方法后实现完整性检查以验证传输的文件。

文件的所有者是发出调用的用户。 例如,如果管理员完成其他人的作业,则管理员(而不是作业的所有者)拥有该文件。

BITS 1.2 及更早版本: 文件的所有者是作业的所有者,无论谁调用 了 Complete 方法。

要求

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

另请参阅

完成和取消作业

IBackgroundCopyCallback::JobTransferred

IBackgroundCopyJob::Cancel

IBackgroundCopyJob::GetState