IMAPISession::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 を渡すと、オブジェクトの標準インターフェイスが返されます。 たとえば、開くオブジェクトがメッセージの場合、標準インターフェイスは IMessage です。フォルダーの場合は IMAPIFolder です。 アドレス帳オブジェクトの標準インターフェイスは、配布リストの 場合は IDistList 、メッセージング ユーザーの 場合は IMailUser です。
ulFlags
[in]オブジェクトの開き方を制御するフラグのビットマスク。 次のフラグを使用できます。
MAPI_BEST_ACCESS
ユーザーに許可されている最大ネットワーク アクセス許可と最大クライアント アプリケーション アクセス権を使用して、オブジェクトを開くように要求します。 たとえば、クライアントに読み取り/書き込みアクセス許可がある場合、オブジェクトは読み取り/書き込みアクセス許可で開く必要があります。クライアントに読み取り専用アクセス許可がある場合は、オブジェクトを読み取り専用アクセス許可で開く必要があります。
MAPI_CACHE_OK
オフライン アドレス帳を含むすべての手段を使用して、名前解決を実行します。
MAPI_CACHE_ONLY
名前解決を実行するには、オフライン アドレス帳のみを使用します。 たとえば、このフラグを使用すると、クライアント アプリケーションがグローバル アドレス一覧 (GAL) をキャッシュ交換モードで開き、クライアントとサーバー間のトラフィックを作成せずにキャッシュからそのアドレス帳内のエントリにアクセスできます。 このフラグは、Exchange アドレス帳プロバイダーによってのみサポートされます。
MAPI_DEFERRED_ERRORS
呼び出し元のクライアントがオブジェクトを完全に使用できるようになる前に、 OpenEntry が正常に返されるようにします。 オブジェクトが使用できない場合は、後続のオブジェクト呼び出しを行うとエラーが発生する可能性があります。
MAPI_MODIFY
読み取り/書き込みアクセス許可を要求します。 既定では、オブジェクトは読み取り専用のアクセス許可で開かれます。クライアントは、読み取り/書き込みアクセス許可が付与されることを前提として動作しません。
MAPI_NO_CACHE
オフライン アドレス帳を使用して名前解決を実行しないでください。 このフラグは、Exchange アドレス帳プロバイダーによってのみサポートされます。
SHOW_SOFT_DELETES
現在論理的に削除済みとしてマークされているアイテムを表示します (つまり、削除されたアイテムの保持期間フェーズにあります)。
lpulObjType
[out]開いているオブジェクトの型へのポインター。
lppUnk
[out]開いているオブジェクトへのポインターへのポインター。
戻り値
S_OK
オブジェクトが正常に開かれました。
MAPI_E_NO_ACCESS
読み取り専用オブジェクトを変更しようとしたか、ユーザーがアクセス許可が不十分なオブジェクトにアクセスしようとしました。
MAPI_E_NOT_FOUND
lpEntryID パラメーターで渡されるエントリ識別子に関連付けられているオブジェクトはありません。
MAPI_E_UNKNOWN_ENTRYID
lpEntryID パラメーターで渡されるエントリ識別子は、認識できない形式です。 この値は、通常、オブジェクトを含むサービス プロバイダーが開かない場合に返されます。
注釈
IMAPISession::OpenEntry メソッドは、メッセージ ストアまたはアドレス帳オブジェクトを開き、オブジェクトへのアクセスに使用できるインターフェイスへのポインターを返します。
呼び出し側への注意
重要
フォルダーやメッセージなどのパブリック ストアでフォルダー エントリを開く場合は、IMAPISession::OpenEntry ではなく IMsgStore::OpenEntry を使用します。 これにより、プロファイルで複数の Exchange アカウントが定義されている場合に、パブリック フォルダーが正しく機能します。
IMAPISession::OpenEntry は、開いているオブジェクトの種類がわからない場合にのみ呼び出します。 フォルダーまたはメッセージを開いていることがわかっている場合は、 IMsgStore::OpenEntry を呼び出します。 アドレス帳コンテナー、メッセージング ユーザー、または配布リストを開いていることがわかっている場合は、 IAddrBook::OpenEntry を呼び出します。 これらのより具体的なメソッドは、 IMAPISession::OpenEntry よりも高速です。
MAPI は、 ulFlags パラメーターでMAPI_MODIFYまたはMAPI_BEST_ACCESSフラグを設定しない限り、読み取り専用のアクセス許可を持つすべてのオブジェクトを開きます。 これらのフラグのいずれかを設定しても、特定の種類のアクセスは保証されません。付与されるアクセス許可は、サービス プロバイダー、アクセス レベル、オブジェクトによって異なります。 開いているオブジェクトのアクセス レベルを確認するには、 そのPR_ACCESS_LEVEL (PidTagAccessLevel) プロパティを取得します。
IMAPISession::OpenEntry を呼び出し、lpEntryID をメッセージ ストアのエントリ識別子を指すように設定することは、MDB_NO_DIALOG フラグが設定された IMAPISession::OpenMsgStore メソッドの呼び出しと同じです。 フラグ設定も同じですが、 OpenMsgStore で読み取り/書き込みアクセス許可を要求するには、MAPI_MODIFYではなく MDB_WRITE フラグを設定する必要があります。
lpulObjType パラメーターで返される値を調べて、返されるオブジェクトの種類が予期した値かどうかを確認します。 オブジェクト型が想定した型でない場合は、 lppUnk パラメーターから適切な型のポインターにポインターをキャストします。 たとえば、フォルダーを開いている場合は、 lppUnk を LPMAPIFOLDER 型のポインターにキャストします。
MFCMAPI リファレンス
MFCMAPI のサンプル コードについては、次の表を参照してください。
ファイル | 関数 | コメント |
---|---|---|
MAPIFunctions.cpp |
CallOpenEntry |
MFCMAPI では、 IMAPISession::OpenEntry メソッドを使用してオブジェクトを開きます。 |