Partager via


XPProviderInit

S’applique à : Outlook 2013 | Outlook 2016

Initialise un fournisseur de transport pour l’opération.

Propriété Valeur
Fichier d’en-tête :
Mapispi.h
Implémenté par :
Fournisseurs de transport
Appelé par :
MAPI
HRESULT XPProviderInit(
  HINSTANCE hInstance,
  LPMALLOC lpMalloc,
  LPALLOCATEBUFFER lpAllocateBuffer,
  LPALLOCATEMORE lpAllocateMore,
  LPFREEBUFFER lpFreeBuffer,
  ULONG ulFlags,
  ULONG ulMAPIVer,
  ULONG FAR * lpulProviderVer,
  LPXPPROVIDER FAR * lppXPProvider
);

Paramètres

hInstance

[in] Instance de la bibliothèque de liens dynamiques (DLL) du fournisseur de transport utilisée par MAPI lors du chargement de la DLL.

lpMalloc

[in] Pointeur vers un objet allocateur de mémoire exposant l’interface OLE IMalloc . Le fournisseur de transport peut avoir besoin d’utiliser cette méthode d’allocation lors de l’utilisation de certaines interfaces telles qu’IStream.

lpAllocateBuffer

[in] Pointeur vers la fonction MAPIAllocateBuffer , à utiliser pour allouer de la mémoire.

lpAllocatePlus

[in] Pointeur vers la fonction MAPIAllocateMore , à utiliser pour allouer de la mémoire supplémentaire.

lpFreeBuffer

[in] Pointeur vers la fonction MAPIFreeBuffer , à utiliser pour libérer de la mémoire.

ulFlags

[in] Masque de bits des indicateurs. L’indicateur suivant peut être défini :

MAPI_NT_SERVICE

Le fournisseur est chargé dans le contexte d’un service Windows, un type spécial de processus sans accès à une interface utilisateur.

ulMAPIVer

[in] Numéro de version de l’interface spi (Service Provider Interface) que Mapi.dll utilise. Pour obtenir le numéro de version actuel, consultez le fichier d’en-tête Mapispi.h.

lpulProviderVer

[out] Pointeur vers le numéro de version du SPI utilisé par ce fournisseur de transport.

lppXPProvider

[out] Pointeur vers un pointeur vers l’objet fournisseur de transport initialisé.

Valeur renvoyée

S_OK

L'appel a r�ussi et a renvoy� la valeur attendue ou les valeurs.

MAPI_E_VERSION

La version SPI utilisée par MAPI n’est pas compatible avec le SPI utilisé par ce fournisseur.

Remarques

MAPI appelle la fonction de point d’entrée XPProviderInit pour initialiser un fournisseur de transport après une ouverture de session cliente. XPProviderInit est appelé une fois pour chaque fournisseur de transport spécifié dans le profil du client.

Remarques pour les responsables de l’implémentation

Un fournisseur de transport doit implémenter XPProviderInit comme fonction de point d’entrée dans la DLL du fournisseur. L’implémentation doit être basée sur le prototype de fonction XPPROVIDERINIT , également spécifié dans Mapispi.h. MAPI définit XPPROVIDERINIT pour utiliser le type d’appel d’initialisation MAPI standard, STDMAPIINITCALLTYPE, ce qui oblige XPProviderInit à suivre la convention d’appel CDECL. L’avantage de CDECL est que les appels peuvent être tentés même si le nombre de paramètres appelants ne correspond pas au nombre de paramètres définis.

Un fournisseur peut être initialisé plusieurs fois en raison d’une utilisation simultanée dans plusieurs profils ou d’une apparition plusieurs fois dans le même profil. Étant donné que l’objet provider contient du contexte, XPProviderInit doit retourner un objet fournisseur différent dans lppXPProvider pour chaque initialisation, même pour plusieurs initialisations dans le même processus.

Le fournisseur de transport doit utiliser les fonctions pointées par lpAllocateBuffer, lpAllocateMore et lpFreeBuffer pour la plupart des allocations et désallocations de mémoire. En particulier, le fournisseur doit utiliser ces fonctions pour allouer de la mémoire à utiliser par les applications clientes lors de l’appel d’interfaces objet telles que IMAPIProp ::GetProps et IMAPITable ::QueryRows. Si le fournisseur s’attend également à utiliser l’allocateur de mémoire OLE, il doit appeler la méthode IUnknown ::AddRef de l’objet allocateur vers lequel pointe le paramètre lpMalloc .

Pour plus d’informations sur l’écriture de XPProviderInit, consultez Initialisation du fournisseur de transport. Pour plus d’informations sur les fonctions de point d’entrée, consultez Implémentation d’une fonction de point d’entrée de fournisseur de services.

Voir aussi

ABProviderInit
IXPProvider : IUnknown
MSProviderInit