IMAPIFolder::DeleteFolder
適用対象: Outlook 2013 | Outlook 2016
サブフォルダーを削除します。
HRESULT DeleteFolder(
ULONG_PTR cbEntryID,
LPENTRYID lpEntryID,
ULONG_PTR ulUIParam,
LPMAPIPROGRESS lpProgress,
ULONG ulFlags
);
パラメーター
cbEntryID
[in] lpEntryID パラメーターによって指されるエントリ識別子のバイト数。
lpEntryID
[in]削除するサブフォルダーのエントリ識別子へのポインター。
ulUIParam
[in]進行状況インジケーターの親ウィンドウへのハンドル。 ulUIParam パラメーターは、ulFlags パラメーターに FOLDER_DIALOG フラグが設定されていない限り無視されます。
lpProgress
[in]進行状況インジケーターを表示する進行状況オブジェクトへのポインター。 LPProgress で NULL が渡された場合、メッセージ ストア プロバイダーは MAPI 進行状況オブジェクトの実装を使用して進行状況インジケーターを表示します。 lpProgress パラメーターは、ulFlags でFOLDER_DIALOG フラグが設定されていない限り無視されます。
ulFlags
[in]サブフォルダーの削除を制御するフラグのビットマスク。 次のフラグを設定できます。
DEL_FOLDERS
lpEntryID が指すサブフォルダーのすべてのサブフォルダーを削除する必要があります。
DEL_MESSAGES
lpEntryID が指すサブフォルダー内のすべてのメッセージを削除する必要があります。
DELETE_HARD_DELETE
フォルダーを完全に削除します。
FOLDER_DIALOG
操作の進行中に進行状況インジケーターが表示されます。
戻り値
S_OK
指定したフォルダーが正常に削除されました。
MAPI_E_HAS_FOLDERS
削除されるサブフォルダーにはサブフォルダーが含まれており、DEL_FOLDERS フラグが設定されていません。 サブフォルダーは削除されませんでした。
MAPI_E_HAS_MESSAGES
削除されるサブフォルダーにメッセージが含まれており、DEL_MESSAGES フラグが設定されていません。 サブフォルダーは削除されませんでした。
MAPI_W_PARTIAL_COMPLETION
呼び出しは成功しましたが、すべてのエントリが正常に削除されたわけではありません。 この警告が返されたら、呼び出しは成功として処理する必要があります。 この警告をテストするには、 HR_FAILED マクロを使用します。 詳細については、「 エラー処理にマクロを使用する」を参照してください。
注釈
IMAPIFolder::D eleteFolder メソッドは、サブフォルダーを削除します。 既定では、 DeleteFolder は空のフォルダーでのみ動作しますが、DEL_FOLDERS と DEL_MESSAGES の 2 つのフラグを設定することで、空でないフォルダーで正常に使用できます。 DeleteFolder 呼び出しのDEL_FOLDERSフラグとDEL_MESSAGES フラグの両方を設定する空のフォルダーまたはフォルダーのみを削除できます。 DEL_FOLDERSを使用すると、フォルダーのすべてのサブフォルダーを削除できます。DEL_MESSAGESを使用すると、フォルダーのすべてのメッセージを削除できます。
MFCMAPI プログラムを使用すると、フォルダーの論理的な削除とフォルダーのハード削除を選択できます。 Exchange Server 2019 では、プライベート ストアにフォルダーの論理的な削除も実装されず、プライベート ストア内のフォルダーの削除要求 (cf. [ropOpenFolder] 要求) は、DELETE_HARD_DELETEが設定されたかのように扱われます。
実装に関するメモ
削除操作に複数のフォルダーが含まれる場合は、各フォルダーに対して可能な限り完全に操作を実行します。 削除するフォルダーの 1 つが存在しないか、他の場所に移動またはコピーされている場合があります。 メモリ不足、ディスク領域の不足、メッセージ ストアの破損など、制御できないエラーが発生しない限り、操作を途中で停止しないでください。
呼び出し側への注意
これらの戻り値は、次の条件で想定します。
Condition | 戻り値 |
---|---|
DeleteFolder は、すべてのメッセージとサブフォルダーを正常に削除しました。 | S_OK |
DeleteFolder は、すべてのメッセージとサブフォルダーを正常に削除できませんでした。 | MAPI_W_PARTIAL_COMPLETIONまたはMAPI_E_NOT_FOUND |
DeleteFolder を完了できませんでした。 | MAPI_E_NOT_FOUNDを除くすべてのエラー値 |
DeleteFolder が完了できない場合は、作業が完了していないと想定しないでください。 DeleteFolder は、エラーが発生する前に、1 つ以上のメッセージとサブフォルダーを削除できた可能性があります。
1 つ以上のサブフォルダーを削除できない場合、 DeleteFolder はメッセージ ストア プロバイダーの実装に応じて、MAPI_W_PARTIAL_COMPLETIONまたはMAPI_E_NOT_FOUNDを返します。
MFCMAPI リファレンス
MFCMAPI のサンプル コードについては、次の表を参照してください。
ファイル | 関数 | コメント |
---|---|---|
MsgStoreDlg.cpp |
CMsgStoreDlg::OnDeleteSelectedItem |
MFCMAPI では、 IMAPIFolder::D eleteFolder メソッドを使用してフォルダーを削除します。 |