IMAPIContainer::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]開くオブジェクトのエントリ識別子へのポインター。 lpEntryID が NULL に設定されている場合、コンテナーの階層内の最上位コンテナーが開きます。
lpInterface
[in]オブジェクトへのアクセスに使用するインターフェイスを表すインターフェイス識別子 (IID) へのポインター。 NULL を渡すと、オブジェクトの標準インターフェイスの識別子が返されます。 メッセージの場合、標準インターフェイスは IMAPIMessageSite : IUnknown です。フォルダーの場合は、 IMAPIFolder : IMAPIContainer です。 アドレス帳オブジェクトの標準インターフェイスは 、IDistList : 配布リストの場合は IMAPIContainer 、メッセージング ユーザーの 場合は IMailUser : IMAPIProp です 。
ulFlags
[in]オブジェクトの開き方を制御するフラグのビットマスク。 次のフラグを設定できます。
MAPI_BEST_ACCESS
ユーザーに許可されている最大ネットワーク アクセス許可と最大クライアント アプリケーション アクセス権を使用して、オブジェクトを開くことを要求します。 たとえば、クライアントに読み取り/書き込みアクセス許可がある場合、オブジェクトは読み取り/書き込みアクセス許可で開く必要があります。クライアントに読み取り専用アクセス権がある場合は、オブジェクトを読み取り専用アクセスで開く必要があります。
MAPI_DEFERRED_ERRORS
呼び出し元のクライアントがオブジェクトを完全に使用できるようになる前に、 OpenEntry が正常に返されるようにします。 オブジェクトが使用できない場合は、後続のオブジェクト呼び出しを行うとエラーが発生する可能性があります。
MAPI_MODIFY
読み取り/書き込みアクセス許可を要求します。 既定では、オブジェクトは読み取り専用アクセスで開かれます。クライアントは、読み取り/書き込みアクセス許可が付与されていることを前提として動作しません。
SHOW_SOFT_DELETES
現在論理的に削除済みとしてマークされているアイテムを表示します。つまり、削除されたアイテムの保持期間フェーズにあります。
lpulObjType
[out]開いているオブジェクトの型へのポインター。
lppUnk
[out]開いているオブジェクトへのアクセスに使用するインターフェイス実装へのポインターへのポインター。
戻り値
S_OK
オブジェクトが正常に開かれました。
MAPI_E_NO_ACCESS
ユーザーがオブジェクトを開くには十分なアクセス許可を持っていないか、読み取り/書き込みアクセス許可を持つ読み取り専用オブジェクトを開こうとしました。
MAPI_E_NOT_FOUND
lpEntryID で指定されたエントリ識別子は、オブジェクトを表しません。
MAPI_E_UNKNOWN_ENTRYID
lpEntryID パラメーターのエントリ識別子は、コンテナーによって認識される形式ではありません。
注釈
IMAPIContainer::OpenEntry メソッドは、コンテナー全体でオブジェクトを開き、さらにアクセスするために使用するインターフェイス実装へのポインターを返します。
呼び出し側への注意
サービス プロバイダーは lpInterface パラメーターのインターフェイス識別子で指定された型のインターフェイス実装を返す必要がないため、lpulObjType パラメーターが指す値をチェックします。 必要に応じて、 lppUnk で返されたポインターを適切な型のポインターにキャストします。
既定では、サービス プロバイダーは、MAPI_MODIFY または MAPI_BEST_ACCESS フラグを設定しない限り、読み取り専用アクセス権を持つオブジェクトを開きます。 これらのフラグのいずれかが設定されると、サービス プロバイダーは変更可能なオブジェクトを返そうとします。 ただし、変更可能なオブジェクトを要求したため、開いているオブジェクトに読み取り/書き込みアクセス許可があることを想定しないでください。 後続の変更が失敗する可能性を計画するか、オブジェクトの PR_ACCESS_LEVEL プロパティを取得して 、OpenEntry によって付与されるアクセス レベルを決定します。