关闭消息存储提供程序
适用于:Outlook 2013 | Outlook 2016
如果提供程序是消息存储提供程序,则可以通过以下方式之一将其关闭:
当客户端或 MAPI 后台处理程序调用 IMsgStore::StoreLogoff 时。 使用 StoreLogoff 关闭消息存储提供程序会导致关闭以有序且受控的方式发生。
当客户端调用 IMAPISession::Logoff 时。
IMsgStore::StoreLogoff 的实现应首先调用 IMAPISupport::StoreLogoffTransports 以通知 MAPI 它正在关闭,指示应注销任何相关的传输提供程序。 当 IMsgStore::StoreLogoff 返回时,其调用方将调用消息存储的 IUnknown::Release 方法。 通过调用支持对象的 IUnknown::Release 方法实现此 Release 方法。
MAPI 在实现消息存储的 IUnknown::Release 中执行以下任务:
删除消息存储提供程序注册的所有 MAPIUID 结构。
从状态表中删除消息存储提供程序的行。
调用 IMSLogon::Logoff 以释放所有打开的对象、子对象和状态对象。
调用 IUnknown::Release 以释放消息存储提供程序的登录对象。
某些客户端可能会省略对 IMsgStore::StoreLogoff 的调用,从而通过调用消息存储的 IUnknown::Release 方法启动消息存储提供程序的关闭。 在这些情况下,在没有调用 StoreLogoff 的情况下关闭的顺序和控制程度较低。 编写消息存储的 Release 方法以处理此可能性,并跟踪是否已调用 IMAPISupport::StoreLogoffTransports 。 在关闭过程中,必须调用一次 StoreLogoffTransports。 如果在 Release 方法中检测到 尚未调用 StoreLogoffTransports ,请使用 LOGOFF_ABORT 标志调用它。