MAPI プライマリ ID

適用対象: Outlook 2013 | Outlook 2016

ほとんどの MAPI セッションには、セッションのプライマリ ID を提供する特定のサービス プロバイダーがあります。 通常、これはアドレス帳プロバイダーであり、メッセージング ユーザー オブジェクトまたは配布リストのいずれかを介して ID を提供します。 実際、MAPI では、アドレス帳プロバイダーを含むメッセージ サービスで、プライマリ ID のオブジェクトの 1 つを使用することをお勧めします。 メッセージ サービスに属するサービス プロバイダーがプライマリ ID を提供すると、メッセージ サービス内の他のすべてのサービス プロバイダーがこの ID を共有します。

MAPISVC。INF 構成ファイルには、メッセージ サービスとサービス プロバイダー レベルの両方で ID に関連するエントリがあります。 メッセージ サービス セクションには、サービスがプライマリ ID を提供できるかどうかを示すエントリを含める必要があります。サービス プロバイダー セクションには、プロバイダーが ID を指定できる場合にのみ、同様のエントリが含まれます。

次の表に、MAPISVC のメッセージ サービスおよびサービス プロバイダー セクションに表示されるエントリの一覧を示します。INF ファイル。

プライマリ ID サプライヤー PR_RESOURCE_FLAGS設定
メッセージ サービス
SERVICE_PRIMARY_IDENTITY
メッセージ サービスではありません
SERVICE_NO_PRIMARY_IDENTITY
サービス プロバイダー
STATUS_PRIMARY_IDENTITY

複数のメッセージ サービスでセッションのプライマリ ID を提供する機能を宣言できますが、これを行うには 1 つのメッセージ サービスのみが選択されます。 この選択は、次の場合に発生する可能性があります。

  • プロファイルが作成されたとき。

  • クライアントが IMsgServiceAdmin::SetPrimaryIdentity を呼び出して、セッション ID のプロバイダーとして特定のメッセージ サービスを明示的に確立する場合。 詳細はこちら。 「IMsgServiceAdmin::SetPrimaryIdentity」を参照してください。

プロファイルを作成すると、MAPI は、プライマリ ID を指定するPR_RESOURCE_FLAGS (PidTagResourceFlags) プロパティにSTATUS_PRIMARY_IDENTITY フラグが設定されたプロバイダーを含む、構成する最初のメッセージ サービスを指定します。 指定されたメッセージ サービス内で、このリソース フラグ セットを使用して構成する最初のプロバイダーが、サービスの ID を提供するように選択されます。 STATUS_PRIMARY_IDENTITY フラグは、指定されたサービス内の他のすべてのプロバイダーと、プロファイル内の他のメッセージ サービスに対してクリアされます。 プライマリ ID を提供するプロバイダーがプロファイルから削除されると、MAPI は、ID を提供できる次のプロバイダーにロールを割り当てます。 これは、MAPISVC.INF のプロバイダーのセクション内のエントリの外観 PR_RESOURCE_FLAGS=STATUS_PRIMARY_IDENTITY によって決まります。

クライアントは、メッセージ サービスの IMsgServiceAdmin::SetPrimaryIdentity メソッドを呼び出すときに、ターゲット サービス内のサービス プロバイダーの MAPIUID を指定します。 詳細については、「 MAPIUID」を参照してください。 MAPIUID で表されるサービス プロバイダーは、メッセージ サービスとセッションのプライマリ ID を指定するために割り当てられ、サービス内の他のすべてのプロバイダーがこの ID を共有します。

プライマリ ID の指定を担当するメッセージ サービス内のすべてのプロバイダーは、状態テーブル内の行を更新して、次のプロパティを含めます。

プライマリ ID プロパティ 設定値
PR_IDENTITY_DISPLAY (PidTagIdentityDisplay)
プライマリ ID を指定するオブジェクトの表示名。
PR_IDENTITY_SEARCH_KEY (PidTagIdentitySearchKey)
プライマリ ID を指定するオブジェクトの検索キー。
PR_IDENTITY_ENTRYID (PidTagIdentityEntryId)
プライマリ ID を指定するオブジェクトのエントリ識別子。

プライマリ ID を指定するオブジェクトのエントリ識別子を取得するには

  • IMAPISession::QueryIdentity メソッドを呼び出します。 詳細については、「 IMAPISession::QueryIdentity」を参照してください。 QueryIdentity は、 PR_RESOURCE_FLAGS列に STATUS_PRIMARY_IDENTITY値を含む行の状態テーブルを検索し、対応する PR_IDENTITY_ENTRYID をプライマリ ID のエントリ識別子として返します。