プライマリ ID とプロバイダー ID の取得
適用対象: Outlook 2013 | Outlook 2016
サービス プロバイダー (通常はアドレス帳プロバイダー) には、さまざまな状況でセッションを表すために使用できる ID を指定するオプションがあります。 プロバイダーの ID については、次の 3 つのプロパティで説明します。
PR_IDENTITY_ENTRYID (PidTagIdentityEntryId)
PR_IDENTITY_DISPLAY (PidTagIdentityDisplay)
PR_IDENTITY_SEARCH_KEY (PidTagIdentitySearchKey)
これらのプロパティは、対応する ID オブジェクト (通常はメッセージング ユーザー) のエントリ識別子、表示名、および検索キーに設定されます。 ID を提供するプロバイダーは、PR_RESOURCE_FLAGS (PidTagResourceFlags) プロパティで STATUS_PRIMARY_IDENTITY フラグも設定します。
ニーズに応じて、特定のプロバイダーの ID またはセッションのプライマリ ID を使用する場合があります。 プロバイダーの ID は、表示目的や、 PR_RESOURCE_PATH (PidTagResourcePath) などのプロパティを取得するためにも使用できます。 PR_RESOURCE_PATHが設定されている場合は、プロバイダーによって使用または作成されたファイルへのパスが含まれます。 セッションのユーザーに関連するファイルを検索する場合は、プライマリ ID を指定するプロバイダーの PR_RESOURCE_PATH プロパティを取得します。
特定のプロバイダーの ID を取得するには
IMAPISession::GetStatusTable を呼び出して、状態テーブルにアクセスします。
SPropertyRestriction 構造体を使用して、PR_PROVIDER_DLL_NAME (PidTagProviderDllName) 列と指定したプロバイダーの名前を一致させる制限を構築します。
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 を明示的に設定するには
- IMsgServiceAdmin::SetPrimaryIdentity を呼び出します。 ターゲット サービス プロバイダーの MAPIUID を渡します。