关闭服务提供商

适用于:Outlook 2013 | Outlook 2016

当客户端调用 IMAPISession::Logoff 方法以结束会话并关闭所有活动服务提供程序时,MAPI 依次调用以下方法:

这些方法具有类似的实现。 注销方法执行的main任务如下所示:

  • 释放所有打开的对象,包括子对象和状态对象。

  • 调用支持对象的 IUnknown::Release 方法以递减其引用计数。

  • 删除提供程序的所有已注册 MAPIUID 结构。

  • 删除状态表中提供程序的行。

  • 执行与清理资源相关的任何任务,如下所示:

    • 终止与远程服务器的连接。

    • 递减登录对象上的引用计数。

    • 从提供程序存储的登录对象列表中删除登录对象。

    • 在调试模式下,发出跟踪以查找已泄漏内存的对象。

当 logoff 方法返回时,MAPI 将调用以下内容:

  • 登录对象的 IUnknown::Release 方法。

  • 提供程序对象的 Shutdown 方法用于执行任何最终清理任务。 根据提供程序的类型,将调用以下方法之一:

  • 提供程序对象的 IUnknown::Release 方法。

如果提供程序是消息存储区,则对 IMsgStore::StoreLogoff 的 客户端调用也会启动关闭过程。 StoreLogoff 关闭一个特定的消息存储提供程序,对会话没有影响。 使用此方法只能关闭消息存储提供程序;没有明确的方法来关闭特定的通讯簿或传输提供程序。 有关如何响应 StoreLogoff 调用的信息,请参阅 关闭消息存储提供程序

当 MAPI 调用 Win32 API 函数 FreeLibrary 时,提供程序的 DLL 将被卸载,该调用是在最后一个活动客户端调用 MAPIUninitialize 之后进行的。 此时,服务提供商已完成关闭。

另请参阅

MAPI 服务提供商