IMAPIFolder::CopyFolderIMAPIFolder::CopyFolder

適用されます: OutlookApplies to: Outlook

サブフォルダーを移動またはコピーします。Copies or moves a subfolder.

HRESULT CopyFolder(
  ULONG cbEntryID,
  LPENTRYID lpEntryID,
  LPCIID lpInterface,
  LPVOID lpDestFolder,
  LPSTR lpszNewFolderName,
  ULONG_PTR ulUIParam,
  LPMAPIPROGRESS lpProgress,
  ULONG ulFlags
);

ParametersParameters

cbEntryIDcbEntryID

[in]_LpEntryID_パラメーターで指定されたエントリの識別子のバイト数です。[in] The byte count in the entry identifier pointed to by the lpEntryID parameter.

lpEntryIDlpEntryID

[in]サブフォルダーをコピーまたは移動するには、エントリの識別子へのポインター。[in] A pointer to the entry identifier of the subfolder to copy or move.

lpInterfacelpInterface

[in]_LpDestFolder_パラメーターが指すフォルダーへのアクセスに使用するインターフェイスを表すインターフェイス識別子 (IID) へのポインター。[in] A pointer to the interface identifier (IID) that represents the interface to be used to access the folder that the lpDestFolder parameter points to. フォルダーの標準的なインターフェイスを取得するサービス プロバイダーは、NULL を渡すIMAPIFolder: IMAPIContainerPassing NULL causes the service provider to return the standard folder interface, IMAPIFolder : IMAPIContainer. に対する、IID_IMAPIProp、IID_IMAPIContainer、IID_IMAPIFolder、 _lpInterface_の有効な値が含まれます。Valid values for lpInterface include IID_IUnknown, IID_IMAPIProp, IID_IMAPIContainer, and IID_IMAPIFolder.

lpDestFolderlpDestFolder

[in]開いているフォルダーにコピーまたは移動したサブフォルダーが表示されるへのポインター。[in] A pointer to the open folder to receive the copied or moved subfolder.

lpszNewFolderNamelpszNewFolderName

[in]その新しい場所にコピーまたは移動したフォルダーの名前へのポインター。[in] A pointer to the name of the copied or moved folder in its new destination. _LpszNewFolderName_は、NULL に設定されている場合、コピー先のフォルダーの名前の複製元のサブフォルダーの名前が使用されます。If lpszNewFolderName is set to NULL, the name of the source subfolder is used for the name of the destination folder.

ulUIParamulUIParam

[in]進行状況インジケーターの親ウィンドウへのハンドル。[in] A handle to the parent window of the progress indicator. _UlFlags_パラメーターに FOLDER_DIALOG フラグが設定されていない場合、 _ulUIParam_パラメーターは無視されます。The ulUIParam parameter is ignored unless the FOLDER_DIALOG flag in the ulFlags parameter is set.

lpProgresslpProgress

[in]進行状況インジケーターを表示する進行中のオブジェクトへのポインター。[in] A pointer to a progress object that displays a progress indicator. _LpProgress_に NULL を渡した場合、メッセージ ストア プロバイダーは、MAPI 処理中のオブジェクトの実装を使用して進行状況のインジケーターを表示します。If NULL is passed in lpProgress, the message store provider displays a progress indicator by using the MAPI progress object implementation. _UlFlags_に FOLDER_DIALOG フラグが設定されていない限り、 _lpProgress_パラメーターは無視されます。The lpProgress parameter is ignored unless the FOLDER_DIALOG flag is set in ulFlags.

ulFlagsulFlags

[in]コピーまたは移動操作を制御するフラグのビットマスクです。[in] A bitmask of flags that controls the copy or move operation. 次のフラグを設定することができます。The following flags can be set:

COPY_SUBFOLDERSCOPY_SUBFOLDERS

すべてのサブフォルダーにコピーされるサブフォルダーにもコピーしてください。All of the subfolders in the subfolder to be copied should also be copied. コピー操作の COPY_SUBFOLDERS が設定されていない、 _lpEntryID_で識別されるサブフォルダーのみがコピーされます。When COPY_SUBFOLDERS is not set for a copy operation, only the subfolder identified by lpEntryID is copied. 移動操作で、COPY_SUBFOLDERS の動作は既定のフラグが設定されているかどうかに関係なくです。With a move operation, the COPY_SUBFOLDERS behavior is the default regardless of whether the flag is set.

FOLDER_DIALOGFOLDER_DIALOG

進行状況インジケーターの表示を要求します。Requests the display of a progress indicator.

