IABContainer::ResolveNames
適用対象: Outlook 2013 | Outlook 2016
1 つ以上の受信者エントリの名前解決を実行します。
HRESULT ResolveNames(
LPSPropTagArray lpPropTagArray,
ULONG ulFlags,
LPADRLIST lpAdrList,
LPFlagList lpFlagList
);
パラメーター
lpPropTagArray
[in]プロバイダーから返される ADRLIST 構造体に含めるプロパティを説明するプロパティ タグの配列を含む SPropTagArray 構造体へのポインター。 プロバイダーの既定のプロパティ セットを要求するには、 lpPropTagArray パラメーターに NULL を渡します。
ulFlags
[in]返される文字列内のテキストの型を制御するフラグのビットマスク。 次のフラグを設定できます。
EMS_AB_ADDRESS_LOOKUP
正確なプロキシ アドレスの一致のみが見つかります。部分一致は無視されます。 このフラグは、Exchange アドレス帳プロバイダーによってのみサポートされます。
MAPI_CACHE_ONLY
名前解決の実行には、オフライン アドレス帳のみが使用されます。 たとえば、このフラグを使用すると、クライアント アプリケーションがキャッシュされた交換モードでグローバル アドレス一覧 (GAL) を開き、クライアントとサーバー間のトラフィックを作成せずにキャッシュからそのアドレス帳のエントリにアクセスできます。 このフラグは、Exchange アドレス帳プロバイダーによってのみサポートされます。
MAPI_UNICODE
返される文字列プロパティは Unicode 形式です。 MAPI_UNICODE フラグが設定されていない場合、文字列は ANSI 形式です。
lpAdrList
[in, out]入力時に、解決する受信者のリストを含む ADRLIST 構造体へのポインター。 出力時に、解決された名前を含む ADRLIST 構造体へのポインター。
lpFlagList
[in, out]フラグの配列へのポインター。lpAdrList パラメーターの ADRENTRY 構造体に対応する各フラグは、受信者の名前解決操作の状態を提供します。 lpFlagList パラメーターのフラグは、lpAdrList のエントリと同じ順序です。 次のフラグを設定できます。
MAPI_AMBIGUOUS
対応する受信者は解決されましたが、一意のエントリ識別子には解決されていません。 他のコンテナーでは、この受信者を解決しないでください。
MAPI_RESOLVED
対応する受信者が一意のエントリ識別子に解決されました。 他のコンテナーでは、この受信者を解決しないでください。
MAPI_UNRESOLVED
対応するエントリが解決されていません。 他のコンテナーでは、この受信者の解決を試みる必要があります。
戻り値
S_OK
名前解決プロセスが成功しました。
MAPI_E_BAD_CHARWIDTH
MAPI_UNICODE フラグが設定され、実装で Unicode がサポートされていないか、MAPI_UNICODEが設定されておらず、実装で Unicode のみがサポートされています。
MAPI_E_NO_SUPPORT
アドレス帳プロバイダーでは、このメソッドを使用した一括名前解決はサポートされていません。
注釈
ResolveNames メソッドは、lpAdrList パラメーター内のエントリの配列から、未解決の受信者をこのアドレス帳コンテナー内の受信者と照合しようとします。 通常、未解決の受信者には 、PR_DISPLAY_NAME (PidTagDisplayName) プロパティと、場合によっては他のいくつかのプロパティのみが含まれます。 未解決の受信者には PR_ENTRYID (PidTagEntryId) プロパティがないため、 lpFlagList パラメーター内の対応するフラグは MAPI_UNRESOLVED に設定されます。 逆に、解決された受信者には、少なくとも PR_ENTRYID プロパティと 、PR_EMAIL_ADDRESS (PidTagEmailAddress)、 PR_DISPLAY_NAME、 PR_ADDRTYPE (PidTagAddressType) などの他のいくつかのプロパティが常に含まれます。
名前解決は、通常、クライアントが IAddrBook::ResolveName メソッドを呼び出すと開始されます。 Outlook MAPI は、PR_AB_SEARCH_PATH (PidTagAbSearchPath) プロパティで指定されたアドレス帳検索パスに含まれる各アドレス帳コンテナーの ResolveNames メソッドを呼び出すことによって応答します。 lpAdrList パラメーターのエントリには、エントリが検索パスの前に表示されるため、MAPI で ResolveNames が既に呼び出されているコンテナー内にあるため、既に解決された受信者が含まれます。
各コンテナーは、受信者の表示名といずれかのエントリの表示名を照合することで、未解決のエントリの解決を試みます。 一意の一致が見つかった場合、ResolveNames は、lpPropTagArray パラメーターに含まれる PR_ENTRYID プロパティとその他のプロパティを、発信 ADRLIST 構造体の対応するエントリに追加します。 次に、ResolveNames は lpFlagList パラメーターのエントリをMAPI_RESOLVEDに設定します。 PR_ENTRYID プロパティに格納されるエントリ識別子は、短期または長期にすることができます。
検索パス内のすべてのコンテナーが名前解決プロセスを試みた後、MAPI は、可能であればダイアログ ボックスを開き、残りの競合を解決するためのヘルプをユーザーに求めます。
クライアントは、IMessage::ModifyRecipients メソッドの呼び出しで、返された ADRLIST 構造体を使用することもできます。
実装に関するメモ
ResolveNames メソッドで名前解決をサポートする必要はありません。 代わりに、またはさらに、 PR_ANR (PidTagAnr) プロパティの制限を使用してサポートできます。 名前解決の PR_ANR 制限に依存する場合は、MAPI_E_NO_SUPPORTを返すことができます。 For more information, see Implementing Name Resolution.
lpFlagList パラメーターの受信者のフラグ エントリを、受信者がコンテナーの受信者と一致しない場合にMAPI_UNRESOLVEDするように設定します。
受信者が複数の受信者と一致する場合は、フラグを MAPI_AMBIGUOUS に設定し、 ADRENTRY 構造を変更しないでください。
MAPI では、メッセージの受信者リストに含まれる受信者に対して特定のプロパティが必要です。 名前解決プロセスの一部として ADRENTRY 構造体に含めるか、 MAPI が IAddrBook::P repareRecips および IMAPISupport::ExpandRecips メソッドの呼び出しでそれらを要求するのを待つことができます。 解決されたすべての受信者の ADRENTRY 構造体に次のプロパティを含めることで、これらの余分な呼び出しを排除し、パフォーマンスを向上させることができます。
PR_ADDRTYPE
PR_DISPLAY_NAME
PR_EMAIL_ADDRESS
PR_ENTRYID
PR_OBJECT_TYPE (PidTagObjectType)
PR_SEARCH_KEY (PidTagSearchKey)
PR_TRANSMITABLE_DISPLAY_NAME (PidTagTransmittableDisplayName)
lpPropTagArray パラメーターのプロパティの一部が使用できない場合 (通常、コンテナー エントリがプロパティをサポートせず、ADRLIST 構造体の受信者の ADRENTRY メンバーに含まれていないため)、使用できない各プロパティのプロパティの種類を PT_ERROR に設定します。
解決された受信者の ADRENTRY 構造体からプロパティを削除しないでください。
ADRENTRY 構造体を変更せずに置き換える必要がある場合は、最初に MAPIFreeBuffer 関数を呼び出して元の ADRENTRY 構造体を解放してから、MAPIAllocateBuffer で置き換える ADRENTRY 構造体を割り当てます。