IMAPIContainer::OpenEntry
Gilt für: Outlook 2013 | Outlook 2016
Öffnet ein Objekt im Container und gibt einen Schnittstellenzeiger für weiteren Zugriff zurück.
HRESULT OpenEntry(
ULONG cbEntryID,
LPENTRYID lpEntryID,
LPCIID lpInterface,
ULONG ulFlags,
ULONG FAR * lpulObjType,
LPUNKNOWN FAR * lppUnk
);
Parameter
cbEntryID
[in] Die Byteanzahl im Eintragsbezeichner, auf die der lpEntryID-Parameter verweist.
lpEntryID
[in] Ein Zeiger auf den Eintragsbezeichner des zu öffnenden Objekts. Wenn lpEntryID auf NULL festgelegt ist, wird der Container der obersten Ebene in der Hierarchie des Containers geöffnet.
lpInterface
[in] Ein Zeiger auf den Schnittstellenbezeichner (Interface Identifier, IID), der die Schnittstelle darstellt, die für den Zugriff auf das Objekt verwendet werden soll. Die Übergabe von NULL führt dazu, dass der Bezeichner für die Standardschnittstelle des Objekts zurückgegeben wird. Für Nachrichten ist die Standardschnittstelle IMAPIMessageSite : IUnknown; für Ordner ist es IMAPIFolder : IMAPIContainer. Die Standardschnittstellen für Adressbuchobjekte sind IDistList : IMAPIContainer für eine Verteilerliste und IMailUser : IMAPIProp für einen Messagingbenutzer.
ulFlags
[in] Eine Bitmaske von Flags, die steuert, wie das Objekt geöffnet wird. Die folgenden Flags können festgelegt werden:
MAPI_BEST_ACCESS
Fordert an, dass das Objekt mit den maximal zulässigen Netzwerkberechtigungen für den Benutzer und dem maximalen Clientanwendungszugriff geöffnet wird. Wenn der Client beispielsweise über Lese-/Schreibberechtigungen verfügt, sollte das Objekt mit Lese-/Schreibberechtigung geöffnet werden. Wenn der Client über schreibgeschützten Zugriff verfügt, sollte das Objekt mit schreibgeschütztem Zugriff geöffnet werden.
MAPI_DEFERRED_ERRORS
Ermöglicht openEntry die erfolgreiche Rückgabe, möglicherweise bevor das Objekt vollständig für den aufrufenden Client verfügbar ist. Wenn das Objekt nicht verfügbar ist, kann durch einen nachfolgenden Objektaufruf ein Fehler ausgelöst werden.
MAPI_MODIFY
Fordert Lese-/Schreibberechtigungen an. Standardmäßig werden Objekte mit schreibgeschütztem Zugriff geöffnet, und Clients sollten nicht unter der Annahme funktionieren, dass lese-/schreibberechtigungen erteilt wurden.
SHOW_SOFT_DELETES
Zeigt Elemente an, die derzeit als vorläufig gelöscht markiert sind, d. h., sie befinden sich in der Aufbewahrungszeitphase für gelöschte Elemente.
lpulObjType
[out] Ein Zeiger auf den Typ des geöffneten Objekts.
lppUnk
[out] Ein Zeiger auf einen Zeiger auf die Schnittstellenimplementierung, die für den Zugriff auf das geöffnete Objekt verwendet werden soll.
Rückgabewert
S_OK
Das Objekt wurde erfolgreich geöffnet.
MAPI_E_NO_ACCESS
Entweder verfügt der Benutzer über unzureichende Berechtigungen zum Öffnen des Objekts, oder es wurde versucht, ein schreibgeschütztes Objekt mit Lese-/Schreibberechtigung zu öffnen.
MAPI_E_NOT_FOUND
Der durch lpEntryID angegebene Eintragsbezeichner stellt kein Objekt dar.
MAPI_E_UNKNOWN_ENTRYID
Der Eintragsbezeichner im lpEntryID-Parameter weist kein vom Container erkanntes Format auf.
Hinweise
Die IMAPIContainer::OpenEntry-Methode öffnet ein Objekt in einem Container und gibt einen Zeiger auf eine Schnittstellenimplementierung zurück, die für den weiteren Zugriff verwendet werden soll.
Hinweise für Aufrufer
Da Dienstanbieter keine Schnittstellenimplementierung des Typs zurückgeben müssen, der durch den Schnittstellenbezeichner im lpInterface-Parameter angegeben wird, überprüfen Sie den Wert, auf den der lpulObjType-Parameter verweist. Wandeln Sie ggf. den in lppUnk zurückgegebenen Zeiger in einen Zeiger des entsprechenden Typs um.
Standardmäßig öffnen Dienstanbieter Objekte mit schreibgeschütztem Zugriff, es sei denn, Sie legen entweder das MAPI_MODIFY- oder MAPI_BEST_ACCESS-Flag fest. Wenn eines dieser Flags festgelegt ist, versuchen Dienstanbieter, ein änderbares Objekt zurückzugeben. Gehen Sie jedoch nicht davon aus, dass das geöffnete Objekt über lese-/schreibberechtigungen verfügt, da Sie ein änderbares Objekt angefordert haben. Planen Sie entweder die Wahrscheinlichkeit, dass eine nachfolgende Änderung fehlschlägt, oder rufen Sie die PR_ACCESS_LEVEL -Eigenschaft des Objekts ab, um die von OpenEntry gewährte Zugriffsebene zu bestimmen.