IMAPISupport::OpenEntry
S’applique à : Outlook 2013 | Outlook 2016
Ouvre un objet et retourne un pointeur d’interface pour un accès supplémentaire.
HRESULT OpenEntry(
ULONG cbEntryID,
LPENTRYID lpEntryID,
LPCIID lpInterface,
ULONG ulOpenFlags,
ULONG FAR * lpulObjType,
LPUNKNOWN FAR * lppUnk
);
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 de l’objet à ouvrir.
lpInterface
[in] Pointeur vers l’identificateur d’interface (IID) qui représente l’interface à utiliser pour accéder à l’objet . Le passage de null entraîne le retour de l’interface standard de l’objet. Par exemple, si l’objet à ouvrir est un message, l’interface standard est IMessage ; pour les dossiers, il s’agit de IMAPIFolder. Les interfaces standard pour les objets de carnet d’adresses sont IDistList pour une liste de distribution et IMailUser pour un utilisateur de messagerie.
ulOpenFlags
[in] Masque de bits d’indicateurs qui contrôle la façon dont l’objet est ouvert. Les indicateurs suivants peuvent être définis :
MAPI_BEST_ACCESS
Demande que l’objet soit ouvert avec les autorisations réseau maximales autorisées pour l’appelant. Par exemple, si l’appelant dispose d’une autorisation de lecture/écriture, l’objet doit être ouvert en lecture/écriture ; si l’appelant dispose d’une autorisation en lecture seule, l’objet doit être ouvert en lecture seule.
MAPI_DEFERRED_ERRORS
Permet à OpenEntry de retourner avec succès, éventuellement avant que l’objet ne soit entièrement accessible à l’appelant. Si l’objet n’est pas accessible, l’exécution d’un appel d’objet suivant peut entraîner une erreur.
MAPI_MODIFY
Demande l’autorisation de lecture/écriture. Par défaut, les objets sont ouverts en lecture seule et les appelants ne doivent pas travailler sur l’hypothèse que l’autorisation de lecture/écriture a été accordée.
lpulObjType
[out] Pointeur vers le type de l’objet ouvert.
lppUnk
[out] Pointeur vers un pointeur vers l’objet ouvert.
Valeur renvoyée
S_OK
L’objet a été ouvert avec succès.
MAPI_E_NO_ACCESS
Une tentative de modification d’un objet en lecture seule a été effectuée ou une tentative d’accès à un objet pour lequel l’utilisateur ne dispose pas des autorisations suffisantes.
MAPI_E_NOT_FOUND
Aucun objet n’est associé à l’identificateur d’entrée passé dans le paramètre lpEntryID .
MAPI_E_UNKNOWN_ENTRYID
L’identificateur d’entrée passé dans le paramètre lpEntryID est dans un format méconnaissable. Cette valeur est généralement retournée si le fournisseur de carnet d’adresses qui contient l’objet n’est pas ouvert.
Remarques
La méthode IMAPISupport ::OpenEntry est implémentée pour tous les objets de prise en charge du fournisseur de services. Les fournisseurs de services appellent IMAPISupport ::OpenEntry pour récupérer un pointeur vers une interface qui peut être utilisée pour accéder à un objet particulier.
Remarques pour les appelants
Appelez IMAPISupport ::OpenEntry uniquement lorsque vous ne savez pas quel type d’objet vous ouvrez. Si vous savez que vous ouvrez un dossier ou un message, appelez plutôt IMsgStore ::OpenEntry . Si vous savez que vous ouvrez un conteneur de carnet d’adresses, un utilisateur de messagerie ou une liste de distribution, appelez IAddrBook ::OpenEntry. Ces méthodes plus spécifiques sont plus rapides que IMAPISupport ::OpenEntry.
IMAPISupport ::OpenEntry ouvre tous les objets en lecture seule, sauf si vous définissez l’indicateur MAPI_MODIFY ou MAPI_BEST_ACCESS dans le paramètre ulFlags et que vos autorisations sont suffisantes. La définition de l’un de ces indicateurs ne garantit pas un type particulier d’accès ; Les autorisations qui vous sont accordées dépendent de votre niveau d’accès, de l’objet et du fournisseur de services propriétaire de l’objet. Pour déterminer le niveau d’accès de l’objet ouvert, récupérez sa propriété PR_ACCESS_LEVEL (PidTagAccessLevel).
Vérifiez la valeur retournée dans le paramètre lpulObjType pour déterminer que le type d’objet retourné correspond à ce que vous attendiez. Si le type d’objet est comme prévu, convertissez le pointeur du paramètre lppUnk en pointeur du type approprié. Par exemple, si vous ouvrez un dossier, castez lppUnk en pointeur de type LPMAPIFOLDER.