IBackgroundCopyJob::Complete 方法 (bits.h)

結束作業,並將傳輸的檔案儲存在用戶端上。

Syntax

HRESULT Complete();

傳回值

這個方法會傳回下列 HRESULT 值。 方法也可以傳回與重新命名所傳送檔案暫存複本相關的錯誤,並將其指定名稱。

傳回碼 Description
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
程式庫 Bits.lib
Dll QmgrPrxy.dll

另請參閱

正在完成和取消作業

IBackgroundCopyCallback::JobTransferred

IBackgroundCopyJob::Cancel

IBackgroundCopyJob::GetState