プライマリ ID とプロバイダー ID の取得

適用対象: Outlook 2013 | Outlook 2016

サービス プロバイダー (通常はアドレス帳プロバイダー) には、さまざまな状況でセッションを表すために使用できる ID を指定するオプションがあります。 プロバイダーの ID については、次の 3 つのプロパティで説明します。

これらのプロパティは、対応する ID オブジェクト (通常はメッセージング ユーザー) のエントリ識別子、表示名、および検索キーに設定されます。 ID を提供するプロバイダーは、PR_RESOURCE_FLAGS (PidTagResourceFlags) プロパティで STATUS_PRIMARY_IDENTITY フラグも設定します。

ニーズに応じて、特定のプロバイダーの ID またはセッションのプライマリ ID を使用する場合があります。 プロバイダーの ID は、表示目的や、 PR_RESOURCE_PATH (PidTagResourcePath) などのプロパティを取得するためにも使用できます。 PR_RESOURCE_PATHが設定されている場合は、プロバイダーによって使用または作成されたファイルへのパスが含まれます。 セッションのユーザーに関連するファイルを検索する場合は、プライマリ ID を指定するプロバイダーの PR_RESOURCE_PATH プロパティを取得します。

特定のプロバイダーの ID を取得するには

  1. IMAPISession::GetStatusTable を呼び出して、状態テーブルにアクセスします。

  2. SPropertyRestriction 構造体を使用して、PR_PROVIDER_DLL_NAME (PidTagProviderDllName) 列と指定したプロバイダーの名前を一致させる制限を構築します。

  3. IMAPITable::FindRow を呼び出して、プロバイダーの行を見つけます。 プロバイダーの ID が存在する場合は、 PR_IDENTITY_ENTRYID 列に格納されます。

セッションのプライマリ ID を取得するには

  • IMAPISession::QueryIdentity を呼び出します。 QueryIdentity は、状態テーブルのいずれかの行に対して、PR_RESOURCE_FLAGS列に STATUS_PRIMARY_IDENTITY 値が存在するセッション ID を基にします。 この値が設定された状態行がない場合、 QueryIdentity は 、3 つのPR_IDENTITY プロパティを設定する最初のサービス プロバイダーに ID を割り当てます。 サービス プロバイダーが ID を提供していない場合、 QueryIdentity は MAPI_W_NO_SERVICEを返します。 この場合は、プライマリ ID として機能する汎用ユーザーを表す文字列を作成する必要があります。

セッションのプライマリ ID を明示的に設定するには