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


IAddrBook::OpenEntry

Область применения: Outlook 2013 | Outlook 2016

Открывает запись адресной книги и возвращает указатель на интерфейс, который можно использовать для доступа к записи.

HRESULT OpenEntry(
  ULONG cbEntryID,
  LPENTRYID lpEntryID,
  LPCIID lpInterface,
  ULONG ulFlags,
  ULONG FAR * lpulObjType,
  LPUNKNOWN FAR * lppUnk
);

Параметры

cbEntryID

[в] Число байтов в идентификаторе записи, на который указывает параметр lpEntryID .

lpEntryID

[в] Указатель на идентификатор записи, представляющий открываемую запись адресной книги.

lpInterface

[в] Указатель на идентификатор интерфейса (IID), используемый для доступа к открытой записи. Передача NULL возвращает стандартный интерфейс объекта. Для пользователей обмена сообщениями стандартным интерфейсом является IMailUser : IMAPIProp. Для списков рассылки это IDistList : IMAPIContainer , а для контейнеров — IABContainer : IMAPIContainer. Вызывающие лица могут задать для lpInterface соответствующий стандартный интерфейс или интерфейс в иерархии наследования.

ulFlags

[в] Битовая маска флагов, управляющая способом открытия записи. Можно задать следующие флаги.

MAPI_BEST_ACCESS

Запрашивает открытие записи с максимально допустимыми разрешениями сети и клиента. Например, если клиент имеет разрешение на чтение и запись, поставщик адресной книги должен попытаться открыть запись с разрешением на чтение и запись. Клиент может получить предоставленный уровень доступа, вызвав метод IMAPIProp::GetProps открытой записи и получите свойство PR_ACCESS_LEVEL (PidTagAccessLevel).

MAPI_CACHE_ONLY

Открывает запись адресной книги и обращается к ней только из кэша. Например, этот флаг можно использовать, чтобы разрешить клиентскому приложению открывать глобальный список адресов (GAL) в режиме кэшированного обмена и получать доступ к записи в этой адресной книге из кэша без создания трафика между клиентом и сервером. Этот флаг поддерживается только поставщиком адресной книги Exchange.

MAPI_DEFERRED_ERRORS

Позволяет вызову завершиться успешно, возможно, до того, как запись будет полностью открыта и доступна. Это означает, что последующие вызовы записи могут возвращать ошибку.

MAPI_GAL_ONLY

Используйте только глобальный список адресов для разрешения имен. Этот флаг поддерживается только поставщиком адресной книги Exchange.

Примечание.

MAPI_GAL_ONLY ulFlags может не быть определен в текущем загружаемом файле заголовка. В этом случае его можно добавить в код, используя следующее значение: #define MAPI_GAL_ONLY (0x00000080)

MAPI_MODIFY

Запрашивает открытие записи с разрешением на чтение и запись. Так как записи по умолчанию открываются с доступом только для чтения, клиенты не должны предполагать, что разрешение на чтение и запись было предоставлено независимо от того, задано ли MAPI_MODIFY.

MAPI_NO_CACHE

Не используйте автономную адресную книгу для разрешения имен. Этот флаг поддерживается только поставщиком адресной книги Exchange.

lpulObjType

[out] Указатель на тип открытой записи.

lppUnk

[out] Указатель на указатель на открытую запись.

Возвращаемое значение

S_OK

Запись успешно открыта.

MAPI_E_NO_ACCESS

Предпринята попытка открыть запись, для которой у пользователя недостаточно разрешений.

MAPI_E_NOT_FOUND

Запись, представленная lpEntryID , не существует.

MAPI_E_UNKNOWN_ENTRYID

Идентификатор записи, указанный в lpEntryID , не распознается. Это значение обычно возвращается, если поставщик адресной книги, ответственный за соответствующую запись, не открыт.

Замечания

Клиенты и поставщики услуг вызывают метод IAddrBook::OpenEntry , чтобы открыть запись адресной книги. MAPI перенаправит вызов соответствующему поставщику адресной книги на основе структуры MAPIUID , включенной в идентификатор записи, переданный в параметре lpEntryID . Поставщик адресной книги открывает запись как доступную только для чтения, если в параметре ulFlags не установлен флаг MAPI_MODIFY или MAPI_BEST_ACCESS. Однако эти флаги являются предложениями. Если поставщик адресной книги не разрешает изменение запрошенной записи, он возвращает MAPI_E_NO_ACCESS.

Параметр lpInterface указывает, какой интерфейс следует использовать для доступа к открытой записи. Передача NULL в lpInterface означает, что для этого типа записи должен использоваться стандартный интерфейс MAPI. Так как поставщик адресной книги может возвращать интерфейс, отличный от интерфейса, предложенного параметром lpInterface, вызывающий должен проверка значение, возвращаемое в параметре lpulObjType, чтобы определить, является ли возвращаемый тип объекта ожидаемым. Если тип объекта не соответствует ожидаемому типу, вызывающий объект может привести параметр lppUnk к типу, который является более подходящим.

См. также