注册通知

适用于:Outlook 2013 | Outlook 2016

客户端可以在初始化过程中注册通讯簿或消息存储通知。

无论通讯簿提供商是否支持,MAPI 都支持在通讯簿上发出通知。 对消息存储通知的支持取决于特定的消息存储提供程序。 若要确定特定消息存储提供程序是否支持通知,检查其PR_STORE_SUPPORT_MASK (PidTagStoreSupportMask) 属性。 如果消息存储支持通知,则将设置STORE_NOTIFY_OK位。

通过调用建议源对象的 建议 方法注册通知。 许多对象实现 建议 ,客户端可以通过多种方式向这些对象注册。

注册通知

  1. 创建 MAPI 建议接收器对象并递增其引用计数。

  2. 如果适用,请调用 HrThisThreadAdviseSink 以创建包装原始建议接收器的建议接收器对象,然后释放原始建议接收器。

  3. 调用以下 建议 方法之一以完成注册:

  1. 缓存从 建议返回的连接号。

  2. 如果使用包装的建议接收器,请释放它。 注册包装的建议接收器后,不再需要它。

通过调用 IMAPISession::Advise ,可以注册整个会话上的关键错误通知或针对单个对象的各种通知。 当另一个使用共享会话的客户端调用 IMAPISession::Logoff 方法时,会话会向登录到共享会话的客户端发送严重错误通知。 若要注册会话通知,请为条目标识符参数传递 NULL。 若要在单个对象上注册通知,请传递对象的条目标识符。 IMAPISession 方法将调用转发到相应的服务提供程序,由入口标识符的 MAPIUID 部分确定。 调用 IMAPISession::Advise 注册对象通知比调用服务提供商的 Advise 方法更简单。

向通讯簿注册类似于向会话注册。 若要注册通讯簿中的严重错误通知,请为条目标识符传递 NULL。 若要在特定通讯簿对象上注册通知,请指定相应的条目标识符和感兴趣的事件。 请注意,许多通讯簿提供程序不支持对单个对象发出通知。 相反,它们支持对其内容和层次结构表的表通知。

建议调用成功返回后,立即释放使用 HrAllocAdviseSink 实现或创建的建议接收器。 这是因为服务提供商可以在建议调用之后但在发出“未进一次调用”之前释放你的建议接收器。 为建议源提供了指向建议接收器的指针,并且此建议接收器上的引用计数已递增后,最好释放它,除非你长期使用它。

注意

在发出 Unadvise 调用之前,不会释放表示有效咨询注册的所有连接号码。