Partager via


Initialisation du fournisseur de transport

S’applique à : Outlook 2013 | Outlook 2016

L’interface transport-spooler définit les appels que le spouleur MAPI effectue à un fournisseur de transport. Les fournisseurs de transport implémentent ces routines dans une bibliothèque de liens dynamiques (DLL). Le premier point d’entrée direct dans la DLL utilisée par le spouleur MAPI doit être la fonction d’initialisation du fournisseur de transport XPProviderInit.

MAPI utilise la routine GetProcAddress pour obtenir l’adresse de la routine d’initialisation du fournisseur de services, puis appelle cette routine. Le nom de la routine d’initialisation est XPProviderInit pour les fournisseurs de transport. Il est différent pour les autres types de fournisseurs de services MAPI afin qu’une DLL puisse contenir n’importe quelle combinaison de types de fournisseurs de services, mais un seul fournisseur de services d’un type particulier. Toutefois, un fournisseur de services d’un type donné peut implémenter plusieurs services de son type. Par exemple, un fournisseur de transport peut implémenter la fonctionnalité de transport de messages sur plusieurs services de message.

Le fichier d’en-tête mapispi.h a une définition de type pour le prototype de fonction de la fonction d’initialisation du fournisseur de transport et un nom de procédure prédéfini pour celui-ci. En nommant les routines d’initialisation dans vos fichiers C et C++ avec les mêmes noms que ceux utilisés par GetProcAddress et en utilisant une déclaration d’exportation simple dans votre fichier DLL.DEF, vous obtenez automatiquement la vérification du type des paramètres de votre routine d’initialisation. Consultez l’exemple de code source du fournisseur de transport pour obtenir des exemples. Pour plus d’informations, consultez Exemple de fournisseur de transport.

Si l’appel d’initialisation d’un fournisseur de services réussit mais retourne un numéro de version de l’interface de fournisseur de services trop petit pour que MAPI puisse être géré, MAPI appelle immédiatement la méthode Release de l’objet fournisseur de services et se poursuit comme si l’appel d’initialisation avait échoué avec MAPI_E_VERSION. De cette façon, MAPI et le fournisseur de services définissent conjointement la plage de numéros de version de l’interface de fournisseur de services qu’ils peuvent gérer. Si rien ne correspond, le chargement du fournisseur de services échoue avec une valeur de retour MAPI_E_VERSION.

La dernière étape pour le spouleur MAPI pour obtenir l’accès aux ressources du fournisseur de services consiste à se connecter au fournisseur de transport. Le spouleur MAPI appelle la méthode IXPProvider ::TransportLogon de l’objet IXPProvider : IUnknown retourné par XPProviderInit. Il s’agit de l’appel où les informations d’identification, si elles sont utilisées, sont cochées et où les boîtes de dialogue peuvent être autorisées.

Si un processus ouvre une deuxième session de transport sur le même fournisseur de transport et la même session MAPI, la DLL du fournisseur de transport ne doit pas créer un deuxième objet fournisseur. Le premier objet fournisseur doit être utilisé pour se connecter à la deuxième session de transport. Un fournisseur de transport doit être programmé pour prendre en charge plusieurs sessions de transport dans un seul objet fournisseur. Un deuxième objet fournisseur doit être créé uniquement si différentes sessions MAPI sont utilisées dans le même processus.