IXPLogon::TransportNotify
Hace referencia a: Outlook 2013 | Outlook 2016
Indica la aparición de un evento sobre el que el proveedor de transporte solicitó la notificación.
HRESULT TransportNotify(
ULONG FAR * lpulFlags,
LPVOID FAR * lppvData
);
Parameters
lpulFlags
[entrada, salida] Máscara de bits de marcas que señala eventos de notificación. El colador MAPI puede establecer las siguientes marcas en la entrada y se deben devolver sin cambios en la salida:
NOTIFY_ABORT_DEFERRED
Notifica al proveedor de transporte que se está aplazando un mensaje para el que aceptó la responsabilidad. Solo los proveedores de transporte que admiten el aplazamiento deben admitir esta marca. El parámetro lppvData apunta al identificador de entrada del mensaje cancelado. Los mensajes que la cola MAPI no ha procesado todavía se pueden aplazar llamando al método IMsgStore::AbortSubmit .
NOTIFY_BEGIN_INBOUND
La cola MAPI ahora puede aceptar mensajes entrantes para esta sesión del proveedor de transporte. La cola MAPI llama regularmente al método IXPLogon::P oll si el proveedor de transporte establece la marca de LOGON_SP_POLL con la llamada IXPProvider::TransportLogon en el inicio de sesión. Una vez establecida la marca NOTIFY_BEGIN_INBOUND, la cola MAPI respeta la marca de NOTIFY_NEWMAIL pasada en la llamada al método IMAPISupport::SpoolerNotify . La fila de tabla de estado de la sesión del proveedor de transporte debe actualizarse antes de devolver llamando al método IMAPISupport::ModifyStatusRow . Las marcas NOTIFY_BEGIN_INBOUND y NOTIFY_END_INBOUND son mutuamente excluyentes.
NOTIFY_BEGIN_INBOUND_FLUSH
Indica al proveedor de transporte que recorra los mensajes entrantes lo más rápido posible. Para cumplir con esta notificación, el proveedor de transporte debe establecer la marca STATUS_INBOUND_FLUSH en la propiedad PR_STATUS_CODE (PidTagStatusCode) de su fila de tabla de estado tan pronto como sea posible, mediante ModifyStatusRow. Un ciclo de mensajería entrante se completa cuando el proveedor determina que ha descargado todo lo que puede, o cuando ha recibido una llamada al método TransportNotify con el NOTIFY_END_INBOUND_FLUSH marca establecido. Hasta el final del ciclo de mensajería entrante, el proveedor no debe llamar al método IMAPISupport::SpoolerYield ni, de lo contrario, renunciar a los ciclos al sistema operativo para acelerar la entrega de mensajes entrantes. Esto es aceptable porque la cola MAPI normalmente usa NOTIFY_BEGIN_INBOUND_FLUSH solo en respuesta a la solicitud de un usuario, a través de una aplicación cliente, para entregar todos los mensajes ahora. Al final de la operación de vaciado de entrada, el proveedor debe usar SpoolerNotify para borrar la marca de STATUS_INBOUND_FLUSH en la propiedad PR_STATUS_CODE de su fila de estado.
NOTIFY_BEGIN_OUTBOUND
Ahora se pueden realizar operaciones salientes para esta sesión del proveedor de transporte. Si hay mensajes que se van a enviar para este proveedor, sigue una llamada al método IXPLogon::SubmitMessage . La fila de tabla de estado de esta sesión debe actualizarse antes de devolverla. Las marcas NOTIFY_BEGIN_OUTBOUND y NOTIFY_END_OUTBOUND son mutuamente excluyentes.
NOTIFY_BEGIN_OUTBOUND_FLUSH
Funciona de forma similar a la marca NOTIFY_BEGIN_INBOUND_FLUSH, pero hace referencia a los mensajes salientes. Se STATUS_OUTBOUND_FLUSH la marca de estado adecuada.
NOTIFY_CANCEL_MESSAGE
La cola MAPI debe cancelar la transferencia del mensaje para el que el parámetro lppvData apunta al valor de 32 bits de la llamada al método IXPLogon::SubmitMessage . La marca NOTIFY_CANCEL_MESSAGE se puede establecer sin que el proveedor de transporte haya devuelto desde la llamada al método SubmitMessage, IXPLogon::StartMessage o IXPLogon::EndMessage asociada al mensaje. El proveedor de transporte debe devolver lo antes posible desde el punto de entrada que controla el mensaje cancelado. Para un mensaje entrante que se está procesando actualmente, el proveedor de transporte debe guardar el mensaje entrante dondequiera que esté almacenado actualmente y entregarlo de nuevo en el siguiente momento conveniente. Los datos del objeto de mensaje ya almacenados para el mensaje entrante se descartan. Si el proveedor de transporte no actualizo este valor de 32 bits en la hora StartMessage o SubmitMessage , el valor es 0 para los mensajes salientes y 1 para los mensajes entrantes.
NOTIFY_END_INBOUND
Las operaciones entrantes deben cesar para esta sesión del proveedor de transporte. La cola MAPI deja de usar el método Poll y omite NOTIFY_NEWMAIL para esta sesión. Los mensajes en proceso deben completarse. La fila de tabla de estado de la sesión de transporte debe actualizarse llamando a ModifyStatusRow antes de devolverla. Las marcas NOTIFY_END_INBOUND y NOTIFY_BEGIN_INBOUND son mutuamente excluyentes.
NOTIFY_END_INBOUND_FLUSH
Notifica al proveedor de transporte que salga del modo de vaciado de entrada. El proveedor de transporte no debe detener la descarga, pero la descarga debe realizarse en segundo plano. La fila de la tabla de estado de la sesión de transporte debe actualizarse llamando a ModifyStatusRow cuando el proveedor de transporte pueda cumplir con esta notificación.
NOTIFY_END_OUTBOUND
Las operaciones salientes deben cesar para esta sesión del proveedor de transporte. La cola MAPI deja de llamar a SubmitMessage y omite la marca SpoolerNotify NOTIFY_READYTOSEND. Si hay un mensaje saliente que se está enviando actualmente, no se debe detener; Para detener la entrega de un mensaje, use la marca NOTIFY_CANCEL_MESSAGE. La fila de tabla de estado de esta sesión debe actualizarse llamando a ModifyStatusRow antes de devolverla. Las marcas NOTIFY_END_INBOUND y NOTIFY_BEGIN_OUTBOUND son mutuamente excluyentes.
NOTIFY_END_OUTBOUND_FLUSH
Funciona de forma similar a NOTIFY_END_INBOUND_FLUSH, pero hace referencia a los mensajes salientes. Se STATUS_OUTBOUND_FLUSH la marca de estado adecuada.
lppvData
[out] Puntero a un puntero a datos específicos del evento. Para obtener más información sobre lo que especifica lppvData , vea la descripción del parámetro lpulFlags .
Valor devuelto
S_OK
La llamada se realizó correctamente y devolvió el valor o los valores esperados.
Comentarios
La cola MAPI llama al método IXPLogon::TransportNotify para indicar al proveedor de transporte sobre los eventos para los que se ha solicitado la notificación. Estos eventos incluyen una solicitud de cola MAPI para cancelar una transferencia de mensajes, el inicio o el final de las operaciones de transporte entrantes o salientes, y el inicio o el final de una operación para borrar una cola de mensajes entrantes o salientes.
Cuando el usuario intenta cancelar un mensaje que indica que el proveedor de transporte se ha aplazado previamente, la cola MAPI llama a TransportNotify, pasando las marcas NOTIFY_ABORT_DEFERRED y NOTIFY_CANCEL_MESSAGE en ulFlags. Si la cola MAPI se cierra de sesión y sigue teniendo mensajes en la cola, solo pasa NOTIFY_ABORT_DEFERRED en ulFlags cuando llama a TransportNotify.
Notas a los implementadores
El proveedor debe sincronizar el acceso a sus datos en esta llamada, ya que la cola MAPI puede invocar este método desde otro subproceso de ejecución o desde un procedimiento para una ventana diferente. Lo más probable es que esto ocurra cuando la cola MAPI señale la cancelación de un mensaje que el proveedor de transporte ha empezado a enviar.