IABLogon::OpenEntry
適用対象: Outlook 2013 | Outlook 2016
コンテナー、メッセージング ユーザー、または配布リストを開き、インターフェイス実装へのポインターを返してさらなるアクセスを提供します。
HRESULT OpenEntry(
ULONG cbEntryID,
LPENTRYID lpEntryID,
LPCIID lpInterface,
ULONG ulFlags,
ULONG FAR * lpulObjType,
LPUNKNOWN FAR * lppUnk
);
パラメーター
cbEntryID
[in] lpEntryID パラメーターによって指されるエントリ識別子のバイト数。
lpEntryID
[in]開くコンテナー、メッセージング ユーザー、または配布リストのエントリ識別子へのポインター。
lpInterface
[in]オープン オブジェクトへのアクセスに使用するインターフェイスを表すインターフェイス識別子 (IID) へのポインター。 NULL を渡すと、オブジェクトの標準インターフェイスの識別子が返されます。 コンテナーの場合、標準インターフェイスは IABContainer : IMAPIContainer です。 アドレス帳オブジェクトの標準インターフェイスは 、IDistList : 配布リストの場合は IMAPIContainer 、メッセージング ユーザーの 場合は IMailUser : IMAPIProp です 。
ulFlags
[in]オブジェクトの開き方を制御するフラグのビットマスク。 次のフラグを設定できます。
MAPI_BEST_ACCESS
ユーザーに許可されている最大ネットワーク アクセス許可と最大クライアント アプリケーション アクセス権を使用して、オブジェクトを開くように要求します。 たとえば、クライアントに読み取り/書き込みアクセス許可がある場合、オブジェクトは読み取り/書き込みアクセス許可で開く必要があります。クライアントに読み取り専用アクセス許可がある場合は、オブジェクトを読み取り専用アクセス許可で開く必要があります。
MAPI_DEFERRED_ERRORS
呼び出し元のクライアントがオブジェクトに完全にアクセスする前に、 OpenEntry メソッドが正常に返されるようにします。 オブジェクトにアクセスしない場合、後続のオブジェクト呼び出しを行うとエラーが発生する可能性があります。
MAPI_MODIFY
読み取り/書き込みアクセス許可を要求します。 既定では、オブジェクトは読み取り専用アクセスで開かれます。クライアントは、読み取り/書き込みアクセス許可が付与されていると想定しないでください。
lpulObjType
[out]開いているオブジェクトの型へのポインター。
lppUnk
[out]開いているオブジェクトへのポインターへのポインター。
注釈
S_OK
オブジェクトが正常に開かれました。
MAPI_E_NO_ACCESS
ユーザーがオブジェクトを開くには十分なアクセス許可を持っていないか、読み取り/書き込みアクセス許可を持つ読み取り専用オブジェクトを開こうとしました。
MAPI_E_NOT_FOUND
lpEntryID で指定されたエントリ識別子は、オブジェクトを表しません。
MAPI_E_UNKNOWN_ENTRYID
lpEntryID パラメーターのエントリ識別子は、アドレス帳プロバイダーによって認識される形式ではありません。
MAPI は OpenEntry メソッドを呼び出して、コンテナー、メッセージング ユーザー、または配布リストを開きます。
実装に関するメモ
MAPI が OpenEntry メソッドを呼び出す前に、 lpEntryID パラメーターのエントリ識別子が別のプロバイダーではなく、自分に属していると判断します。 MAPI は、エントリ識別子の MAPIUID 構造体を、起動時に IMAPISupport::SetProviderUID メソッドを呼び出して登録した MAPIUID と照合することでこれを行います。
ulFlags パラメーターに MAPI_MODIFY または MAPI_BEST_ACCESS フラグが設定されていない限り、オブジェクトを読み取り専用として開きます。 要求されたオブジェクトの変更を許可しない場合は、オブジェクトを一切開かないようにし、MAPI_E_NO_ACCESSを返します。
MAPI が lpEntryID に NULL を渡す場合は、コンテナー階層内でルート コンテナーを開きます。
開くように求められるオブジェクトは、別のプロバイダーからコピーされたオブジェクトである可能性があります。 この場合、 PR_TEMPLATEID (PidTagTemplateid) プロパティがサポートされます。 オブジェクトがこのプロパティをサポートしている場合は、IMAPISupport::OpenTemplateID メソッドを呼び出して、外部プロバイダーのこのエントリのコードにバインドし、lpTemplateID パラメーターにPR_TEMPLATEIDを渡し、ulTemplateFlags パラメーターで 0 を渡します。 IMAPISupport::OpenTemplateID は、外部プロバイダーの IABLogon::OpenTemplateID メソッドの呼び出しで、この情報を外部プロバイダーに渡します。 IMAPISupport::OpenTemplateID でエラーが発生した場合は、通常、外部プロバイダーが使用できないか、プロファイルに含まれていないため、バインドされていないエントリを読み取り専用として扱って続行してください。 外部アドレス帳エントリを開く方法の詳細については、「 ホスト アドレス帳プロバイダーとしての機能」を参照してください。