IMAPISupport::DoCopyProps
適用対象: Outlook 2013 | Outlook 2016
オブジェクトの 1 つ以上のプロパティをコピーまたは移動します。
HRESULT DoCopyProps(
LPCIID lpSrcInterface,
LPVOID lpSrcObj,
LPSPropTagArray lpIncludeProps,
ULONG_PTR ulUIParam,
LPMAPIPROGRESS lpProgress,
LPCIID lpDestInterface,
LPVOID lpDestObj,
ULONG ulFlags,
LPSPropProblemArray FAR * lppProblems
);
パラメーター
lpSrcInterface
[in]コピーまたは移動するプロパティを持つオブジェクトへのアクセスに使用するインターフェイスを表すインターフェイス識別子 (IID) へのポインター。
lpSrcObj
[in]コピーまたは移動するプロパティを含むオブジェクトへのポインター。
lpIncludeProps
[in]コピーまたは移動するプロパティを示すプロパティ タグのカウントされた配列を含む SPropTagArray 構造体へのポインター。 lpIncludeProps パラメーターを NULL にすることはできません。
ulUIParam
[in]進行状況インジケーターの親ウィンドウへのハンドル。
lpProgress
[in]進行状況インジケーターの実装へのポインター。 lpProgress パラメーターに NULL が渡された場合、MAPI 実装を使用して進行状況インジケーターが表示されます。 lpProgress パラメーターは、ulFlags パラメーターに MAPI_DIALOG フラグが設定されていない限り無視されます。
lpDestInterface
[in]コピーまたは移動されたプロパティを受け取るためにオブジェクトにアクセスするために使用するインターフェイスを表すインターフェイス識別子へのポインター。
lpDestObj
[in]コピーまたは移動されたプロパティを受け取るオブジェクトへのポインター。
ulFlags
[in]コピー操作または移動操作の実行方法を制御するフラグのビットマスク。 次のフラグを設定できます。
MAPI_DIALOG
進行状況インジケーターを表示します。
MAPI_MOVE
DoCopyProps では、 コピー操作ではなく移動操作を実行する必要があります。 このフラグが設定されていない場合、 DoCopyProps はコピー操作を実行します。
MAPI_NOREPLACE
コピー先オブジェクト内の既存のプロパティを上書きしないでください。 このフラグが設定されていない場合、 DoCopyProps は既存の プロパティを上書きします。
lppProblems
[in, out]入力時に、 SPropProblemArray 構造体へのポインターへのポインター。それ以外の場合は、エラー情報の必要がないことを示す NULL。 lppProblems が入力の有効なポインターである場合、DoCopyProps は 1 つ以上のプロパティをコピーするときのエラーに関する詳細情報を返します。
戻り値
S_OK
プロパティが正常にコピーまたは移動されました。
MAPI_E_COLLISION
コピーまたは移動するプロパティは、コピー先オブジェクトに既に存在し、MAPI_NOREPLACE フラグが設定されています。
MAPI_E_FOLDER_CYCLE
ソース オブジェクトには、直接または間接的にターゲット オブジェクトが含まれています。 この条件が検出される前に重要な作業が実行された可能性があるため、ソース オブジェクトと変換先オブジェクトが部分的に変更される可能性があります。
MAPI_E_INTERFACE_NOT_SUPPORTED
lpSrcInterface パラメーターで識別されるインターフェイスは、ソース オブジェクトではサポートされていません。また、lpDestInterface パラメーターで識別されるインターフェイスは、変換先オブジェクトではサポートされていません。
MAPI_E_NO_ACCESS
呼び出し元に十分なアクセス許可が与えられなかったオブジェクトへのアクセスが試行されました。 このエラーは、変換先オブジェクトがソース オブジェクトと同じ場合に返されます。
SPropProblemArray 構造体では次の値を返すことができますが、DoCopyProps の戻り値としては返されません。 これらのエラーは、1 つのプロパティに適用されます。
MAPI_E_BAD_CHARWIDTH
MAPI_UNICODE フラグが設定され、 DoCopyProps で Unicode がサポートされていないか、MAPI_UNICODEが設定されておらず、 DoCopyProps で Unicode のみがサポートされています。
MAPI_E_COMPUTED
プロパティは読み取り専用プロパティであり、変換先オブジェクトの所有者によって計算されるため、呼び出し元によって変更できません。 このエラーは重大ではありません。呼び出し元は、コピー操作を続行できるようにする必要があります。
MAPI_E_INVALID_TYPE
プロパティの種類が無効です。
MAPI_E_UNEXPECTED_TYPE
プロパティ型は、呼び出し元が予期する型ではありません。
注釈
IMAPISupport::D oCopyProps メソッドは、メッセージ ストア プロバイダーサポート オブジェクトに実装されます。 メッセージ ストア プロバイダーは DoCopyProps を 呼び出して、フォルダーとメッセージの IMAPIProp::CopyProps メソッドを実装できます。 DoCopyProps は、lpIncludeProps が指すプロパティ タグ配列で識別され、lpSrcObj が指すオブジェクトに存在するプロパティをコピーまたは移動します。
呼び出し側への注意
2 つのメッセージなど、同じ型のオブジェクト間でプロパティをコピーする場合、 lpSrcInterface パラメーターと lpDestInterface パラメーターには同じインターフェイス識別子が含まれている必要があり、 lpSrcObj パラメーターと lpDestObj パラメーターは同じ型のオブジェクトを指している必要があります。 lpDestInterface が NULL に設定されている場合、DoCopyProps はMAPI_E_INVALID_PARAMETERを返します。 lpDestInterface を許容可能なインターフェイス識別子に設定し、lpDestObj を無効なポインターに設定した場合、結果は予測できません。 ほとんどの場合、プロバイダーは失敗します。
ターゲット オブジェクトのプロパティを上書きしない場合は、MAPI_NOREPLACE フラグを設定します。 ソース オブジェクトに存在し、上書きされないターゲット オブジェクトのプロパティは削除または変更されません。
メッセージの受信者リストをコピーするには、lpIncludeProps パラメーターによって指されるプロパティ タグ配列に、PR_MESSAGE_RECIPIENTS (PidTagMessageRecipients) プロパティを含めます。 メッセージの添付ファイルをコピーするには、 PR_MESSAGE_ATTACHMENTS (PidTagMessageAttachments) プロパティを含めます。
フォルダーまたはアドレス帳コンテナーの階層テーブルまたはコンテンツ テーブルをコピーするには、プロパティ タグ配列 に PR_CONTAINER_HIERARCHY (PidTagContainerHierarchy) または PR_CONTAINER_CONTENTS (PidTagContainerContents) を含めます。 フォルダーの関連コンテンツ テーブルを含めるには、配列に PR_FOLDER_ASSOCIATED_CONTENTS (PidTagFolderAssociatedContents) プロパティを含めます。
サブフォルダーをコピーまたは移動する場合、 SPropTagArray 構造体によって示されるプロパティの使用に関係なく、その内容は完全にコピーまたは移動されます。
DoCopyProps は、 操作全体で発生するグローバル エラーと、1 つ以上のプロパティで発生する個々のエラーを報告します。 これらの個々のエラーは 、SPropProblemArray 構造体に 配置されます。 プロパティの問題の配列構造パラメーターに対して有効なポインターではなく NULL を渡すことで、プロパティ レベルでのエラー報告を抑制できます。
エラーに関する情報を受け取る場合は、lppProblems パラメーターに有効な SPropProblemArray 構造体ポインター を 渡します。 DoCopyProps がS_OKを返すと、構造体内の個々のプロパティで発生する可能性のあるエラーがチェックされます。 DoCopyProps がエラーを返すと、SPropProblemArray 構造体に情報は返されません。 代わりに、 IMAPISupport::GetLastError メソッドを呼び出して、詳細なエラー情報を取得します。
DoCopyProps がS_OKを返す場合は、MAPIFreeBuffer 関数を呼び出して、返された SPropProblemArray 構造体を解放します。
関連項目
PidTagContainerContents 標準プロパティ
PidTagContainerHierarchy 標準プロパティ
PidTagFolderAssociatedContents 標準プロパティ
PidTagMessageAttachments 標準プロパティ