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 方法注册通知的通知接收器生成通知。
Notify 将 lpNotifications 参数指向的结构复制到内存中,并调用相应的建议接收器的 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。 可以假定进程处于非活动状态,并停止为该进程生成通知。 如果 Notify 在 lpulFlags 中返回 0,则该过程仍处于活动状态,应根据需要继续发送通知。
使用同步通知时,请小心避免死锁情况。
有关通知过程的详细信息,请参阅 MAPI 中的事件通知。