MAPI 主标识

适用于:Outlook 2013 | Outlook 2016

大多数 MAPI 会话都有一个提供会话主标识的特定服务提供程序。 通常,它是通讯簿提供程序,它通过其消息用户对象或通讯组列表之一提供标识。 事实上,MAPI 建议包含通讯簿提供程序的消息服务将其对象之一用于主要标识。 当属于消息服务的服务提供商提供主标识时,消息服务中的所有其他服务提供程序共享此标识。

MAPISVC。INF 配置文件在消息服务和服务提供程序级别都有与标识相关的条目。 消息服务部分必须包含一个条目,指出服务是否可以提供主标识;仅当提供程序可以提供标识时,服务提供商部分才包含类似的条目。

下表列出了 MAPISVC 的消息服务和服务提供程序部分中显示的条目。INF 文件。

主要标识供应商 PR_RESOURCE_FLAGS设置
消息服务
SERVICE_PRIMARY_IDENTITY
不是消息服务
SERVICE_NO_PRIMARY_IDENTITY
服务提供商
STATUS_PRIMARY_IDENTITY

尽管多个消息服务可以声明其提供会话的主要标识的能力,但仅选择一个消息服务来执行此操作。 可能会发生此选择:

  • 创建配置文件时。

  • 当客户端调用 IMsgServiceAdmin::SetPrimaryIdentity 以显式建立特定的消息服务作为会话标识的提供程序时。 有关详细信息。 请参阅 IMsgServiceAdmin::SetPrimaryIdentity

创建配置文件时,MAPI 将指定要配置的第一个消息服务,该服务包括在其 PR_RESOURCE_FLAGS 中设置了STATUS_PRIMARY_IDENTITY标志的提供程序 (PidTagResourceFlags) 属性来提供主标识。 在指定的消息服务中,选择使用此资源标志集配置的第一个提供程序来为服务提供标识。 为指定服务中的所有其他提供程序和配置文件中的其他消息服务清除STATUS_PRIMARY_IDENTITY标志。 如果随时从配置文件中删除提供主标识的提供程序,MAPI 会将角色分配给要配置的下一个提供程序,该提供程序可以提供标识。 这由 MAPISVC.INF 中提供程序的 节中条目的外观 PR_RESOURCE_FLAGS=STATUS_PRIMARY_IDENTITY 决定。

当客户端调用消息服务的 IMsgServiceAdmin::SetPrimaryIdentity 方法时,它会为目标服务中的服务提供程序指定 MAPIUID。 有关详细信息,请参阅 MAPIUID分配 MAPIUID 表示的服务提供程序为消息服务和会话提供主标识,服务中的其他所有提供程序将共享此标识。

消息服务中负责提供主标识的每个提供程序都会更新其状态表中的行,以包含以下属性。

主标识属性 设置为
PR_IDENTITY_DISPLAY (PidTagIdentityDisplay)
提供主要标识的 对象的显示名称。
PR_IDENTITY_SEARCH_KEY (PidTagIdentitySearchKey)
搜索提供主标识的对象的键。
PR_IDENTITY_ENTRYID (PidTagIdentityEntryId)
提供主标识的 对象的条目标识符。

检索提供主标识的对象的条目标识符

  • 调用 IMAPISession::QueryIdentity 方法。 有关详细信息,请参阅 IMAPISession::QueryIdentityQueryIdentity 在其 PR_RESOURCE_FLAGS 列中搜索包含值STATUS_PRIMARY_IDENTITY行的状态表,并返回相应的 PR_IDENTITY_ENTRYID 作为主标识的条目标识符。