Compartir a través de


IXPLogon::StartMessage

Hace referencia a: Outlook 2013 | Outlook 2016

Inicia la transferencia de un mensaje entrante desde el proveedor de transporte a la cola MAPI.

HRESULT StartMessage(
  ULONG ulFlags,
  LPMESSAGE lpMessage,
  ULONG FAR * lpulMsgRef
);

Parameters

ulFlags

[entrada] Reservado; debe ser cero.

lpMessage

[in] Puntero a un objeto de mensaje (que representa el mensaje entrante) que tiene permiso de lectura y escritura, que usa el proveedor de transporte para acceder a ese mensaje y manipularlo. Este objeto permanece válido hasta que el proveedor de transporte vuelve de la llamada a IXPLogon::StartMessage.

lpulMsgRef

[out] Puntero a un valor de referencia asignado al mensaje. La cola MAPI inicializa este valor en 1 antes de devolver el puntero al proveedor de transporte.

Valor devuelto

S_OK

La llamada se ha realizado correctamente y devuelva el valor esperado o los valores.

Comentarios

La cola MAPI llama al método IXPLogon::StartMessage para iniciar la transferencia de un mensaje entrante desde el proveedor de transporte a la cola MAPI. Antes de que el proveedor de transporte empiece a usar el mensaje al que apunta lpMessage, debe almacenar una referencia de mensaje en el parámetro lpulMsgRef para su posible uso mediante una llamada al método IXPLogon::TransportNotify .

Durante una llamada a StartMessage , la cola MAPI procesa los métodos de los objetos abiertos durante la transferencia del mensaje y también procesa los datos adjuntos. Este procesamiento puede tardar mucho tiempo. Los proveedores de transporte pueden llamar a la función de devolución de llamada IMAPISupport::SpoolerYield para la cola MAPI con frecuencia durante este procesamiento para liberar el tiempo de CPU para otras tareas del sistema.

Todos los destinatarios de la tabla de destinatarios que crea el proveedor de transporte para el mensaje deben contener todas las propiedades de direccionamiento necesarias. Si es necesario, el proveedor puede construir un destinatario personalizado para representar a un destinatario determinado. Sin embargo, si el proveedor puede generar una entrada de destinatario que incluya más información, debe hacerlo. Por ejemplo, si un proveedor de transporte tiene suficiente información sobre el formato de destinatario de un proveedor de libreta de direcciones que puede crear un identificador de entrada válido para un destinatario para ese formato, debe compilar el identificador de entrada.

Si se reciben propiedades no transmitibles, el proveedor de transporte no debe almacenarlas en el nuevo mensaje. Sin embargo, el proveedor de transporte debe almacenar todas las propiedades transmitibles que recibe en el nuevo mensaje.

Si el mensaje entrante es un informe de entrega o un informe nondelivery y el proveedor de transporte no puede usar el método IMAPISupport::StatusRecips para generar el informe a partir del mensaje original, el propio proveedor debe rellenar el mensaje con las propiedades adecuadas. Sin embargo, el proveedor de transporte no puede establecer la propiedad PR_ENTRYID (PidTagEntryId) del mensaje.

Para guardar el mensaje entrante en el almacén de mensajes MAPI adecuado después del procesamiento, el proveedor de transporte llama al método IMAPIProp::SaveChanges . Si el proveedor de transporte no tiene ningún mensaje que pasar a la cola MAPI, puede detener el mensaje entrante devolviendo desde la llamada StartMessage sin llamar a SaveChanges.

Todos los objetos que el proveedor de transporte abre durante una llamada StartMessage deben liberarse antes de devolverlos. Sin embargo, el proveedor no debe liberar el objeto de mensaje que la cola MAPI pasó originalmente en el parámetro lpMessage .

Si StartMessage devuelve un error, el mensaje en proceso se libera sin tener que guardar los cambios y se pierde. En este caso, el proveedor de transporte debe pasar la marca NOTIFY_CRITICAL_ERROR con una llamada al método IMAPISupport::SpoolerNotify y llamar al método IXPLogon::P oll para notificar al colador MAPI que se encuentra en una condición de error grave.

Para obtener más información, vea Interacción con la cola MAPI.

Vea también

IMAPIProp::SaveChanges

IMAPISupport::SpoolerNotify

IMAPISupport::SpoolerYield

IMAPISupport::StatusRecips

IMessage::GetRecipientTable

IXPLogon::Poll

IXPLogon::TransportNotify

IXPLogon : IUnknown