IMAPISupport::Notify

适用于:Outlook 2013 | Outlook 2016

将指定事件的通知发送到最初通过 IMAPISupport::Subscribe 方法为通知注册的建议源。

HRESULT Notify(
LPNOTIFKEY lpKey,
ULONG cNotification,
LPNOTIFICATION lpNotifications,
ULONG FAR * lpulFlags
);

参数

lpKey

[in]指向建议源对象的通知键的指针。 lpKey 参数不能为 NULL。

cNotification

[in] lpNotifications 参数指向的通知结构的计数。

lpNotifications

[in]指向描述挂起通知的 NOTIFICATION 结构的数组的指针。

lpulFlags

[in,out]控制通知过程的标志的位掩码。 输入时,可以设置以下标志:

  • MAPI_UNICODE

    lpNotifications 指向的通知结构中的字符串采用 Unicode 格式。 如果未设置MAPI_UNICODE标志,则字符串采用 ANSI 格式。

    在输出时,MAPI 可以设置以下标志:

  • NOTIFY_CANCELED

    回调函数取消了同步通知。

返回值

S_OK

已成功生成通知。

备注

IMAPISupport::Notify 方法针对所有服务提供程序支持对象实现。 服务提供商调用 Notify ,请求 MAPI 为之前通过 IMAPISupport::Subscribe 方法注册通知的通知接收器生成通知。

NotifylpNotifications 参数指向的结构复制到内存中,并调用相应的建议接收器的 IMAPIAdviseSink::OnNotify 方法。 当 OnNotify 完成通知时,它会释放所涉及的内存。 调用方不需要分配内存;MAPI 执行所有必要的内存分配。

给调用方的说明

在 lpKey 参数中传递的通知密钥应与在 lpKey 中传递到 IMAPISupport::Subscribe 方法的密钥相同。 许多提供程序使用建议源的条目标识符作为键,但可以使用其他数据,如文件路径。 MAPI 使用此密钥来查找标识的建议源上通知的所有注册。

请确保将通知结构的 lpEntryID 成员设置为长期条目标识符。

如果在 订阅 调用上为任何挂起的通知设置NOTIFY_SYNC标志, 则 Notify 会在返回之前调用 IMAPIAdviseSink::OnNotify 方法回调函数。 建议接收器可以手动创建,也可以通过调用 HrAllocAdviseSink 来创建。 HrAllocAdviseSink 函数允许其调用方指定一个回调函数,该回调函数通知调用作为通知的一部分。 回调函数符合 NOTIFCALLBACK 原型。 客户端实现的回调函数始终返回S_OK;服务提供商实现的回调函数可以返回CALLBACK_DISCONTINUE。

如果回调函数返回CALLBACK_DISCONTINUE,MAPI 将停止发送通知,并在 Notify 方法的 lpulFlags 参数中返回NOTIFY_CANCELED。 可以假定进程处于非活动状态,并停止为该进程生成通知。 如果 NotifylpulFlags 中返回 0,则该过程仍处于活动状态,应根据需要继续发送通知。

使用同步通知时,请小心避免死锁情况。

有关通知过程的详细信息,请参阅 MAPI 中的事件通知

另请参阅