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