IABLogon::Advise

适用于:Outlook 2013 | Outlook 2016

注册调用方以接收影响容器、消息用户或通讯组列表的指定事件的通知。

HRESULT Advise(
  ULONG cbEntryID,
  LPENTRYID lpEntryID,
  ULONG ulEventMask,
  LPMAPIADVISESINK lpAdviseSink,
  ULONG FAR * lpulConnection
);

参数

cbEntryID

[in] lpEntryID 参数指向的条目标识符中的字节计数。

lpEntryID

[in]指向应生成通知的对象条目标识符的指针。

ulEventMask

[in]值的位掩码,指示调用方感兴趣的通知事件类型,并且应包含在注册中。 有一个相应的 NOTIFICATION 结构与每种类型的事件相关联,用于保存有关该事件的信息。 下表列出了 ulEventMask 参数的有效值以及与每个值关联的结构。

通知事件类型 相应的 NOTIFICATION 结构
fnevCriticalError
ERROR_NOTIFICATION
fnevObjectCreated
OBJECT_NOTIFICATION
fnevObjectDeleted
OBJECT_NOTIFICATION
fnevObjectModified
OBJECT_NOTIFICATION
fnevObjectCopied
OBJECT_NOTIFICATION
fnevObjectMoved
OBJECT_NOTIFICATION

lpAdviseSink

[in]指向建议接收器对象的指针,用于接收后续通知。

lpulConnection

[out]指向表示通知注册的非零值的指针。

返回值

S_OK

通知注册成功。

MAPI_E_INVALID_ENTRYID

在 lpEntryID 参数中传递的条目标识符的格式不合适。

MAPI_E_NO_SUPPORT

通讯簿提供程序不支持通知,可能是因为它不允许对其对象进行更改。

MAPI_E_UNKNOWN_ENTRYID

通讯簿提供程序无法处理 在 lpEntryID 中传递的条目标识符。

备注

通讯簿提供程序实现 IABLogon::Advise 方法,以注册调用方,使其在其其中一个容器中的对象发生更改时收到通知。 调用方可以注册有关消息传送用户、通讯组列表或整个容器的通知。

客户端通常调用 IAddrBook::Advise 方法来注册通讯簿通知。 然后,MAPI 调用通讯簿提供程序的 Advise 方法,该提供程序负责 由 lpEntryID 中的条目标识符表示的对象。

当更改 ulEventMask 中表示的类型的指示对象时,将调用 lpAdviseSink 指向的建议接收器的 OnNotify 方法。 在 NOTIFICATION 结构中传递给 OnNotify 例程的数据描述该事件。

针对实现者的说明

无论是否通过 MAPI 的帮助,都可以支持通知。 MAPI 有三种支持对象方法可帮助服务提供商实现通知:

如果选择使用 MAPI 支持方法,请在调用 Advise 方法时调用 Subscribe 并释放 lpAdviseSink 指针。

如果选择自行支持通知,请调用 lpAdviseSink 参数表示的建议接收器的 AddRef 方法,以保留此指针的副本。 保留此副本,直到调用 IABLogon::Unadvise 方法以取消注册。

无论支持通知的方式如何,都向通知注册分配一个非零连接号,并在 lpulConnection 参数中返回它。 在调用 Unadvise 方法之前,请勿释放此连接号。

给调用方的说明

lpAdviseSink 参数中传递给 Advise 的建议接收器指针可以指向已创建的对象,或者 MAPI 已通过 HrThisThreadAdviseSink 函数创建的对象。 如果支持多个执行线程,并希望确保对 OnNotify 方法的后续调用在适当的线程上发生,则可能需要使用 HrThisThreadAdviseSink

准备好在调用建议后和调用 Unadvise 之前随时释放建议接收器对象。 因此,你应该在 建议 返回后释放建议接收器对象,除非你有特定的长期用途。

有关通知过程的详细信息,请参阅 MAPI 中的事件通知。 有关如何使用 IMAPISupport 方法支持通知的信息,请参阅 支持事件通知。 有关多线程处理和 MAPI 的详细信息,请参阅 MAPI 中的线程处理。

另请参阅

HrThisThreadAdviseSink

IABLogon::Unadvise

IMAPIAdviseSink::OnNotify

通知

IABLogon : IUnknown