Поделиться через


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 для удаления папок.

См. также

IMAPIFolder : IMAPIContainer

Mfcmapi (en) � �������� ������� ����