Compartilhar via


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

O BITS chama a implementação do método JobError quando o estado do trabalho é alterado para BG_JOB_STATE_ERROR.

Sintaxe

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

Parâmetros

[in] pJob

Contém informações relacionadas ao trabalho, como o número de bytes e arquivos transferidos antes da ocorrência do erro. Ele também contém os métodos para retomar e cancelar o trabalho. Não liberar pJob; O BITS libera a interface quando o método JobError retorna.

[in] pError

Contém informações de erro, como o arquivo que está sendo processado no momento em que o erro fatal ocorreu e uma descrição do erro. Não liberar pError; O BITS libera a interface quando o método JobError retorna.

Retornar valor

Esse método deve retornar S_OK; caso contrário, o BITS continuará a chamar esse método até que S_OK seja retornado. Por motivos de desempenho, você deve limitar o número de vezes que retorna um valor diferente de S_OK para algumas vezes. Como alternativa ao retorno de um código de erro, considere sempre retornar S_OK e lidar com o erro internamente. O intervalo no qual esse método é chamado é arbitrário.

Observe que, se esse método falhar e você chamar o método IBackgroundCopyJob2::SetNotifyCmdLine , a linha de comando será executada e esse método não será chamado novamente.

Comentários

Depois de determinar a causa do erro, execute uma das seguintes opções:

  • Para cancelar o trabalho, chame o método IBackgroundCopyJob::Cancel . A solicitação de cancelamento não terá efeito sobre trabalhos de upload se o erro ocorreu depois que o arquivo foi carregado com êxito. No entanto, se o tipo de trabalho for BG_JOB_TYPE_UPLOAD_REPLY e o upload tiver sido bem-sucedido, chamar o método Cancel cancelará a solicitação para os dados de resposta.
  • Para aceitar a parte do trabalho que foi transferida com êxito antes do erro ocorrer, chame o método IBackgroundCopyJob::Complete . Essa opção não se aplica a trabalhos de upload; não é possível concluir uma parte de um trabalho de upload.
  • Para concluir o processamento do trabalho, corrija o problema e chame o método IBackgroundCopyJob::Resume .
Se o trabalho permanecer em um estado de erro por 90 dias (jobInactivityTimeout padrão Política de Grupo), o BITS cancelará o trabalho e excluirá os arquivos temporários relacionados; o cancelamento do trabalho não afetará os arquivos que foram carregados com êxito.

Erros transitórios não geram chamadas para o método JobError .

Para determinar se a parte do aplicativo de upload, resposta ou servidor de um trabalho de resposta de upload falhou, chame o método IBackgroundCopyError::GetError para recuperar o contexto no qual o erro ocorreu. O aplicativo de servidor falhará se o contexto for BG_ERROR_CONTEXT_REMOTE_APPLICATION. O contexto para upload e resposta é BG_ERROR_CONTEXT_REMOTE_FILE. A resposta falhará se o membro BytesTotal da estrutura BG_JOB_REPLY_PROGRESS não estiver BG_SIZE_UNKNOWN. Caso contrário, o upload falhou.

Nota O BITS dá suporte a até quatro notificações simultâneas por usuário. Se um ou mais aplicativos bloquearem o retorno de todas as quatro notificações para um usuário, um aplicativo em execução como o mesmo usuário não receberá notificações até que uma ou mais notificações de bloqueio retornem. Para reduzir a chance de que o retorno de chamada bloqueie outras notificações, mantenha sua implementação curta.
 

Exemplos

Consulte o código de exemplo para a interface IBackgroundCopyCallback .

Requisitos

Requisito Valor
Cliente mínimo com suporte Windows XP
Servidor mínimo com suporte Windows Server 2003
Plataforma de Destino Windows
Cabeçalho bits.h

Confira também

IBackgroundCopyCallback

IBackgroundCopyError

IBackgroundCopyJob

IBackgroundCopyJob::Cancel

IBackgroundCopyJob::Resume