注册通知
适用于:Outlook 2013 | Outlook 2016
客户端可以在初始化过程中注册通讯簿或消息存储通知。
无论通讯簿提供商是否支持,MAPI 都支持在通讯簿上发出通知。 对消息存储通知的支持取决于特定的消息存储提供程序。 若要确定特定消息存储提供程序是否支持通知,检查其PR_STORE_SUPPORT_MASK (PidTagStoreSupportMask) 属性。 如果消息存储支持通知,则将设置STORE_NOTIFY_OK位。
通过调用建议源对象的 建议 方法注册通知。 许多对象实现 建议 ,客户端可以通过多种方式向这些对象注册。
注册通知
创建 MAPI 建议接收器对象并递增其引用计数。
如果适用,请调用 HrThisThreadAdviseSink 以创建包装原始建议接收器的建议接收器对象,然后释放原始建议接收器。
调用以下 建议 方法之一以完成注册:
调用 IMAPISession::建议 注册会话通知或通讯簿或消息存储对象上的通知。
调用 IAddrBook::建议 注册通讯簿通知或消息用户、容器或通讯组列表上的通知。
调用 IABLogon::建议 直接向通讯簿提供商注册消息用户、容器或通讯组列表上的通知。
调用 IMsgStore::建议 注册邮件存储通知或针对文件夹或邮件的通知。
调用 IMSLogon::建议 直接向邮件存储提供程序注册文件夹或邮件上的通知。
调用 IMAPITable::建议 注册表通知。
缓存从 建议返回的连接号。
如果使用包装的建议接收器,请释放它。 注册包装的建议接收器后,不再需要它。
通过调用 IMAPISession::Advise ,可以注册整个会话上的关键错误通知或针对单个对象的各种通知。 当另一个使用共享会话的客户端调用 IMAPISession::Logoff 方法时,会话会向登录到共享会话的客户端发送严重错误通知。 若要注册会话通知,请为条目标识符参数传递 NULL。 若要在单个对象上注册通知,请传递对象的条目标识符。 IMAPISession 方法将调用转发到相应的服务提供程序,由入口标识符的 MAPIUID 部分确定。 调用 IMAPISession::Advise 注册对象通知比调用服务提供商的 Advise 方法更简单。
向通讯簿注册类似于向会话注册。 若要注册通讯簿中的严重错误通知,请为条目标识符传递 NULL。 若要在特定通讯簿对象上注册通知,请指定相应的条目标识符和感兴趣的事件。 请注意,许多通讯簿提供程序不支持对单个对象发出通知。 相反,它们支持对其内容和层次结构表的表通知。
建议调用成功返回后,立即释放使用 HrAllocAdviseSink 实现或创建的建议接收器。 这是因为服务提供商可以在建议调用之后但在发出“未进一次调用”之前释放你的建议接收器。 为建议源提供了指向建议接收器的指针,并且此建议接收器上的引用计数已递增后,最好释放它,除非你长期使用它。
注意
在发出 Unadvise 调用之前,不会释放表示有效咨询注册的所有连接号码。