IBackgroundCopyCallback::JobError 方法 (bits.h)

當作業的狀態變更為BG_JOB_STATE_ERROR時,BITS 會呼叫 JobError 方法的實作。

語法

HRESULT JobError(
  [in] IBackgroundCopyJob   *pJob,
  [in] IBackgroundCopyError *pError
);

參數

[in] pJob

包含作業相關信息,例如發生錯誤之前傳輸的位元組和檔案數目。 它也包含繼續和取消作業的方法。 不要發行 pJob;當 JobError 方法傳回時,BITS 會釋放介面。

[in] pError

包含錯誤資訊,例如在發生嚴重錯誤時正在處理的檔案,以及錯誤的描述。 不要發行 pError;當 JobError 方法傳回時,BITS 會釋放介面。

傳回值

這個方法應該會 傳回S_OK;否則,BITS 會繼續呼叫這個方法,直到 傳回S_OK 為止。 基於效能考慮,您應該將傳回 S_OK以外的值 次數限製為數次。 除了傳回錯誤碼,請考慮一律傳回 S_OK 並在內部處理錯誤。 呼叫這個方法的間隔是任意的。

請注意,如果此方法失敗,而且您呼叫 了IBackgroundCopyJob2::SetNotifyCmdLine 方法,則會執行命令行,而且不會再次呼叫此方法。

備註

判斷錯誤的原因之後,請執行下列其中一個選項:

  • 若要取消作業,請呼叫 IBackgroundCopyJob::Cancel 方法。 如果成功上傳檔案之後發生錯誤,取消要求不會影響上傳作業。 不過,如果作業類型BG_JOB_TYPE_UPLOAD_REPLY且上傳成功,則呼叫 Cancel 方法會取消回復數據的要求。
  • 若要接受在發生錯誤之前成功傳輸之作業的部分,請呼叫 IBackgroundCopyJob::Complete 方法。 此選項不適用於上傳作業;您無法完成上傳工作的一部分。
  • 若要完成處理作業,請修正問題,然後呼叫 IBackgroundCopyJob::Resume 方法。
如果作業在預設 JobInactivityTimeout (群組原則) 90 天內維持錯誤狀態,BITS 會取消作業並刪除相關的臨時檔;作業取消不會影響已成功上傳的檔案。

暫時性錯誤不會產生 JobError 方法的呼叫。

若要判斷上傳回復作業的上傳、回復或伺服器應用程式部分失敗,請呼叫 IBackgroundCopyError::GetError 方法來擷取發生錯誤 的內容 。 如果內容BG_ERROR_CONTEXT_REMOTE_APPLICATION,伺服器應用程式會失敗。 上傳和回復的內容BG_ERROR_CONTEXT_REMOTE_FILE。 如果未BG_SIZE_UNKNOWN BG_JOB_REPLY_PROGRESS結構的 BytesTotal 成員,回復會失敗。 否則,上傳失敗。

注意 BITS 支援每個使用者最多四個同時通知。 如果一或多個應用程式封鎖使用者的所有四個通知無法傳回,執行為相同使用者的應用程式將不會收到通知,直到一或多個封鎖通知傳回為止。 若要減少回呼封鎖其他通知的機會,請縮短實作。
 

範例

請參閱 IBackgroundCopyCallback 介面的範例程序代碼。

規格需求

需求
最低支援的用戶端 Windows XP
最低支援的伺服器 Windows Server 2003
目標平台 Windows
標頭 bits.h

另請參閱

IBackgroundCopyCallback

IBackgroundCopyError

IBackgroundCopyJob

IBackgroundCopyJob::Cancel

IBackgroundCopyJob::Resume