Compartir a través de


IMAPISupport::SpoolerNotify

Hace referencia a: Outlook 2013 | Outlook 2016

Notifica al colador MAPI un cambio en el estado o una solicitud de servicio.

HRESULT SpoolerNotify(
ULONG ulFlags,
LPVOID lpvData
);

Parameters

ulFlags

[in] Máscara de bits de marcas que indica el tipo de notificación. Los proveedores de transporte pueden establecer todas las marcas excepto NOTIFY_NEWMAIL_RECEIVED; solo NOTIFY_NEWMAIL_RECEIVED y NOTIFY_READTOSEND son válidos para proveedores de almacén de mensajes. Las siguientes marcas son válidas para el parámetro ulFlags :

NOTIFY_CONFIG_CHANGE

Registra una solicitud para cambiar la configuración del proveedor de transporte.

NOTIFY_CRITICAL_ERROR

Se ha producido un error irrecuperable en el proveedor de transporte. Dado que NOTIFY_SENTDEFERRED y NOTIFY_CRITICAL_ERROR usan el parámetro lpvData para las llamadas del proveedor de transporte, estas marcas son mutuamente excluyentes.

NOTIFY_CRITSEC

Solicita una sección crítica para el proveedor de transporte. El parámetro lpvData no está definido y debe ser NULL.

NOTIFY_NEWMAIL

La cola MAPI debe descargar los mensajes recién recibidos en la próxima hora disponible. El parámetro lpvData no está definido y debe establecerse en NULL.

NOTIFY_NEWMAIL_RECEIVED

Se ha recibido un nuevo mensaje en el almacén de mensajes. El parámetro lpvData apunta a una estructura NEWMAIL_NOTIFICATION que describe el mensaje. Esta marca se usa para proveedores de almacén de mensajes estrechamente asociados con proveedores de transporte y se omite si el proveedor de almacén ha iniciado sesión con el MAPI_NO_MAIL marca establecido.

NOTIFY_NONCRIT

Libera una sección crítica que se obtuvo con una llamada anterior a SpoolerNotify con ulFlags establecido en NOTIFY_CRITSEC. El parámetro lpvData no está definido y debe establecerse en NULL.

NOTIFY_READYTOSEND

El proveedor de almacén de mensajes o transporte está listo para enviar mensajes. El parámetro lpvData no está definido y debe establecerse en NULL.

NOTIFY_SENTDEFERRED

Ahora se debe enviar un mensaje aplazado anteriormente y se debe notificar al proveedor de transporte cuando el mensaje esté listo para entregarse mediante una llamada al método IXPLogon::SubmitMessage . El identificador de entrada del mensaje diferido está contenido en una estructura SBinary a la que apunta lpvData. Dado que NOTIFY_SENTDEFERRED y NOTIFY_CRITICAL_ERROR usan el parámetro lpvData , estas marcas son mutuamente excluyentes.

lpvData

[in] Puntero a los datos asociados aplicables a una notificación. El parámetro lpvData apunta a datos válidos solo cuando se establecen las siguientes marcas (lpvData es NULL cuando ulFlags se establece en los otros tipos de notificación):

Configuración de ulFlags Valor lpvData
NOTIFY_CRITICAL_ERROR
Información sobre el error.
NOTIFY_NEWMAIL_RECEIVED
Estructura de NEWMAIL_NOTIFICATION que contiene información sobre el mensaje recién entregado.
NOTIFY_SENTDEFERRED
Estructura SBinary que contiene el identificador de entrada del mensaje diferido.

Valor devuelto

S_OK

La notificación se realizó correctamente.

Comentarios

El método IMAPISupport::SpoolerNotify se implementa para los objetos de soporte técnico del almacén de mensajes y del proveedor de transporte. Estos proveedores llaman a SpoolerNotify para notificar a la cola MAPI de un cambio en el estado o una solicitud de servicio. Los proveedores de transporte llaman principalmente a SpoolerNotify y se puede llamar a en cualquier momento durante la sesión.

Notas para proveedores de transporte

Si ha cambiado la configuración del proveedor de transporte, llame a SpoolerNotify y establezca ulFlags en NOTIFY_CONFIG_CHANGED. SpoolerNotify responde llamando al método IXPLogon::AddressTypes para consultar un cambio en los tipos de direcciones admitidos.

Si necesita una sección crítica para garantizar un procesamiento ininterrumpido, llame a SpoolerNotify con ulFlags establecido en NOTIFY_CRITSEC. Al establecer esta marca se informa a la cola MAPI de que no debe llamar a los métodos IXPLogon::Idle e IXPLogon::P oll . Mientras tenga abierta una sección crítica, devuelva MAPI_E_BUSY cada vez que se llame al método IMAPIStatus::ValidateState . Cuando haya terminado con la sección crítica, realice otra llamada a SpoolerNotify with_ulFlags_ establezca en NOTIFY_NONCRIT.

Por ejemplo, si el proveedor de transporte remoto está en proceso de cargar mensajes, es posible que tenga que permitir que un usuario escriba un número de teléfono para establecer la conexión remota. Antes de recorrer en bucle el procedimiento del cuadro de diálogo, debe declarar una sección crítica. Cuando el usuario cierra el cuadro de diálogo, finalizando el procedimiento del cuadro de diálogo, debe liberar la sección crítica.

Cuando se establece ulFlags en NOTIFY_CRITICAL_ERROR, la cola MAPI no realiza ninguna llamada al proveedor excepto para liberarla. Si llama a SpoolerNotify con NOTIFY_CRITICAL_ERROR establecido desde los métodos IXPLogon::StartMessage o IXPLogon::SubmitMessage , devuelva con un valor de error adecuado desde la llamada StartMessage o SubmitMessage inmediatamente después de la llamada SpoolerNotify .

Si el proveedor de transporte se recuperó de una condición que anteriormente provocó un error, llame a SpoolerNotify con ulFlags establecido en NOTIFY_READYTOSEND. Esta marca indica que el proveedor está listo de nuevo para controlar los mensajes.

Notas para proveedores de almacén de mensajes

Llame a SpoolerNotify, pasando la marca NOTIFY_READYTOSEND en ulFlags, antes de realizar la primera llamada a IMAPISupport::P repareSubmit en IMessage::SubmitMessage. Esta llamada a SpoolerNotify solo debe realizarse una vez por sesión.

Si el proveedor del almacén de mensajes está estrechamente acoplado con un proveedor de transporte y llama a SpoolerNotify con ulFlags establecido en NOTIFY_NEWMAIL_RECEIVED, la cola MAPI abre el nuevo mensaje y comienza a procesar la nueva función de enlace de mensajes. Una vez completado el procesamiento, la cola MAPI llama al método IMsgStore::NotifyNewMail para informarle de su propio mensaje nuevo.

Para obtener más información sobre cómo llamar a SpoolerNotify, consulte cualquiera de los temas siguientes:

Vea también

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