結束工作並儲存轉移到用戶端的檔案。
語法
HRESULT Complete();
返回值
此方法回傳以下 HRESULT 值。 此方法也可能回傳與將暫存檔案的臨時副本重新命名為其名相關錯誤。
| 回傳碼 | Description |
|---|---|
|
所有檔案均成功傳輸。 |
|
部分檔案成功傳輸。 |
|
工作順利完成;然而,該服務無法刪除與該工作相關的暫存檔案。 |
|
下載時,工作狀態無法BG_JOB_STATE_CANCELLED或BG_JOB_STATE_ACKNOWLEDGED。
上傳時,工作狀態必須BG_JOB_STATE_TRANSFERRED。 |
備註
下載檔案必須先使用 完整 方法。 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結構的已完成成員。
對於下載工作,您可以在傳輸過程中隨時呼叫 Complete 方法;但只有在呼叫此方法前成功傳輸到用戶端的檔案才會被保存。 例如,當你在 BITS 處理五個檔案中的第三個時呼叫 Complete 方法,只有前兩個檔案會被保存。 要判斷哪些檔案被轉移,請呼叫 IBackgroundCopyFile::GetProgress 方法,並將 BytesTransferned 成員與 BG_FILE_PROGRESS 結構中的 BytesTotal 成員進行比較。
對於上傳工作,只有當工作狀態BG_JOB_STATE_TRANSFERRED時,才能呼叫 Complete 方法。
BITS 並不保證傳輸檔案對第三方入侵的完整性。 用戶端可在呼叫 Complete 方法後,實作完整性檢查以驗證傳輸檔案。
檔案的擁有者就是打電話的使用者。 例如,如果管理員完成了別人的工作,管理員而非工作擁有者擁有該檔案。
BITS 1.2 及更早版本: 檔案的擁有者就是該工作的擁有者,不論是誰呼叫 了 Complete 方法。
需求
| Requirement | 價值觀 |
|---|---|
| 最低支援的用戶端 | 視窗XP |
| 支援的最低伺服器 | Windows Server 2003 |
| 目標平臺 | 窗戶 |
| Header | Bits.h |
| Library | Bits.lib |
| DLL | QmgrPrxy.dll |