FOLDER_MOVEFOLDER_MOVE

代わりに移動するのには、サブフォルダーをコピーします。The subfolder is to be moved instead of copied. FOLDER_MOVE が設定されていない場合は、サブフォルダーがコピーされます。If FOLDER_MOVE is not set, the subfolder is copied.

MAPI_DECLINE_OKMAPI_DECLINE_OK

CopyFolderメソッドのサポート オブジェクトのIMAPISupport::DoCopyToまたはIMAPISupport::DoCopyPropsメソッドを呼び出すことによって実装されている場合は、 CopyFolderする必要があります代わりにすぐに返すこと MAPI_E_、メッセージ ストア プロバイダーの通知します。DECLINE_COPY。Informs the message store provider that if it implements CopyFolder by calling its support object's IMAPISupport::DoCopyTo or IMAPISupport::DoCopyProps method, CopyFolder should instead immediately return MAPI_E_DECLINE_COPY.

MAPI_UNICODEMAPI_UNICODE

Unicode 形式では、コピー先のフォルダーの名前です。The name of the destination folder is in Unicode format. MAPI_UNICODE フラグが設定されていない場合は、ANSI 形式のフォルダー名です。If the MAPI_UNICODE flag is not set, the folder name is in ANSI format.

�߂�lReturn value

S_OKS_OK

指定されたフォルダーは正常にコピーまたは移動されています。The specified folder has been successfully copied or moved.

MAPI_E_BAD_CHARWIDTHMAPI_E_BAD_CHARWIDTH

か、MAPI_UNICODE フラグが設定されたメッセージ ストア プロバイダーは、Unicode をサポートしていないまたは MAPI_UNICODE が設定されていないとメッセージ ストア プロバイダーは、Unicode だけをサポートしています。Either the MAPI_UNICODE flag was set and the message store provider does not support Unicode, or MAPI_UNICODE was not set and the message store provider supports only Unicode.

MAPI_E_COLLISIONMAPI_E_COLLISION

移動またはコピーされているフォルダーの名前は、コピー先のフォルダーのサブフォルダーの名前と同じです。The name of the folder being moved or copied is the same as that of a subfolder in the destination folder. メッセージ ストア プロバイダーには、一意のフォルダー名が必要です。The message store provider requires unique folder names.

MAPI_E_DECLINE_COPYMAPI_E_DECLINE_COPY

プロバイダーのサポートのオブジェクトのメソッドを呼び出すことによってこのメソッドを実装して、呼び出し元に MAPI_DECLINE_OK フラグが渡されます。The provider implements this method by calling a support object method, and the caller has passed the MAPI_DECLINE_OK flag.

MAPI_E_FOLDER_CYCLEMAPI_E_FOLDER_CYCLE

ソースフォルダーには直接的または間接的にコピー先のフォルダーが含まれています。The source folder directly or indirectly contains the destination folder. 作業時間の大幅な可能性がありますが完了前に、この条件が検出された、元とコピー先のフォルダーを部分的に変更された可能性がありますので。Significant work may have been performed before this condition was discovered, so the source and destination folder may be partially modified.

MAPI_W_PARTIAL_COMPLETIONMAPI_W_PARTIAL_COMPLETION

呼び出しが成功したが、すべてのエントリが正常にコピーされました。The call succeeded, but not all entries were successfully copied. この警告が返されると、呼び出しを成功として処理する必要があります。When this warning is returned, the call should be handled as successful. この警告をテストするには、 HR_FAILEDマクロを使用します。To test for this warning, use the HR_FAILED macro. 詳細については、エラーを処理するためのマクロの使用を参照してください。For more information, see Using Macros for Error Handling.

備考Remarks

IMAPIFolder::CopyFolderメソッドは、コピーまたはサブフォルダーを別の場所に移動します。The IMAPIFolder::CopyFolder method copies or moves a subfolder from one location to another. サブフォルダーのコピーや移動は、サブフォルダーとして、コピー先のフォルダーに追加されます。The subfolder being copied or moved is added to the destination folder as a subfolder.

実装者へのメモNotes to implementers

コピーまたは移動操作には、COPY_SUBFOLDERS フラグを設定することによって示されているように、複数のフォルダーが含まれている場合、可能な限り完全にフォルダーごとに操作を実行します。When the copy or move operation involves more than one folder, as indicated by setting the COPY_SUBFOLDERS flag, perform the operation as completely as possible for each folder. 移動またはコピーするフォルダーのいずれかの場合があります存在しないまたは既に移動または別の場所にコピーします。Sometimes one of the folders to be moved or copied does not exist or has already been moved or copied elsewhere. メモリが不足している、ディスク領域、またはメッセージ ・ ストア内の破損が不足しているなど、ユーザーが制御できない障害が発生した場合を除きは、処理の途中で操作を停止しません。Do not stop the operation prematurely unless a failure occurs that is beyond your control, such as running out of memory, running out of disk space, or corruption in the message store.

