Поделиться через


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.

См. также

IMAPIContainer : IMAPIProp