IBackgroundCopyJob::SetNotifyInterface 方法 (bits.h)

标识对 BITS 的 IBackgroundCopyCallback 接口的实现。 使用 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
标头 bits.h
Library Bits.lib
DLL QmgrPrxy.dll

另请参阅

IBackgroundCopyCallback

IBackgroundCopyJob2::SetNotifyCmdLine

IBackgroundCopyJob::GetNotifyInterface

IBackgroundCopyJob::SetNotifyFlags