Поделиться через


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

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

Синтаксис

HRESULT SetNotifyInterface(
  IUnknown *Val
);

Параметры

Val

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

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

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

Код возврата Описание
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
Целевая платформа Windows
Header bits.h
Библиотека Bits.lib
DLL QmgrPrxy.dll

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

IBackgroundCopyCallback

IBackgroundCopyJob2::SetNotifyCmdLine

IBackgroundCopyJob::GetNotifyInterface

IBackgroundCopyJob::SetNotifyFlags