IXPLogon::StartMessage
S’applique à : Outlook 2013 | Outlook 2016
Lance le transfert d’un message entrant du fournisseur de transport vers le spouleur MAPI.
HRESULT StartMessage(
ULONG ulFlags,
LPMESSAGE lpMessage,
ULONG FAR * lpulMsgRef
);
Paramètres
ulFlags
[in] R�serv� ; doit �tre �gal � z�ro.
lpMessage
[in] Pointeur vers un objet message (représentant le message entrant) qui dispose d’une autorisation de lecture/écriture, qui est utilisé par le fournisseur de transport pour accéder à ce message et le manipuler. Cet objet reste valide jusqu’à ce que le fournisseur de transport soit retourné à partir de l’appel à IXPLogon ::StartMessage.
lpulMsgRef
[out] Pointeur vers une valeur de référence affectée au message. Le spouleur MAPI initialise cette valeur sur 1 avant de retourner le pointeur vers le fournisseur de transport.
Valeur renvoyée
S_OK
L'appel a r�ussi et a renvoy� la valeur attendue ou les valeurs.
Remarques
Le spouleur MAPI appelle la méthode IXPLogon ::StartMessage pour lancer le transfert d’un message entrant du fournisseur de transport vers le spouleur MAPI. Avant que le fournisseur de transport commence à utiliser le message pointé par lpMessage, il doit stocker une référence de message dans le paramètre lpulMsgRef pour une utilisation potentielle par un appel à la méthode IXPLogon ::TransportNotify .
Pendant un appel StartMessage , le spouleur MAPI traite les méthodes des objets ouverts pendant le transfert du message, et traite également les pièces jointes. Ce traitement peut prendre beaucoup de temps. Les fournisseurs de transport peuvent appeler la fonction de rappel IMAPISupport ::SpoolerYield pour le spouleur MAPI fréquemment pendant ce traitement afin de libérer du temps processeur pour d’autres tâches système.
Tous les destinataires de la table de destinataires que le fournisseur de transport crée pour le message doivent contenir toutes les propriétés d’adressage requises. Si nécessaire, le fournisseur peut construire un destinataire personnalisé pour représenter un destinataire particulier. Toutefois, si le fournisseur peut produire une entrée de destinataire qui inclut plus d’informations, il doit le faire. Par exemple, si un fournisseur de transport dispose d’informations suffisantes sur le format de destinataire d’un fournisseur de carnet d’adresses pour générer un identificateur d’entrée valide pour un destinataire pour ce format, il doit générer l’identificateur d’entrée.
Si des propriétés nontransmitables sont reçues, le fournisseur de transport ne doit pas les stocker dans le nouveau message. Toutefois, le fournisseur de transport doit stocker toutes les propriétés transmettables qu’il reçoit dans le nouveau message.
Si le message entrant est un rapport de remise ou un rapport non remis et que le fournisseur de transport ne peut pas utiliser la méthode IMAPISupport ::StatusRecips pour générer le rapport à partir du message d’origine, le fournisseur doit lui-même remplir le message avec les propriétés appropriées. Toutefois, le fournisseur de transport ne peut pas définir la propriété PR_ENTRYID (PidTagEntryId) du message.
Pour enregistrer le message entrant dans la banque de messages MAPI appropriée après le traitement, le fournisseur de transport appelle la méthode IMAPIProp ::SaveChanges . Si le fournisseur de transport n’a pas de messages à transmettre au spouleur MAPI, il peut arrêter le message entrant en retournant à partir de l’appel StartMessage sans appeler SaveChanges.
Tous les objets que le fournisseur de transport ouvre pendant un appel StartMessage doivent être libérés avant de retourner. Toutefois, le fournisseur ne doit pas libérer l’objet de message que le spouleur MAPI a transmis à l’origine dans le paramètre lpMessage .
Si StartMessage retourne une erreur, le message en cours est libéré sans que les modifications soient enregistrées et est perdu. Dans ce cas, le fournisseur de transport doit passer l’indicateur NOTIFY_CRITICAL_ERROR avec un appel à la méthode IMAPISupport ::SpoolerNotify et appeler la méthode IXPLogon ::P oll pour informer le spouleur MAPI qu’il se trouve dans un état d’erreur grave.
Pour plus d’informations, consultez Interaction avec le spouleur MAPI.