コピーしたメッセージですべてのメッセージ エントリの識別子を保持しようとしてください。Try to retain all message entry identifiers in the copied messages. エントリの識別子を保持するためにも実行してくださいする必要がありますが、必須ではありません。You should also try to preserve entry identifiers, but it is not required.

呼び出し側への注意Notes to callers

次の条件下で、これらの戻り値を期待してください。Expect these return values under the following conditions.

条件Condition 戻り値Return value
CopyFolderが正常にコピーまたは、すべてのメッセージとサブフォルダーを移動します。CopyFolder has successfully copied or moved every message and subfolder.
S_OKS_OK
CopyFolderは、正常にコピーまたはすべてのメッセージとサブフォルダーに移動できませんでした。CopyFolder was unable to successfully copy or move every message and subfolder.
MAPI_W_PARTIAL_COMPLETION または MAPI_E_NOT_FOUNDMAPI_W_PARTIAL_COMPLETION or MAPI_E_NOT_FOUND
CopyFolderは完了できませんでした。CopyFolder was unable to complete.
MAPI_E_NOT_FOUND を除くエラー値Any error value except MAPI_E_NOT_FOUND

CopyFolderが完了することではない場合と仮定しないでその作業は実行されませんでした。When CopyFolder is unable to complete, do not assume that no work was done. CopyFolderをコピーまたはエラーが発生する前に 1 つまたは複数のメッセージとサブフォルダーを移動することがされている可能性があります。CopyFolder might have been able to copy or move one or more of the messages and subfolders before encountering the error.

_LpEntryID_で存在しないフォルダーのエントリ id が渡された場合に、 CopyFolderは、メッセージ ストアの実装によって MAPI_W_PARTIAL_COMPLETION または MAPI_E_NOT_FOUND を返します。If an entry identifier for a folder that does not exist is passed in lpEntryID, CopyFolder returns MAPI_W_PARTIAL_COMPLETION or MAPI_E_NOT_FOUND, depending on the message store's implementation.

によって、メッセージ ストア プロバイダーでは、元のメッセージのエントリ id は、コピーされたメッセージには保持されない場合があります。Depending on the message store provider, the entry identifier of the original message may or may not be preserved in the copied message. 可能な限り、エントリの識別子を保持する必要がありますが、必須ではありません。You should preserve entry identifiers whenever possible, but it is not a requirement. 一般に次のシナリオに依存します。You can generally depend on the following scenarios:

  • 2 種類のメッセージ ・ ストア間でフォルダーを移動するときを変更するエントリの識別子が保証されます。When you move a folder between two different types of message stores, the entry identifier is guaranteed to change.

  • 同じ種類の 2 つのメッセージ ストア間でフォルダーを移動するときにほとんどのエントリ id を変更します。When you move a folder between two message stores of the same type, the entry identifier almost always changes.

  • 同じメッセージ ・ ストア内の別の場所にフォルダーを移動すると、エントリの識別子または可能性がありますしない変更、メッセージによって、プロバイダーを格納します。When you move a folder to another location in the same message store, the entry identifier may or may not change, depending on the message store provider.

MFCMAPI 参照MFCMAPI reference

MFCMAPI �T���v�� �R�[�h�ł́A���̕\��Q�Ƃ��Ă��������BFor MFCMAPI sample code, see the following table.

�t�@�C��File �֐�Function �R�����gComment
MsgStoreDlg.cppMsgStoreDlg.cpp
CMsgStoreDlg::OnPasteFolderCMsgStoreDlg::OnPasteFolder
MFCMAPI では、1 つの場所からフォルダーをコピーするのにには、 IMAPIFolder::CopyFolderメソッドを使用します。MFCMAPI uses the IMAPIFolder::CopyFolder method to copy folders from one location to another. MFCMAPI では、コピー操作中に元のフォルダーを記憶して、実際に貼り付けの操作中にコピーを実行します。MFCMAPI remembers the source folder during the copy operation and actually performs the copy during the paste operation.

関連項目See also

IMAPIFolder: IMAPIContainerIMAPIFolder : IMAPIContainer

[�R��h �T���v���Ƃ��� MFCMAPIMFCMAPI as a Code Sample