다음을 통해 공유


IBackgroundCopyCallback::JobError 메서드(bits.h)

BITS는 작업 상태가 BG_JOB_STATE_ERROR 변경되면 JobError 메서드의 구현을 호출합니다.

구문

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. BG_JOB_REPLY_PROGRESS 구조체의 BytesTotal 멤버가 BG_SIZE_UNKNOWN 않으면 회신이 실패했습니다. 그렇지 않으면 업로드에 실패했습니다.

참고 BITS는 사용자당 최대 4개의 동시 알림을 지원합니다. 하나 이상의 애플리케이션이 사용자의 4개 알림 모두 반환을 차단하는 경우 하나 이상의 차단 알림이 반환될 때까지 동일한 사용자로 실행되는 애플리케이션은 알림을 받지 않습니다. 콜백이 다른 알림을 차단할 가능성을 줄이려면 구현을 짧게 유지합니다.
 

예제

IBackgroundCopyCallback 인터페이스에 대한 예제 코드를 참조하세요.

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows XP
지원되는 최소 서버 Windows Server 2003
대상 플랫폼 Windows
헤더 bits.h

추가 정보

IBackgroundCopyCallback

IBackgroundCopyError

IBackgroundCopyJob

IBackgroundCopyJob::Cancel

IBackgroundCopyJob::Resume