IMAPISupport::SpoolerNotify
S’applique à : Outlook 2013 | Outlook 2016
Avertit le spouleur MAPI d’une modification de status ou d’une demande de service.
HRESULT SpoolerNotify(
ULONG ulFlags,
LPVOID lpvData
);
Paramètres
ulFlags
[in] Masque de bits d’indicateurs qui indique le type de notification. Les fournisseurs de transport peuvent définir tous les indicateurs, à l’exception de NOTIFY_NEWMAIL_RECEIVED ; seuls les NOTIFY_NEWMAIL_RECEIVED et les NOTIFY_READTOSEND sont valides pour les fournisseurs de magasins de messages. Les indicateurs suivants sont valides pour le paramètre ulFlags :
NOTIFY_CONFIG_CHANGE
Inscrit une demande de modification de la configuration du fournisseur de transport.
NOTIFY_CRITICAL_ERROR
Une erreur irrécupérable s’est produite pour le fournisseur de transport. Étant donné que NOTIFY_SENTDEFERRED et NOTIFY_CRITICAL_ERROR utilisent le paramètre lpvData pour les appels de fournisseur de transport, ces indicateurs s’excluent mutuellement.
NOTIFY_CRITSEC
Demande une section critique pour le fournisseur de transport. Le paramètre lpvData n’est pas défini et doit être NULL.
NOTIFY_NEWMAIL
Le spouleur MAPI doit télécharger tous les messages nouvellement reçus à la prochaine heure disponible. Le paramètre lpvData n’est pas défini et doit être défini sur NULL.
NOTIFY_NEWMAIL_RECEIVED
Un nouveau message a été reçu dans la banque de messages. Le paramètre lpvData pointe vers une structure NEWMAIL_NOTIFICATION qui décrit le message. Cet indicateur est utilisé pour les fournisseurs de magasins de messages étroitement couplés aux fournisseurs de transport et est ignoré si le fournisseur de magasin est connecté avec l’indicateur MAPI_NO_MAIL défini.
NOTIFY_NONCRIT
Libère une section critique obtenue avec un appel précédent à SpoolerNotify avec ulFlags défini sur NOTIFY_CRITSEC. Le paramètre lpvData n’est pas défini et doit être défini sur NULL.
NOTIFY_READYTOSEND
Le fournisseur de transport ou de magasin de messages est prêt à envoyer des messages. Le paramètre lpvData n’est pas défini et doit être défini sur NULL.
NOTIFY_SENTDEFERRED
Un message précédemment différé doit maintenant être envoyé, et le fournisseur de transport doit être averti quand le message est prêt à être remis à l’aide d’un appel à la méthode IXPLogon ::SubmitMessage . L’identificateur d’entrée du message différé est contenu dans une structure SBinary pointée par lpvData. Étant donné que NOTIFY_SENTDEFERRED et NOTIFY_CRITICAL_ERROR utilisent le paramètre lpvData , ces indicateurs s’excluent mutuellement.
lpvData
[in] Pointeur vers les données associées applicables à une notification. Le paramètre lpvData pointe vers des données valides uniquement lorsque les indicateurs suivants sont définis (lpvData a la valeur NULL lorsque ulFlags est défini sur les autres types de notification) :
Paramètre ulFlags | Valeur lpvData |
---|---|
NOTIFY_CRITICAL_ERROR |
Informations sur l’erreur. |
NOTIFY_NEWMAIL_RECEIVED |
Structure NEWMAIL_NOTIFICATION qui contient des informations sur le message qui vient d’être remis. |
NOTIFY_SENTDEFERRED |
Structure SBinary qui contient l’identificateur d’entrée du message différé. |
Valeur renvoyée
S_OK
La notification a réussi.
Remarques
La méthode IMAPISupport ::SpoolerNotify est implémentée pour les objets de prise en charge de la banque de messages et du fournisseur de transport. Ces fournisseurs appellent SpoolerNotify pour informer le spouleur MAPI d’une modification de status ou d’une demande de service. SpoolerNotify est appelé principalement par les fournisseurs de transport et peut être appelé à tout moment pendant la session.
Remarques pour les fournisseurs de transport
Si vous avez modifié la configuration de votre fournisseur de transport, appelez SpoolerNotify et définissez ulFlags sur NOTIFY_CONFIG_CHANGED. SpoolerNotify répond en appelant la méthode IXPLogon ::AddressTypes pour rechercher une modification des types d’adresses pris en charge.
Si vous avez besoin d’une section critique pour garantir un traitement ininterrompu, appelez SpoolerNotify avec ulFlags défini sur NOTIFY_CRITSEC. La définition de cet indicateur informe le spouleur MAPI qu’il ne doit pas appeler les méthodes IXPLogon ::Idle et IXPLogon ::P oll . Lorsque vous disposez d’une section critique ouverte, retournez MAPI_E_BUSY chaque fois que la méthode IMAPIStatus ::ValidateState est appelée. Lorsque vous avez terminé avec la section critique, effectuez un autre appel à SpoolerNotify with_ulFlags_ défini sur NOTIFY_NONCRIT.
Par exemple, si votre fournisseur de transport distant est en train de charger des messages, vous devrez peut-être autoriser un utilisateur à entrer un numéro de téléphone pour établir la connexion à distance. Avant de parcourir la procédure de boîte de dialogue, vous devez déclarer une section critique. Lorsque l’utilisateur ferme la boîte de dialogue, mettant fin à la procédure de boîte de dialogue, vous devez libérer la section critique.
Lorsque vous définissez ulFlags sur NOTIFY_CRITICAL_ERROR, le spouleur MAPI n’effectue aucun autre appel au fournisseur, sauf pour le libérer. Si vous appelez SpoolerNotify avec NOTIFY_CRITICAL_ERROR définie à partir des méthodes IXPLogon ::StartMessage ou IXPLogon ::SubmitMessage , retournez avec une valeur d’erreur appropriée à partir de l’appel StartMessage ou SubmitMessage immédiatement après l’appel SpoolerNotify .
Si votre fournisseur de transport a récupéré après une condition qui l’a précédemment provoqué l’échec, appelez SpoolerNotify avec ulFlags défini sur NOTIFY_READYTOSEND. Cet indicateur indique que le fournisseur est à nouveau prêt à gérer les messages.
Remarques pour les fournisseurs de magasin de messages
Appelez SpoolerNotify, en passant l’indicateur NOTIFY_READYTOSEND dans ulFlags, avant d’effectuer votre premier appel à IMAPISupport ::P repareSubmit dans IMessage ::SubmitMessage. Cet appel à SpoolerNotify ne doit être effectué qu’une seule fois par session.
Si votre fournisseur de magasin de messages est étroitement couplé à un fournisseur de transport et que vous appelez SpoolerNotify avec ulFlags défini sur NOTIFY_NEWMAIL_RECEIVED, le spouleur MAPI ouvre le nouveau message et commence à traiter la nouvelle fonction de hook de message. Une fois le traitement terminé, le spouleur MAPI appelle la méthode IMsgStore ::NotifyNewMail pour vous informer de votre propre nouveau message.
Pour plus d’informations sur l’appel de SpoolerNotify, consultez l’une des rubriques suivantes :
- Implémentation de la méthode FlushQueues
- Interaction avec le spouleur MAPI
- Modèle de réception de messages
Voir aussi
IMsgStore::GetReceiveFolderTable
IXPLogon::StartMessage
IXPLogon::SubmitMessage
IMAPISupport : IUnknown