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


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.

См. также

IMAPISupport: IUnknown