Compartilhar via


IMAPIFolder::DeleteFolder

Aplica-se a: Outlook 2013 | Outlook 2016

Exclui uma subpasta.

HRESULT DeleteFolder(
  ULONG_PTR cbEntryID,
  LPENTRYID lpEntryID,
  ULONG_PTR ulUIParam,
  LPMAPIPROGRESS lpProgress,
  ULONG ulFlags
);

Parâmetros

cbEntryID

[in] A contagem de bytes no identificador de entrada apontada pelo parâmetro lpEntryID .

Lpentryid

[in] Um ponteiro para o identificador de entrada da subpasta a ser excluído.

ulUIParam

[in] Um identificador para a janela pai do indicador de progresso. O parâmetro ulUIParam é ignorado, a menos que o sinalizador FOLDER_DIALOG seja definido no parâmetro ulFlags .

lpProgress

[in] Um ponteiro para um objeto de progresso que exibe um indicador de progresso. Se NULL for passado em lpProgress, o provedor do repositório de mensagens exibirá um indicador de progresso usando a implementação do objeto de progresso MAPI. O parâmetro lpProgress é ignorado, a menos que o sinalizador FOLDER_DIALOG seja definido em ulFlags.

ulFlags

[in] Um bitmask de sinalizadores que controla a exclusão da subpasta. Os seguintes sinalizadores podem ser definidos:

DEL_FOLDERS

Todas as subpastas da subpasta apontadas por lpEntryID devem ser excluídas.

DEL_MESSAGES

Todas as mensagens na subpasta apontadas por lpEntryID devem ser excluídas.

DELETE_HARD_DELETE

Remove permanentemente a pasta.

FOLDER_DIALOG

Um indicador de progresso deve ser exibido enquanto a operação prossegue.

Valor de retorno

S_OK

A pasta especificada foi excluída com êxito.

MAPI_E_HAS_FOLDERS

A subpasta que está sendo excluída contém subpastas e o sinalizador DEL_FOLDERS não foi definido. As subpastas não foram excluídas.

MAPI_E_HAS_MESSAGES

A subpasta que está sendo excluída contém mensagens e o sinalizador DEL_MESSAGES não foi definido. A subpasta não foi excluída.

MAPI_W_PARTIAL_COMPLETION

A chamada foi bem-sucedida, mas nem todas as entradas foram excluídas com êxito. Quando esse aviso é retornado, a chamada deve ser tratada como bem-sucedida. Para testar esse aviso, use a macro HR_FAILED . Para obter mais informações, confira Usando macros para tratamento de erros.

Comentários

O método IMAPIFolder::D eleteFolder exclui uma subpasta. Por padrão, DeleteFolder opera apenas em pastas vazias, mas você pode usá-la com êxito em pastas não vazias definindo dois sinalizadores: DEL_FOLDERS e DEL_MESSAGES. Somente pastas ou pastas vazias que definem os sinalizadores DEL_FOLDERS e DEL_MESSAGES na chamada DeleteFolder podem ser excluídas. DEL_FOLDERS permite que todas as subpastas da pasta sejam removidas; DEL_MESSAGES permite que todas as mensagens da pasta sejam removidas.

O programa MFCMAPI permite escolher entre a pasta soft-delete vs. pasta hard-delete. Exchange Server 2019 também não implementa a exclusão de pastas em repositórios privados e trata solicitações de exclusão para pastas em repositórios privados (cf. a solicitação [ropOpenFolder]) como se DELETE_HARD_DELETE fosse definido.

Observações para implementadores

Quando a operação de exclusão envolve mais de uma pasta, execute a operação o mais completamente possível para cada pasta. Às vezes, uma das pastas a serem excluídas não existe ou foi movida ou copiada para outro lugar. Não interrompa a operação prematuramente, a menos que ocorra uma falha que esteja fora de seu controle, como ficar sem memória, ficar sem espaço em disco ou corrupção no repositório de mensagens.

Notas para chamadores

Espere esses valores retornados nas seguintes condições.

Condition Valor de retorno
DeleteFolder excluiu com êxito cada mensagem e subpasta. S_OK
DeleteFolder não pôde excluir com êxito cada mensagem e subpasta. MAPI_W_PARTIAL_COMPLETION ou MAPI_E_NOT_FOUND
DeleteFolder não pôde ser concluído. Qualquer valor de erro, exceto MAPI_E_NOT_FOUND

Quando DeleteFolder não puder ser concluído, não suponha que nenhum trabalho tenha sido feito. DeleteFolder pode ter sido capaz de excluir uma ou mais das mensagens e subpastas antes de encontrar o erro.

Se uma ou mais subpastas não puderem ser excluídas, DeleteFolder retornará MAPI_W_PARTIAL_COMPLETION ou MAPI_E_NOT_FOUND, dependendo da implementação do provedor do repositório de mensagens.

Referência do MFCMAPI

Para ver códigos de exemplo do MFCMAPI, confira a tabela a seguir.

Arquivo Função Comentário
MsgStoreDlg.cpp
CMsgStoreDlg::OnDeleteSelectedItem
O MFCMAPI usa o método IMAPIFolder::D eleteFolder para excluir pastas.

Confira também

IMAPIFolder : IMAPIContainer

MFCMAPI como exemplo de código