Compartilhar via


IMAPISupport::SpoolerNotify

Aplica-se a: Outlook 2013 | Outlook 2016

Notifica o carretel MAPI de uma alteração no status ou uma solicitação de serviço.

HRESULT SpoolerNotify(
ULONG ulFlags,
LPVOID lpvData
);

Parâmetros

ulFlags

[in] Um bitmask de sinalizadores que indica o tipo de notificação. Os provedores de transporte podem definir todos os sinalizadores, exceto NOTIFY_NEWMAIL_RECEIVED; somente NOTIFY_NEWMAIL_RECEIVED e NOTIFY_READTOSEND são válidos para provedores de repositório de mensagens. Os seguintes sinalizadores são válidos para o parâmetro ulFlags :

NOTIFY_CONFIG_CHANGE

Registra uma solicitação para alterar a configuração do provedor de transporte.

NOTIFY_CRITICAL_ERROR

Ocorreu um erro irrecuperável no provedor de transporte. Como NOTIFY_SENTDEFERRED e NOTIFY_CRITICAL_ERROR usam o parâmetro lpvData para chamadas de provedor de transporte, esses sinalizadores são mutuamente exclusivos.

NOTIFY_CRITSEC

Solicita uma seção crítica para o provedor de transporte. O parâmetro lpvData é indefinido e deve ser NULL.

NOTIFY_NEWMAIL

O carreador MAPI deve baixar as mensagens recém-recebidas no próximo horário disponível. O parâmetro lpvData é indefinido e deve ser definido como NULL.

NOTIFY_NEWMAIL_RECEIVED

Uma nova mensagem foi recebida no repositório de mensagens. O parâmetro lpvData aponta para uma estrutura de NEWMAIL_NOTIFICATION que descreve a mensagem. Esse sinalizador é usado para provedores de repositório de mensagens que são fortemente associados aos provedores de transporte e são ignorados se o provedor da loja estiver conectado com o conjunto de sinalizadores MAPI_NO_MAIL.

NOTIFY_NONCRIT

Libera uma seção crítica obtida com uma chamada anterior para SpoolerNotify com ulFlags definido como NOTIFY_CRITSEC. O parâmetro lpvData é indefinido e deve ser definido como NULL.

NOTIFY_READYTOSEND

O provedor de transporte ou repositório de mensagens está pronto para enviar mensagens. O parâmetro lpvData é indefinido e deve ser definido como NULL.

NOTIFY_SENTDEFERRED

Agora, uma mensagem adiada anteriormente deve ser enviada e o provedor de transporte deve ser notificado quando a mensagem estiver pronta para ser entregue usando uma chamada para o método IXPLogon::SubmitMessage . O identificador de entrada da mensagem adiada está contido em uma estrutura SBinary apontada por lpvData. Como NOTIFY_SENTDEFERRED e NOTIFY_CRITICAL_ERROR usam o parâmetro lpvData , esses sinalizadores são mutuamente exclusivos.

lpvData

[in] Um ponteiro para dados associados aplicáveis a uma notificação. O parâmetro lpvData aponta para dados válidos somente quando os sinalizadores a seguir são definidos (lpvData é NULL quando ulFlags é definido como os outros tipos de notificação):

configuração ulFlags Valor lpvData
NOTIFY_CRITICAL_ERROR
Informações sobre o erro.
NOTIFY_NEWMAIL_RECEIVED
Uma estrutura NEWMAIL_NOTIFICATION que contém informações sobre a mensagem recém-entregue.
NOTIFY_SENTDEFERRED
Uma estrutura SBinary que contém o identificador de entrada da mensagem adiada.

Valor de retorno

S_OK

A notificação foi bem-sucedida.

Comentários

O método IMAPISupport::SpoolerNotify é implementado para objetos de suporte do repositório de mensagens e do provedor de transporte. Esses provedores chamam spoolerNotify para notificar o spooler MAPI de uma alteração no status ou uma solicitação de serviço. O SpoolerNotify é chamado principalmente por provedores de transporte e pode ser chamado a qualquer momento durante a sessão.

Anotações para provedores de transporte

Se você tiver alterado a configuração do provedor de transporte, chame SpoolerNotify e defina ulFlags como NOTIFY_CONFIG_CHANGED. SpoolerNotify responde chamando o método IXPLogon::AddressTypes para consultar uma alteração nos tipos de endereço com suporte.

Se você precisar de uma seção crítica para garantir o processamento ininterrupto, chame SpoolerNotify com ulFlags definido como NOTIFY_CRITSEC. Definir esse sinalizador informa ao spooler MAPI que ele não deve chamar os métodos IXPLogon::Idle e IXPLogon::P oll . Embora você tenha uma seção crítica aberta, retorne MAPI_E_BUSY sempre que o método IMAPIStatus::ValidateState for chamado. Quando terminar a seção crítica, faça outra chamada para SpoolerNotify with_ulFlags_ definida como NOTIFY_NONCRIT.

Por exemplo, se o provedor de transporte remoto estiver em processo de carregamento de mensagens, talvez seja necessário permitir que um usuário insira um número de telefone para estabelecer a conexão remota. Antes de fazer loop pelo procedimento da caixa de diálogo, você deve declarar uma seção crítica. Quando o usuário fecha a caixa de diálogo, encerrando o procedimento da caixa de diálogo, você deve liberar a seção crítica.

Quando você define ulFlags como NOTIFY_CRITICAL_ERROR, o spooler MAPI não faz mais chamadas para o provedor, exceto para liberá-lo. Se você chamar spoolerNotify com NOTIFY_CRITICAL_ERROR definido nos métodos IXPLogon::StartMessage ou IXPLogon::SubmitMessage , retorne com um valor de erro apropriado da chamada StartMessage ou SubmitMessage imediatamente após a chamada SpoolerNotify .

Se o provedor de transporte se recuperou de uma condição que anteriormente o fez falhar, chame SpoolerNotify com ulFlags definido como NOTIFY_READYTOSEND. Esse sinalizador indica que o provedor está novamente pronto para lidar com mensagens.

Anotações para provedores do Repositório de Mensagens

Chame SpoolerNotify, passando o sinalizador NOTIFY_READYTOSEND em ulFlags, antes de fazer sua primeira chamada para IMAPISupport::P repareSubmit em IMessage::SubmitMessage. Essa chamada para SpoolerNotify precisa ser feita apenas uma vez por sessão.

Se o provedor do repositório de mensagens estiver fortemente associado a um provedor de transporte e você chamar SpoolerNotify com ulFlags definido como NOTIFY_NEWMAIL_RECEIVED, o spooler MAPI abrirá a nova mensagem e começará a processar a nova função de gancho de mensagem. Quando o processamento é concluído, o spooler MAPI chama o método IMsgStore::NotifyNewMail para informá-lo de sua própria nova mensagem.

Para obter mais informações sobre como chamar spoolerNotify, confira qualquer um dos seguintes tópicos:

Confira também

IMsgStore::NotifyNewMail
IXPLogon::StartMessage
IXPLogon::SubmitMessage
IMAPISupport: IUnknown