IMAPISupport::OpenEntry
適用対象: Outlook 2013 | Outlook 2016
オブジェクトを開き、さらにアクセスするためのインターフェイス ポインターを返します。
HRESULT OpenEntry(
ULONG cbEntryID,
LPENTRYID lpEntryID,
LPCIID lpInterface,
ULONG ulOpenFlags,
ULONG FAR * lpulObjType,
LPUNKNOWN FAR * lppUnk
);
パラメーター
cbEntryID
[in] lpEntryID パラメーターによって指されるエントリ識別子のバイト数。
lpEntryID
[in]開くオブジェクトのエントリ識別子へのポインター。
lpInterface
[in]オブジェクトへのアクセスに使用するインターフェイスを表すインターフェイス識別子 (IID) へのポインター。 NULL を渡すと、オブジェクトの標準インターフェイスが返されます。 たとえば、開くオブジェクトがメッセージの場合、標準インターフェイスは IMessage です。フォルダーの場合は IMAPIFolder です。 アドレス帳オブジェクトの標準インターフェイスは、配布リストの 場合は IDistList 、メッセージング ユーザーの 場合は IMailUser です。
ulOpenFlags
[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 パラメーターで渡されるエントリ識別子は、認識できない形式です。 通常、この値は、オブジェクトを含むアドレス帳プロバイダーが開かない場合に返されます。
注釈
IMAPISupport::OpenEntry メソッドは、すべてのサービス プロバイダー サポート オブジェクトに対して実装されます。 サービス プロバイダーは IMAPISupport::OpenEntry を呼び出して、特定のオブジェクトへのアクセスに使用できるインターフェイスへのポインターを取得します。
呼び出し側への注意
IMAPISupport::OpenEntry は、開いているオブジェクトの種類がわからない場合にのみ呼び出します。 フォルダーまたはメッセージを開いていることがわかっている場合は、代わりに IMsgStore::OpenEntry を呼び出します。 アドレス帳コンテナー、メッセージング ユーザー、または配布リストを開いていることがわかっている場合は、 IAddrBook::OpenEntry を呼び出します。 これらのより具体的なメソッドは、 IMAPISupport::OpenEntry よりも高速です。
IMAPISupport::OpenEntry では、 ulFlags パラメーターに MAPI_MODIFY または MAPI_BEST_ACCESS フラグを設定し、アクセス許可で十分でない限り、すべてのオブジェクトが読み取り専用として開かれます。 これらのフラグのいずれかを設定しても、特定の種類のアクセスは保証されません。付与されるアクセス許可は、アクセス レベル、オブジェクト、およびオブジェクトを所有するサービス プロバイダーによって異なります。 開いているオブジェクトのアクセス レベルを確認するには、 そのPR_ACCESS_LEVEL (PidTagAccessLevel) プロパティを取得します。
lpulObjType パラメーターで返される値を調べて、返されるオブジェクトの種類が想定どおりであることを確認します。 オブジェクト型が想定どおりの場合は、 lppUnk パラメーターから適切な型のポインターにポインターをキャストします。 たとえば、フォルダーを開いている場合は、 lppUnk を LPMAPIFOLDER 型のポインターにキャストします。