Tables d’état
S’applique à : Outlook 2013 | Outlook 2016
Le tableau status contient des informations relatives à l’état de la session active. Il existe une table status pour chaque session MAPI qui inclut des informations fournies par MAPI et par les fournisseurs de services. MAPI fournit des données pour trois lignes : une ligne pour le sous-système MAPI, une ligne pour le spouleur MAPI et une ligne pour le carnet d’adresses intégré. Étant donné que les fournisseurs de transport doivent fournir des informations status à la table de status, il existe une ligne pour chaque fournisseur de transport actif. Les fournisseurs de carnet d’adresses et de magasin de messages peuvent choisir de prendre en charge la table status.
Étant donné que chaque ligne est fournie par une ressource différente, l’ensemble de colonnes peut varier d’une ligne à l’autre. Il existe un ensemble de colonnes que chaque objet status doit fournir et un ensemble de colonnes fourni par MAPI. Un fournisseur de services peut ajouter à ces jeux pour exposer des propriétés spécifiques au fournisseur. Par exemple, les fournisseurs de magasins de messages peuvent ajouter PR_STORE_RECORD_KEY (PidTagStoreRecordKey) pour fournir aux clients l’identificateur de leur magasin de messages. Les clients doivent avoir une connaissance préalable de l’existence de ces informations supplémentaires pour pouvoir les utiliser.
Le tableau suivant répertorie les propriétés qui doivent se trouver dans chaque ligne de table status. L’implémenteur de l’objet status fournit certaines des propriétés ; d’autres sont calculées par MAPI.
Propriétés fournies par status objet | Propriétés fournies par MAPI |
---|---|
PR_DISPLAY_NAME (PidTagDisplayName) |
PR_PROVIDER_DLL_NAME (PidTagProviderDllName) |
PR_STATUS_CODE (PidTagStatusCode) |
PR_RESOURCE_FLAGS (PidTagResourceFlags) |
PR_RESOURCE_METHODS (PidTagResourceMethods) |
PR_RESOURCE_TYPE (PidTagResourceType) |
Si l’objet status fournit une identité, il doit définir PR_IDENTITY_DISPLAY (PidTagIdentityDisplay), PR_IDENTITY_ENTRYID (PidTagIdentityEntryId) et PR_IDENTITY_SEARCH_KEY (PidTagIdentitySearchKey) et inclure ces propriétés dans la table.
Quatre propriétés sont calculées par MAPI pour chaque ligne de table status :
Propriété | ... |
---|---|
PR_ENTRYID (PidTagEntryId) |
PR_INSTANCE_KEY (PidTagInstanceKey) |
PR_OBJECT_TYPE (PidTagObjectType) |
PR_ROWID (PidTagRowid) |
MAPI affecte un identificateur d’entrée à la ligne status pour permettre aux clients d’ouvrir l’objet status correspondant. Un identificateur de ligne est également affecté pour identifier la ligne dans la table, car il s’agit d’une clé instance pour identifier les données dans l’objet status. La propriété PR_OBJECT_TYPE est définie sur MAPI_STATUS.
Pour accéder à la table status, les clients appellent la méthode IMAPISession ::GetStatusTable. Cet appel ne doit pas être effectué immédiatement au démarrage. En effet, GetStatusTable doit attendre que le spouleur MAPI initialise les fournisseurs de transport, opération qui est reportée jusqu’à ce que le client ait terminé son ouverture de session. GetStatusTable est un appel relativement rapide une fois que le spouleur MAPI a terminé son traitement de démarrage.
Les informations de la table d’état peuvent être utilisées de différentes façons, par exemple pour accéder à un objet status, pour déterminer si un client s’exécute en mode connecté ou hors connexion, et pour surveiller l’état d’un fournisseur. Par exemple, les clients peuvent ouvrir l’objet status d’un fournisseur de services spécifique en transmettant la valeur de la propriété PR_ENTRYID à la méthode IMAPISession ::OpenEntry. L’objet status prend en charge l’interface IMAPIStatus, interface qui contient des méthodes pour modifier le mot de passe d’un fournisseur de services, vider la file d’attente des messages, afficher une feuille de propriétés de configuration ou confirmer status directement avec un fournisseur. Les informations de la table d’état peuvent également être utilisées pour créer une boîte de dialogue afin d’informer les clients de la progression pendant une opération de longue durée.
Les fournisseurs de services qui prennent en charge la table status utilisent la méthode IMAPISupport ::ModifyStatusRow pour créer et mettre à jour leur ligne. Chaque fois qu’une modification se produit sur leur ligne, tous les objets récepteurs inscrits pour recevoir status notifications de table doivent être notifiés. Les fournisseurs de services peuvent appeler la méthode IMAPISupport ::Notify s’ils utilisent l’utilitaire de notification MAPI ou appeler directement la méthode IMAPIAdviseSink ::OnNotify de chaque récepteur.