Поделиться через


Метод IBackgroundCopyCallback::JobError (bits.h)

BITS вызывает реализацию метода JobError , когда состояние задания изменяется на BG_JOB_STATE_ERROR.

Синтаксис

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

Параметры

[in] pJob

Содержит сведения, связанные с заданием, такие как количество байтов и файлов, переданных до возникновения ошибки. Он также содержит методы для возобновления и отмены задания. Не выпускайте pJob; BITS освобождает интерфейс при возврате метода JobError .

[in] pError

Содержит сведения об ошибке, такие как файл, обрабатываемый в момент возникновения неустранимой ошибки, и описание ошибки. Не отпускайте pError; BITS освобождает интерфейс при возврате метода JobError .

Возвращаемое значение

Этот метод должен возвращать S_OK; В противном случае BITS продолжает вызывать этот метод, пока не будет возвращен S_OK . Из соображений производительности следует ограничить количество возвращаемых значений, отличных от S_OK , несколькими значениями. В качестве альтернативы возврату кода ошибки рекомендуется всегда возвращать S_OK и обрабатывать ошибку внутри системы. Интервал вызова этого метода является произвольным.

Обратите внимание, что если этот метод завершается сбоем и вы вызвали метод IBackgroundCopyJob2::SetNotifyCmdLine , командная строка выполняется и этот метод не вызывается снова.

Комментарии

Определив причину ошибки, выполните один из следующих действий.

  • Чтобы отменить задание, вызовите метод IBackgroundCopyJob::Cancel . Запрос на отмену не влияет на задания отправки, если ошибка произошла после успешной отправки файла. Однако если тип задания BG_JOB_TYPE_UPLOAD_REPLY и отправка выполнена успешно, вызов метода Cancel отменяет запрос на получение данных ответа.
  • Чтобы принять часть задания, которая была успешно передана до возникновения ошибки, вызовите метод IBackgroundCopyJob::Complete . Этот параметр не применяется к отправке заданий; невозможно выполнить часть задания отправки.
  • Чтобы завершить обработку задания, устраните проблему, а затем вызовите метод IBackgroundCopyJob::Resume .
Если задание остается в состоянии ошибки в течение 90 дней (по умолчанию JobInactivityTimeout групповая политика), BITS отменяет задание и удаляет связанные временные файлы; отмена задания не влияет на успешно отправленные файлы.

Временные ошибки не создают вызовы метода JobError .

Чтобы определить, произошел ли сбой при отправке, ответе или серверном приложении задания ответа на отправку, вызовите метод IBackgroundCopyError::GetError , чтобы получить контекст , в котором произошла ошибка. Сбой серверного приложения, если контекст BG_ERROR_CONTEXT_REMOTE_APPLICATION. Контекст для отправки и ответа BG_ERROR_CONTEXT_REMOTE_FILE. Сбой ответа, если элемент BytesTotal структуры BG_JOB_REPLY_PROGRESS не BG_SIZE_UNKNOWN. В противном случае отправка завершится сбоем.

Примечание BITS поддерживает до четырех одновременных уведомлений для каждого пользователя. Если одно или несколько приложений блокируют возврат всех четырех уведомлений для пользователя, приложение, работающее от имени одного и того же пользователя, не будет получать уведомления до тех пор, пока не вернется одно или несколько блокирующих уведомлений. Чтобы снизить вероятность того, что обратный вызов блокирует другие уведомления, не закрывайте реализацию.
 

Примеры

См. пример кода для интерфейса IBackgroundCopyCallback .

Требования

Требование Значение
Минимальная версия клиента Windows XP
Минимальная версия сервера Windows Server 2003
Целевая платформа Windows
Header bits.h

См. также раздел

IBackgroundCopyCallback

IBackgroundCopyError

IBackgroundCopyJob

IBackgroundCopyJob::Cancel

IBackgroundCopyJob::Resume