Share via


IBackgroundCopyJob::SetNotifyInterface-Methode (bits.h)

Identifiziert Ihre Implementierung der IBackgroundCopyCallback-Schnittstelle zu BITS. Verwenden Sie die IBackgroundCopyCallback-Schnittstelle , um Benachrichtigungen über auftragsbezogene Ereignisse zu erhalten.

Syntax

HRESULT SetNotifyInterface(
  IUnknown *Val
);

Parameter

Val

Ein IBackgroundCopyCallback-Schnittstellenzeiger . Um den aktuellen Rückrufschnittstellenzeiger zu entfernen, legen Sie diesen Parameter auf NULL fest.

Rückgabewert

Diese Methode gibt die folgenden HRESULT-Werte sowie andere zurück.

Rückgabecode Beschreibung
S_OK
Der Zeiger der Benachrichtigungsschnittstelle wurde erfolgreich festgelegt.
BG_E_INVALID_STATE
Der Status des Auftrags kann nicht BG_JOB_STATE_CANCELLED oder BG_JOB_STATE_ACKNOWLEDGED werden.

Hinweise

Rufen Sie diese Methode nur auf, wenn Sie die IBackgroundCopyCallback-Schnittstelle implementieren. Verwenden Sie die SetNotifyInterface-Methode in Verbindung mit der SetNotifyFlags-Methode , um den Typ der Benachrichtigung anzugeben, die Sie erhalten möchten.

Die Benachrichtigungsschnittstelle wird ungültig, wenn Ihre Anwendung beendet wird. BITS speichert die Benachrichtigungsschnittstelle nicht. Daher sollte der Initialisierungsprozess Ihrer Anwendung die SetNotifyInterface-Methode für die vorhandenen Aufträge aufrufen, für die Sie eine Benachrichtigung erhalten möchten. Wenn Sie Status- und Statusinformationen erfassen müssen, die seit der letzten Ausführung der Anwendung aufgetreten sind, rufen Sie während der Anwendungsinitialisierung Status- und Statusinformationen ab.

Beachten Sie, dass BITS Ihren Rückruf auch dann aufruft, wenn das Ereignis, für das Sie sich registriert haben, bereits aufgetreten ist.

Alternativ zum Empfangen einer Rückrufbenachrichtigung können Sie sich registrieren, damit BITS eine Befehlszeile für Fehler und übertragene Ereignisse ausführt. Weitere Informationen finden Sie in der IBackgroundCopyJob2::SetNotifyCmdLine-Methode .

Wenn mehr als eine Anwendung die SetNotifyInterface-Methode aufruft, um die Benachrichtigungsschnittstelle für den Auftrag festzulegen, ist die letzte Anwendung, die die SetNotifyInterface-Methode aufruft, die Benachrichtigungen empfängt. Die anderen Anwendungen erhalten keine Benachrichtigungen.

Beispiele

Das folgende Beispiel zeigt, wie die SetNotifyInterface-Methode aufgerufen wird. Ausführliche Informationen zur CNotifyInterface-Beispielklasse, die im folgenden Beispiel verwendet wird, finden Sie unter der IBackgroundCopyCallback-Schnittstelle . Im Beispiel wird davon ausgegangen, dass der IBackgroundCopyJob-Schnittstellenzeiger gültig ist.

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.
}

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Windows XP
Unterstützte Mindestversion (Server) Windows Server 2003
Zielplattform Windows
Kopfzeile bits.h
Bibliothek Bits.lib
DLL QmgrPrxy.dll

Weitere Informationen

IBackgroundCopyCallback

IBackgroundCopyJob2::SetNotifyCmdLine

IBackgroundCopyJob::GetNotifyInterface

IBackgroundCopyJob::SetNotifyFlags