IMAPIContainer::OpenEntry
Область применения: Outlook 2013 | Outlook 2016
Открывает объект в контейнере, возвращая указатель интерфейса для дальнейшего доступа.
HRESULT OpenEntry(
ULONG cbEntryID,
LPENTRYID lpEntryID,
LPCIID lpInterface,
ULONG ulFlags,
ULONG FAR * lpulObjType,
LPUNKNOWN FAR * lppUnk
);
Параметры
cbEntryID
[в] Число байтов в идентификаторе записи, на который указывает параметр lpEntryID .
lpEntryID
[в] Указатель на идентификатор записи открываемого объекта. Если lpEntryID имеет значение NULL, открывается контейнер верхнего уровня в иерархии контейнера.
lpInterface
[в] Указатель на идентификатор интерфейса (IID), представляющий интерфейс, используемый для доступа к объекту . Передача null приводит к идентификатору возвращаемого стандартного интерфейса объекта. Для сообщений стандартным интерфейсом является IMAPIMessageSite : IUnknown; для папок это IMAPIFolder : IMAPIContainer. Стандартными интерфейсами для объектов адресной книги являются IDistList : IMAPIContainer для списка рассылки и IMailUser : IMAPIProp для пользователя обмена сообщениями.
ulFlags
[в] Битовая маска флагов, управляющая способом открытия объекта. Можно задать следующие флаги:
MAPI_BEST_ACCESS
Запрос на открытие объекта с максимальными разрешениями сети, разрешенными для пользователя, и максимальным доступом к клиентскому приложению. Например, если клиент имеет разрешение на чтение и запись, объект должен быть открыт с разрешением на чтение и запись; Если клиент имеет доступ только для чтения, объект должен быть открыт с доступом только для чтения.
MAPI_DEFERRED_ERRORS
Позволяет OpenEntry успешно возвращать объект, возможно, до того, как объект будет полностью доступен вызывающему клиенту. Если объект недоступен, последующий вызов объекта может вызвать ошибку.
MAPI_MODIFY
Запрашивает разрешение на чтение и запись. По умолчанию объекты открываются с доступом только для чтения, и клиенты не должны работать при условии, что было предоставлено разрешение на чтение и запись.
SHOW_SOFT_DELETES
Показывает элементы, которые в настоящее время помечены как обратимо удаленные, то есть находятся на этапе хранения удаленных элементов.
lpulObjType
[out] Указатель на тип открытого объекта.
lppUnk
[out] Указатель на указатель на реализацию интерфейса, используемую для доступа к открытому объекту.
Возвращаемое значение
S_OK
Объект был успешно открыт.
MAPI_E_NO_ACCESS
Либо у пользователя недостаточно разрешений для открытия объекта, либо предпринята попытка открыть объект только для чтения с разрешением на чтение и запись.
MAPI_E_NOT_FOUND
Идентификатор записи, заданный lpEntryID , не представляет объект .
MAPI_E_UNKNOWN_ENTRYID
Идентификатор записи в параметре lpEntryID не имеет формата, распознаваемого контейнером.
Замечания
Метод IMAPIContainer::OpenEntry открывает объект в контейнере и возвращает указатель на реализацию интерфейса для дальнейшего доступа.
Примечания для вызывающих методов
Так как поставщики услуг не обязаны возвращать реализацию интерфейса типа, указанного идентификатором интерфейса в параметре lpInterface, проверка значение, на которое указывает параметр lpulObjType. При необходимости приведите указатель, возвращенный в lppUnk , к указателю соответствующего типа.
По умолчанию поставщики услуг открывают объекты с доступом только для чтения, если не задан флаг MAPI_MODIFY или MAPI_BEST_ACCESS. Если установлен один из этих флагов, поставщики служб пытаются вернуть изменяемый объект. Однако не следует предполагать, что из-за запроса изменяемого объекта открытый объект имеет разрешение на чтение и запись. Либо запланируйте вероятность сбоя последующего изменения, либо получите свойство PR_ACCESS_LEVEL объекта, чтобы определить уровень доступа, предоставленный OpenEntry.