MAPIInitialize
S’applique à : Outlook 2013 | Outlook 2016
Incrémente le nombre de références de sous-système MAPI et initialise les données globales pour la DLL MAPI.
Propriété | Valeur |
---|---|
Fichier d’en-tête : |
Mapix.h |
Implémenté par : |
MAPI |
Appelé par : |
Applications clientes |
HRESULT MAPIInitialize(
LPVOID lpMapiInit
);
Paramètres
lpMapiInit
[in] Pointeur vers une structure MAPIINIT_0 . Le paramètre lpMapiInit peut être défini sur NULL.
Valeur renvoyée
S_OK
Le sous-système MAPI a été initialisé avec succès.
Remarques
La fonction MAPIInitialize incrémente le nombre de références MAPI pour le sous-système MAPI, et la fonction MAPIUninitialize décrémente le nombre de références internes. Ainsi, le nombre d’appels à une fonction doit être égal au nombre d’appels à l’autre. MAPIInitialize retourne S_OK si MAPI n’a pas été initialisé précédemment.
Un client ou un fournisseur de services doit appeler MAPIInitialize avant d’effectuer tout autre appel MAPI. Si vous ne le faites pas, les appels du client ou du fournisseur de services retournent la valeur MAPI_E_NOT_INITIALIZED.
Lors de l’appel de MAPIInitialize à partir d’une application multithread, définissez le paramètre lpMapiInit sur une structure MAPIINIT_0 déclarée comme suit :
MAPIINIT_0 MAPIINIT= { 0, MAPI_MULTITHREAD_NOTIFICATIONS}
et appelez :
MAPIInitialize (&MAPIINIT) ;
Lorsque cette structure est déclarée, MAPI crée un thread distinct pour gérer la fenêtre de notification, qui se poursuit jusqu’à ce que le nombre de références d’initialisation tombe à zéro. Un service Windows doit définir le membre ulflags de la structure MAPIINIT_0 pointée par lpMapiInit sur MAPI_NT_SERVICE.
Remarque
Vous ne pouvez pas appeler MAPIInitialize ou MAPIUninitialize à partir d’une fonction DllMain Win32 ou de toute autre fonction qui crée ou arrête des threads. Pour plus d’informations, consultez Utilisation d’objets Thread-Safe.
MAPIInitialize ne retourne aucune information d’erreur étendue. Contrairement à la plupart des autres appels MAPI, les significations de ses valeurs de retour sont strictement définies pour correspondre à l’étape particulière de l’initialisation qui a échoué :
Vérifie les paramètres et les indicateurs.
MAPI_E_INVALID_PARAMETER ou MAPI_E_UNKNOWN_FLAGS. L’appelant a passé un paramètre ou un indicateur non valide.
Initialise les clés de Registre requises par MAPI et confirme le type de système d’exploitation. Cette étape se produit uniquement si le processus client s’exécute en tant que service sous Windows et définit l’indicateur SERVICE MAPI_NT dans la structure MAPIINIT_0 .
MAPI_E_TOO_COMPLEX. Le processus d’appel est un service Windows et les clés de Registre requises par MAPI n’ont pas pu être initialisées.
Des informations supplémentaires peuvent être disponibles dans le journal des événements de l’application.
Vérifiez la compatibilité de MAPI avec OLE, puis initialisez OLE.
Vérifie la compatibilité entre les versions actuelles d’OLE et MAPI.
MAPI_E_VERSION. La version d’OLE installée sur la station de travail n’est pas compatible avec cette version de MAPI.
Initialise OLE.
Au cours de cette étape uniquement, cette fonction peut retourner un code d’erreur non répertorié ici. Toute erreur non répertoriée ici doit provenir de la fonction OLE CoInitialize.
Initialise les variables globales par processus.
MAPI_E_SESSION_LIMIT. MAPI configure le contexte spécifique au processus actuel. Des défaillances peuvent se produire sur Win16 si le nombre de processus dépasse un certain nombre, ou sur n’importe quel système si la mémoire disponible est épuisée.
Initialise les variables globales partagées de tous les processus.
MAPI_E_NOT_ENOUGH_RESOURCES. Les ressources système disponibles étaient insuffisantes pour terminer l’opération.
Initialise le moteur de notification, crée sa fenêtre et son thread si l’indicateur MAPI_MULTITHREAD_NOTIFICATIONS le demande.
MAPI_E_INVALID_OBJECT. Peut échouer si les ressources système sont épuisées.
Charge et initialise le fournisseur de profil. Vérifie que MAPIInitialize peut accéder à la clé de Registre où sont stockées les données de profil.
MAPI_E_NOT_INITIALIZED. Le fournisseur de profil a rencontré une erreur.
Référence MFCMAPI
Pour voir un exemple de code MFCMAPI, consultez le tableau suivant.
Fichier | Fonction | Commentaire |
---|---|---|
ContentsTableListCtrl.cpp |
MFCMAPI utilise la méthode MAPIInitialize pour initialiser MAPI sur un thread d’arrière-plan afin d’effectuer un traitement de table. |