Метод IBackgroundCopyJob::GetError (bits.h)

Извлекает интерфейс ошибки после возникновения ошибки.

BITS создает объект ошибки, если задание находится в состоянии BG_JOB_STATE_ERROR или BG_JOB_STATE_TRANSIENT_ERROR. Служба не создает объект ошибки при сбое вызова метода интерфейса IBackgroundCopyXXXX . Объект ошибки доступен до тех пор, пока BITS не начнет передачу данных (состояние задания изменится на BG_JOB_STATE_TRANSFERRING) для задания или пока приложение не завершит работу.

Синтаксис

HRESULT GetError(
  [out] IBackgroundCopyError **ppError
);

Параметры

[out] ppError

Интерфейс ошибки, предоставляющий код ошибки, описание ошибки и контекст, в котором произошла ошибка. Этот параметр также определяет файл, передаваемый во время возникновения ошибки. По завершении отпустите ppError .

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

Этот метод возвращает следующие значения HRESULT , а также другие.

Код возврата Описание
S_OK
Объект ошибки успешно создан.
BG_E_ERROR_INFORMATION_UNAVAILABLE
Интерфейс ошибки доступен только после возникновения ошибки (BG_JOB_STATE_ERROR или BG_JOB_STATE_TRANSIENT_ERROR) и до начала передачи данных BITS (BG_JOB_STATE_TRANSFERRING).

Комментарии

Задание помещается в состояние ошибки при неустранимых ошибках или по истечении периода времени ожидания для временных ошибок (этот период извлекается из метода GetNoProgressTimeout ). Используйте один из следующих параметров, чтобы определить, есть ли ошибка в задании:

  • Чтобы опросить состояние задания, вызовите метод IBackgroundCopyJob::GetState . Если состояние BG_JOB_STATE_ERROR, задание завершается ошибкой.
  • Чтобы получать уведомления при возникновении ошибки, реализуйте интерфейс IBackgroundCopyCallback (в частности, метод JobError ). Затем вызовите метод IBackgroundCopyJob::SetNotifyInterface , чтобы зарегистрировать обратный вызов, и метод IBackgroundCopyJob::SetNotifyFlags , чтобы задать флаг BG_NOTIFY_JOB_ERROR.
Интерфейс IBackgroundCopyError содержит сведения, которые используются для определения причины ошибки и возможности продолжения процесса передачи. Определив причину ошибки, выполните один из следующих действий.
  • Чтобы отменить задание, вызовите метод IBackgroundCopyJob::Cancel .
  • Чтобы сохранить файлы, которые были успешно переданы до возникновения ошибки, вызовите метод IBackgroundCopyJob::Complete .
  • Чтобы завершить обработку задания, устраните проблему, а затем вызовите метод IBackgroundCopyJob::Resume .
Если задание остается в состоянии ошибки в течение 90 дней (по умолчанию JobInactivityTimeout групповая политика), служба удаляет задание из очереди и удаляет временные файлы на клиенте; удаление задания не влияет на успешно отправленные файлы.

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

Примеры

См. пример кода в разделе Обработка ошибок .

Требования

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

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

IBackgroundCopyCallback::JobError

IBackgroundCopyError

IBackgroundCopyJob::GetState