MAPI 服务提供商
适用于:Outlook 2013 | Outlook 2016
有三种常见类型的服务提供商:
通讯簿提供程序。
消息存储提供程序。
传输提供程序。
通讯簿和消息存储提供程序有许多相似之处。 他们向 MAPI 注册一个唯一标识符,用于为其对象构造条目标识符。 它们提供客户端可以访问和操作的对象和属性的层次结构。 对于容器对象,它们支持层次结构表和内容表。 它们支持针对这些表和单个对象(可选)的事件通知,以便可以通知客户端在会话期间发生的更改。 当操作变得漫长时,它们可以显示进度指示器,以通知用户操作的状态。 客户端可以使用 IAddrBook:IMAPIProp 和 IMAPISession :IUnknown 接口,或者直接使用下表中的某个服务提供程序接口,间接通过 MAPI 与通讯簿和消息存储提供程序进行通信。
通讯簿提供程序接口 | 消息存储提供程序接口 |
---|---|
IABContainer : IMAPIContainer |
IMsgStore : IMAPIProp |
IDistList : IMAPIContainer |
IMAPIFolder : IMAPIContainer |
IMailUser : IMAPIProp |
IMessage : IMAPIProp |
IAttach : IMAPIProp |
传输提供程序在与 MAPI 和客户端通信的方式上不同于通讯簿和消息存储提供程序。 传输提供程序通常等待 MAPI 提示他们输入信息,而不是启动通信。 与其他提供程序不同,传输提供程序不支持客户端经常访问的各种对象和表。 但是,它们和所有服务提供程序一样支持状态对象,并在状态表中发布其属性。 通讯簿和消息存储提供程序调用 IMAPISupport::SetProviderUID 方法来注册唯一标识符以构造其入口标识符,而传输提供程序调用 IXPLogon::AddressTypes 方法来注册唯一标识符,以及用于承担特定消息传递责任的地址类型。
服务提供商应具有三个头文件:一个公共头文件和两个内部文件。 使用公共头文件进行配置和记录属性及其值。 在其中一个内部头文件中包括所有必要的公共 MAPI 标头;此头文件应包含在所有服务提供商源文件中。 使用其他内部文件定义资源标识符。
通讯簿、消息存储和传输提供程序执行以下任务:
提供入口点函数。
提供提供程序和登录对象来处理登录和初始化。
如果提供程序属于消息服务,请提供消息服务入口点函数。
通过实现属性表来支持配置。
实现状态对象并支持状态表。
句柄关闭。