IBackgroundCopyJob::Complete 方法 (bits.h)
結束作業,並將傳輸的檔案儲存在用戶端上。
Syntax
HRESULT Complete();
傳回值
這個方法會傳回下列 HRESULT 值。 方法也可以傳回與重新命名所傳送檔案暫存複本相關的錯誤,並將其指定名稱。
傳回碼 | Description |
---|---|
|
成功傳輸的所有檔案。 |
|
已成功傳輸的檔案子集。 |
|
作業已順利完成;不過,服務無法刪除與作業相關聯的臨時檔。 |
|
針對下載,作業的狀態無法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 |