Compartir a través de


Método IBackgroundCopyCallback::JobError (bits.h)

BITS llama a la implementación del método JobError cuando el estado del trabajo cambia a BG_JOB_STATE_ERROR.

Sintaxis

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

Parámetros

[in] pJob

Contiene información relacionada con el trabajo, como el número de bytes y archivos transferidos antes de que se produjera el error. También contiene los métodos para reanudar y cancelar el trabajo. No liberar pJob; BITS libera la interfaz cuando el método JobError devuelve.

[in] pError

Contiene información de error, como el archivo que se está procesando en el momento en que se produjo el error irrecuperable y una descripción del error. No liberar pError; BITS libera la interfaz cuando el método JobError devuelve.

Valor devuelto

Este método debe devolver S_OK; de lo contrario, BITS continúa llamando a este método hasta que se devuelve S_OK. Por motivos de rendimiento, debe limitar el número de veces que se devuelve un valor distinto de S_OK a varias veces. Como alternativa a devolver un código de error, considere la posibilidad de devolver siempre S_OK y controlar el error internamente. El intervalo en el que se llama a este método es arbitrario.

Tenga en cuenta que si se produce un error en este método y llamó al método IBackgroundCopyJob2::SetNotifyCmdLine , se ejecuta la línea de comandos y este método no se llama de nuevo.

Comentarios

Después de determinar la causa del error, realice una de las siguientes opciones:

  • Para cancelar el trabajo, llame al método IBackgroundCopyJob::Cancel . La solicitud de cancelación no tiene ningún efecto en los trabajos de carga si el error se produjo después de cargar correctamente el archivo. Sin embargo, si el tipo de trabajo es BG_JOB_TYPE_UPLOAD_REPLY y la carga se realizó correctamente, al llamar al método Cancel se cancela la solicitud de los datos de respuesta.
  • Para aceptar la parte del trabajo que se transfirió correctamente antes de que se produjera el error, llame al método IBackgroundCopyJob::Complete . Esta opción no se aplica a la carga de trabajos; no se puede completar una parte de un trabajo de carga.
  • Para finalizar el procesamiento del trabajo, corrija el problema y, a continuación, llame al método IBackgroundCopyJob::Resume .
Si el trabajo permanece en un estado de error durante 90 días (jobInactivityTimeout predeterminado directiva de grupo), BITS cancela el trabajo y elimina los archivos temporales relacionados; la cancelación del trabajo no afecta a los archivos que se han cargado correctamente.

Los errores transitorios no generan llamadas al método JobError .

Para determinar si se produjo un error en la parte de carga, respuesta o aplicación de servidor de un trabajo de respuesta de carga, llame al método IBackgroundCopyError::GetError para recuperar el contexto en el que se produjo el error. Error en la aplicación de servidor si el contexto es BG_ERROR_CONTEXT_REMOTE_APPLICATION. El contexto de carga y respuesta es BG_ERROR_CONTEXT_REMOTE_FILE. Error de respuesta si el miembro BytesTotal de la estructura BG_JOB_REPLY_PROGRESS no está BG_SIZE_UNKNOWN. De lo contrario, se produjo un error en la carga.

Nota BITS admite hasta cuatro notificaciones simultáneas por usuario. Si una o varias aplicaciones bloquean la devolución de las cuatro notificaciones de un usuario, una aplicación que se ejecuta como el mismo usuario no recibirá notificaciones hasta que se devuelvan una o varias de las notificaciones de bloqueo. Para reducir la posibilidad de que la devolución de llamada bloquee otras notificaciones, mantenga la implementación corta.
 

Ejemplos

Consulte el código de ejemplo de la interfaz IBackgroundCopyCallback .

Requisitos

Requisito Value
Cliente mínimo compatible Windows XP
Servidor mínimo compatible Windows Server 2003
Plataforma de destino Windows
Encabezado bits.h

Consulte también

IBackgroundCopyCallback

IBackgroundCopyError

IBackgroundCopyJob

IBackgroundCopyJob::Cancel

IBackgroundCopyJob::Resume