关闭服务提供商
适用于:Outlook 2013 | Outlook 2016
当客户端调用 IMAPISession::Logoff 方法以结束会话并关闭所有活动服务提供程序时,MAPI 依次调用以下方法:
适用于通讯簿提供程序的 IABLogon::Logoff。
消息存储提供程序的 IMSLogon::Logoff。
传输提供程序的 IXPLogon::TransportLogoff。
这些方法具有类似的实现。 注销方法执行的main任务如下所示:
释放所有打开的对象,包括子对象和状态对象。
调用支持对象的 IUnknown::Release 方法以递减其引用计数。
删除提供程序的所有已注册 MAPIUID 结构。
删除状态表中提供程序的行。
执行与清理资源相关的任何任务,如下所示:
终止与远程服务器的连接。
递减登录对象上的引用计数。
从提供程序存储的登录对象列表中删除登录对象。
在调试模式下,发出跟踪以查找已泄漏内存的对象。
当 logoff 方法返回时,MAPI 将调用以下内容:
登录对象的 IUnknown::Release 方法。
提供程序对象的 Shutdown 方法用于执行任何最终清理任务。 根据提供程序的类型,将调用以下方法之一:
通讯簿提供程序的 IABProvider::Shutdown
IMSProvider::关闭 消息存储提供程序
传输提供程序的 IXPProvider::Shutdown
提供程序对象的 IUnknown::Release 方法。
如果提供程序是消息存储区,则对 IMsgStore::StoreLogoff 的 客户端调用也会启动关闭过程。 StoreLogoff 关闭一个特定的消息存储提供程序,对会话没有影响。 使用此方法只能关闭消息存储提供程序;没有明确的方法来关闭特定的通讯簿或传输提供程序。 有关如何响应 StoreLogoff 调用的信息,请参阅 关闭消息存储提供程序。
当 MAPI 调用 Win32 API 函数 FreeLibrary 时,提供程序的 DLL 将被卸载,该调用是在最后一个活动客户端调用 MAPIUninitialize 之后进行的。 此时,服务提供商已完成关闭。