IABContainer::CopyEntries
適用対象: Outlook 2013 | Outlook 2016
1 つ以上のエントリ (通常はメッセージング ユーザーまたは配布リスト) をコピーします。
HRESULT CopyEntries(
LPENTRYLIST lpEntries,
ULONG_PTR ulUIParam,
LPMAPIPROGRESS lpProgress,
ULONG ulFlags
);
パラメーター
lpEntries
[in]コピーするエントリのエントリ識別子を含む ENTRYLIST 構造体の配列へのポインター。
ulUIParam
[in]このメソッドが表示するダイアログ ボックスまたはウィンドウの親ウィンドウへのハンドル。 ulFlags パラメーターに AB_NO_DIALOG フラグが設定されている場合、ulUIParam パラメーターは 0 にする必要があります。
lpProgress
[in]進行状況インジケーター (NULL) を表示する進行状況オブジェクトへのポインター。 lpProgress が NULL の場合は、IMAPISupport::D oProgressDialog メソッドを使用して MAPI によって提供される進行状況オブジェクトを使用して進行状況インジケーターを表示する必要があります。 ulFlags でAB_NO_DIALOG フラグが設定されている場合、lpProgress パラメーターは無視されます。
ulFlags
[in]コピー操作の実行方法を制御するフラグのビットマスク。 次のフラグを設定できます。
AB_NO_DIALOG
進行状況インジケーターの表示を抑制します。 このフラグが設定されていない場合は、進行状況インジケーターが表示されます。
CREATE_CHECK_DUP_LOOSE
重複するエントリ チェックの緩いレベルを実行する必要があることを示します。 緩やかな重複エントリ チェックの実装は、プロバイダー固有です。 たとえば、プロバイダーは、同じ表示名を持つ任意の 2 つのエントリとして緩やかな一致を定義できます。
CREATE_CHECK_DUP_STRICT
厳密なレベルの重複エントリ チェックを実行する必要があることを示します。 厳密な重複エントリ チェックの実装は、プロバイダー固有です。 たとえば、プロバイダーは、厳密な一致を、同じ表示名とメッセージング アドレスの両方を持つ任意の 2 つのエントリとして定義できます。
CREATE_REPLACE
2 つが重複していると判断された場合、新しいエントリが既存のエントリを置き換える必要があることを示します。
戻り値
S_OK
コピー操作が成功しました。
MAPI_W_PARTIAL_COMPLETION
コピー操作は全体的に成功しましたが、1 つ以上のエントリをコピーできませんでした。 この値が返されると、呼び出しは成功として処理されます。 この値をテストするには、 HR_FAILED マクロを使用します。 詳細については、「 エラー処理にマクロを使用する」を参照してください。
注釈
IABContainer::CopyEntries メソッドは、同じコンテナーまたは別のコンテナーからエントリをコピーします。 CopyEntries の呼び出しは、コピーする各エントリに対して次の呼び出しを行うのと機能的に同じです。
新しいエントリを作成するための IABContainer::CreateEntry メソッド。
コピーするエントリからプロパティを読み取る IMAPIProp::GetProps メソッド。
新しいエントリにプロパティを書き込む IMAPIProp::SetProps メソッド。
保存を実行する新しいエントリの IMAPIProp::SaveChanges メソッド。
コンテナーの参照を解放する新しいエントリの IUnknown::Release メソッド。
実装に関するメモ
IABContainer::CopyEntries メソッドをサポートするすべてのコンテナーは変更可能である必要があります。 コンテナーの AB_MODIFIABLE フラグを PR_CONTAINER_FLAGS (PidTagContainerFlags) プロパティに設定して、変更可能であることを示します。
すべてのフラグをサポートする必要があります。ただし、これらのフラグの解釈と使用は実装固有です。つまり、実装のコンテキストでCREATE_CHECK_DUP_LOOSEフラグとCREATE_CHECK_DUP_STRICTフラグのセマンティクスが何を意味するかを判断できます。 エントリが重複しているかどうかを判断できない場合は、常にエントリのコピーを許可します。
CREATE_REPLACE フラグが設定されている場合は、CREATE_CHECK_DUP_LOOSEまたはCREATE_CHECK_DUP_STRICTが設定されているかどうか、およびエントリが重複しているかどうかに関係なく、常にエントリをコピーします。
CREATE_REPLACEが設定されておらず、CREATE_CHECK_DUP_STRICTが設定されている場合は、重複をチェックします。 エントリが重複と判断された場合は、エントリをコピーしないでください。
CREATE_REPLACEをサポートする必要はありません。CREATE_REPLACEをサポートしていないとは、無視して常にコピーを実行できることを意味します。
重複しないエントリをコピーできない場合にのみ、警告MAPI_W_PARTIAL_COMPLETIONを返します。
呼び出し側への注意
CREATE_CHECK_DUP_LOOSEフラグとCREATE_CHECK_DUP_STRICT フラグを使用して、コンテナーで重複エントリチェックを実行する方法をプロバイダーに示します。 重複しているかどうかに関係なくエントリを追加する必要がある場合は、これらのフラグを設定しないか、CREATE_REPLACE フラグを設定します。 CREATE_REPLACEは、エントリが重複しているかどうかを気にしないことを示します。常に元のエントリを置き換える必要があります。