Partager via


IABContainer::CreateEntry

S’applique à : Outlook 2013 | Outlook 2016

Crée une entrée, qui peut être un utilisateur de messagerie, une liste de distribution ou un autre conteneur.

HRESULT CreateEntry(
  ULONG cbEntryID,
  LPENTRYID lpEntryID,
  ULONG ulCreateFlags,
  LPMAPIPROP FAR * lppMAPIPropEntry
);

Paramètres

cbEntryID

[in] Nombre d’octets dans l’identificateur d’entrée vers lequel pointe le paramètre lpEntryID .

lpEntryID

[in] Pointeur vers l’identificateur d’entrée d’un modèle pour créer des entrées d’un type particulier.

ulCreateFlags

[in] Masque de bits d’indicateurs qui contrôle la façon dont la création d’entrée est effectuée. Les indicateurs suivants peuvent être définis :

CREATE_CHECK_DUP_LOOSE

Un niveau faible de vérification des entrées en double doit être effectué. L’implémentation de la vérification des entrées en double libre est propre au fournisseur. Par exemple, un fournisseur peut définir une correspondance libre comme deux entrées qui ont le même nom d’affichage.

CREATE_CHECK_DUP_STRICT

Un niveau strict de vérification des entrées en double doit être effectué. L’implémentation d’une vérification stricte des entrées en double est propre au fournisseur. Par exemple, un fournisseur peut définir une correspondance stricte comme deux entrées qui ont le même nom d’affichage et la même adresse de messagerie.

CREATE_REPLACE

Une nouvelle entrée doit remplacer une entrée existante s’il est déterminé que les deux sont des doublons.

lppMAPIPropEntry

[out] Pointeur vers un pointeur vers l’entrée nouvellement créée.

Valeur renvoyée

S_OK

La nouvelle entrée a été créée avec succès.

Remarques

La méthode IABContainer ::CreateEntry crée une entrée d’un type particulier dans le conteneur spécifié, renvoyant un pointeur vers une implémentation d’interface pour un accès supplémentaire à l’entrée. La nouvelle entrée est créée à l’aide d’un modèle qui a été sélectionné dans la liste des modèles disponibles du conteneur publiés dans sa table unique. Les appelants accèdent à la table unique d’un conteneur en appelant sa méthode IMAPIProp ::OpenProperty et en demandant la propriété PR_CREATE_TEMPLATES (PidTagCreateTemplates).

Remarques pour les responsables de l’implémentation

Tous les conteneurs qui prennent en charge la méthode IABContainer ::CreateEntry doivent être modifiables. Définissez l’indicateur AB_MODIFIABLE de votre conteneur dans sa propriété PR_CONTAINER_FLAGS (PidTagContainerFlags) pour indiquer qu’il est modifiable.

Vous devez prendre en charge tous les indicateurs ulCreateFlags . Toutefois, l’interprétation et l’utilisation de ces indicateurs sont spécifiques à l’implémentation ; autrement dit, vous pouvez déterminer ce que signifient la sémantique de CREATE_CHECK_DUP_LOOSE et CREATE_CHECK_DUP_STRICT dans le contexte de votre implémentation. Si vous ne pouvez pas ou ne pouvez pas déterminer si une entrée est un doublon, autorisez toujours la création de l’entrée.

Certains fournisseurs implémentent une vérification d’entrée stricte en faisant correspondre le nom d’affichage, l’adresse de messagerie et la clé de recherche dans une entrée ; d’autres fournisseurs limitent la correspondance au nom d’affichage et à l’adresse. La vérification des entrées libres est souvent implémentée en vérifiant uniquement le nom d’affichage.

Remarques concernant les implémenteurs de fournisseurs de carnets d’adresses hôtes

Si votre conteneur peut créer des entrées à partir des modèles d’autres fournisseurs, votre implémentation de CreateEntry doit fournir un stockage pour tout ou partie des propriétés associées aux entrées créées. Par exemple, si vous fournissez du stockage pour la propriété PR_DETAILS_TABLE (PidTagDetailsTable) d’une entrée, vous pouvez générer sa boîte de dialogue détails sans avoir à dépendre du fournisseur étranger.

Si votre conteneur peut créer des entrées qui prennent en charge la propriété PR_TEMPLATEID (PidTagTemplateid), votre implémentation de CreateEntry doit effectuer les opérations suivantes :

  1. Appelez la méthode IMAPISupport ::OpenTemplateID . OpenTemplateID permet au code du fournisseur étranger pour l’entrée de se lier à la nouvelle entrée en cours de création. Les fournisseurs étrangers prennent en charge ce processus de liaison pour conserver le contrôle des entrées créées à partir de leurs modèles dans les conteneurs des fournisseurs de carnets d’adresses hôtes.

  2. Effectuez toute initialisation nécessaire et renseignez le nouvel objet avec toutes les propriétés de l’entrée dans le fournisseur étranger que l’objet a retournées dans le paramètre lppMAPIPropNew à partir d’OpenTemplateID.

Si OpenTemplateID réussit, copiez les propriétés dans l’implémentation pointée par le paramètre lppMAPIPropNew plutôt que directement vers l’implémentation pointée par le paramètre lpMAPIPropData . Initialisez la nouvelle entrée pour une utilisation hors connexion comme vous le feriez pour toute autre entrée d’un fournisseur étranger.

Si OpenTemplateID retourne une erreur, CreateEntry doit échouer. N’autorisez pas la création de l’entrée. Étant donné que le fournisseur étranger peut faire des hypothèses sur les données de votre fournisseur, ne créez pas d’entrée avec un identificateur de modèle qui n’a pas été correctement lié au fournisseur étranger.

Remarques pour les appelants

Lorsque CreateEntry est retourné, vous pouvez ou non accéder immédiatement à l’identificateur d’entrée de la nouvelle entrée. Certains fournisseurs de carnets d’adresses ne le rendent pas disponible tant que vous n’avez pas appelé la méthode IMAPIProp ::SaveChanges de la nouvelle entrée.

Bien que les indicateurs de vérification des doublons soient passés en tant que paramètres à CreateEntry, l’opération de vérification dupliquée ne se produit pas tant que SaveChanges n’est pas appelé. Par conséquent, les erreurs associées telles que MAPI_E_COLLISION, qui indique qu’une tentative de création d’une entrée existante a été effectuée, sont retournées par SaveChanges plutôt que par CreateEntry.

Voir aussi

IABContainer::CopyEntries

IMAPIProp::OpenProperty

IMAPIProp::SaveChanges

PidTagCreateTemplates, propriété canonique

IABContainer : IMAPIContainer