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

Определяет реализацию интерфейса IBackgroundCopyCallback в BITS. Используйте интерфейс IBackgroundCopyCallback для получения уведомлений о событиях, связанных с заданием.

Синтаксис

HRESULT SetNotifyInterface(
  IUnknown *Val
);

Параметры

Val

Указатель интерфейса IBackgroundCopyCallback . Чтобы удалить текущий указатель интерфейса обратного вызова, задайте для этого параметра значение NULL.

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

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

Код возврата Description
S_OK
Указатель интерфейса уведомлений успешно установлен.
BG_E_INVALID_STATE
Состояние задания не может быть BG_JOB_STATE_CANCELLED или BG_JOB_STATE_ACKNOWLEDGED.

Замечания

Вызовите этот метод только при реализации интерфейса IBackgroundCopyCallback . Используйте метод SetNotifyInterface в сочетании с методом SetNotifyFlags , чтобы указать тип уведомления, которое требуется получить.

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

Обратите внимание, что BITS вызовет обратный вызов, даже если событие, для которого уже зарегистрировано.

В качестве альтернативы получению уведомления о обратном вызове можно зарегистрировать, чтобы BITS выполнял командную строку для ошибок и передаваемых событий. Дополнительные сведения см. в методе IBackgroundCopyJob2::SetNotifyCmdLine .

Обратите внимание, что если несколько приложений вызывает метод SetNotifyInterface , чтобы задать интерфейс уведомлений для задания, последнее приложение для вызова метода SetNotifyInterface — это тот, который получит уведомления, а другие приложения не получат уведомления.

Примеры

В следующем примере показано, как вызвать метод SetNotifyInterface . Дополнительные сведения о классе примера CNotifyInterface, используемом в следующем примере, см. в интерфейсе IBackgroundCopyCallback . В примере предполагается, что указатель интерфейса IBackgroundCopyJob является допустимым.

IBackgroundCopyJob* pJob;
CNotifyInterface* pNotify = new CNotifyInterface();

hr = pJob->SetNotifyInterface(pNotify);
if (SUCCEEDED(hr))
{
  hr = pJob->SetNotifyFlags(BG_NOTIFY_JOB_TRANSFERRED | 
                            BG_NOTIFY_JOB_ERROR);
}
pNotify->Release();
pNofity = NULL;

if (FAILED(hr))
{
  //Handle error - unable to register for event notification.
}

Требования

Требование Ценность
Минимальный поддерживаемый клиент Windows XP
минимальный поддерживаемый сервер Windows Server 2003
целевая платформа Виндоус
Header bits.h
Library Bits.lib
DLL QmgrPrxy.dll

См. также

IBackgroundCopyCallback

IBackgroundCopyJob2::SetNotifyCmdLine

IBackgroundCopyJob::GetNotifyInterface

IBackgroundCopyJob::SetNotifyFlags