Share via


IBackgroundCopyJob::SetNotifyInterface 方法 (bits.h)

識別對 BITS 的 IBackgroundCopyCallback 介面實作。 使用 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
目標平台 Windows
標頭 bits.h
程式庫 Bits.lib
Dll QmgrPrxy.dll

另請參閱

IBackgroundCopyCallback

IBackgroundCopyJob2::SetNotifyCmdLine

IBackgroundCopyJob::GetNotifyInterface

IBackgroundCopyJob::SetNotifyFlags