IMAPIFolder::DeleteFolder
Область применения: Outlook 2013 | Outlook 2016
Удаляет вложенную папку.
HRESULT DeleteFolder(
ULONG_PTR cbEntryID,
LPENTRYID lpEntryID,
ULONG_PTR ulUIParam,
LPMAPIPROGRESS lpProgress,
ULONG ulFlags
);
Параметры
cbEntryID
[в] Число байтов в идентификаторе записи, на который указывает параметр lpEntryID .
lpEntryID
[в] Указатель на идентификатор записи удаляемой вложенной папки.
ulUIParam
[в] Дескриптор родительского окна индикатора хода выполнения. Параметр ulUIParam игнорируется, если в параметре ulFlags не установлен флаг FOLDER_DIALOG.
lpProgress
[в] Указатель на объект выполнения, отображающий индикатор хода выполнения. Если в lpProgress передается значение NULL, поставщик хранилища сообщений отображает индикатор хода выполнения с помощью реализации объекта хода выполнения MAPI. Параметр lpProgress игнорируется, если флаг FOLDER_DIALOG не установлен в ulFlags.
ulFlags
[в] Битовая маска флагов, управляющая удалением вложенной папки. Можно задать следующие флаги:
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. Удалить можно только пустые папки или папки, которые задают флаги DEL_FOLDERS и DEL_MESSAGES в вызове DeleteFolder . DEL_FOLDERS позволяет удалить все вложенные папки папки; DEL_MESSAGES позволяет удалять все сообщения папки.
Программа MFCMAPI позволяет выбрать между обратимым удалением папки и жестким удалением папки. Exchange Server 2019 г. также не реализует обратимое удаление папок в частных хранилищах и обрабатывает запросы на удаление папок в частных хранилищах (ср. запрос [ropOpenFolder]) так, как если бы был задан DELETE_HARD_DELETE.
Примечания для исполнителей
Если операция удаления включает несколько папок, выполните операцию максимально полно для каждой папки. Иногда одна из удаляемых папок не существует или была перемещена или скопирована в другое место. Не прерывайте операцию преждевременно, если не произойдет сбой, не зависящий от вас, например нехватки памяти, нехватки дискового пространства или повреждения в хранилище сообщений.
Примечания для вызывающих методов
Ожидайте эти возвращаемые значения при следующих условиях.
Condition | Возвращаемое значение |
---|---|
DeleteFolder успешно удалил все сообщения и вложенные папки. | S_OK |
DeleteFolder не удалось удалить все сообщения и вложенные папки. | MAPI_W_PARTIAL_COMPLETION или MAPI_E_NOT_FOUND |
Не удалось завершить deleteFolder. | Любое значение ошибки, кроме MAPI_E_NOT_FOUND |
Если не удается завершить DeleteFolder , не следует предполагать, что работа не выполнена. DeleteFolder мог удалить одно или несколько сообщений и вложенных папок до возникновения ошибки.
Если не удается удалить одну или несколько вложенных папок, DeleteFolder возвращает MAPI_W_PARTIAL_COMPLETION или MAPI_E_NOT_FOUND в зависимости от реализации поставщика хранилища сообщений.
Справочные материалы по MFCMAPI
Пример кода MFCMAPI указан в приведенной ниже таблице.
Файл | Функция | Comment |
---|---|---|
MsgStoreDlg.cpp |
CMsgStoreDlg::OnDeleteSelectedItem |
MFCMAPI использует метод IMAPIFolder::D eleteFolder для удаления папок. |