IMsgStore::OpenEntry
Область применения: Outlook 2013 | Outlook 2016
Открывает папку или сообщение и возвращает указатель интерфейса для дальнейшего доступа.
HRESULT OpenEntry(
ULONG cbEntryID,
LPENTRYID lpEntryID,
LPCIID lpInterface,
ULONG ulFlags,
ULONG FAR * lpulObjType,
LPUNKNOWN FAR * lppUnk
);
Параметры
cbEntryID
[в] Число байтов в идентификаторе записи, на который указывает параметр lpEntryID.
lpEntryID
[в] Указатель на идентификатор записи открываемого объекта или значение NULL. Если lpEntryID имеет значение NULL, OpenEntry открывает корневую папку для хранилища сообщений.
lpInterface
[в] Указатель на идентификатор интерфейса (IID), представляющий интерфейс, используемый для доступа к открытому объекту. Передача null приводит к возврату стандартного интерфейса объекта (IMAPIFolder для папок и IMessage для сообщений).
ulFlags
[в] Битовая маска флагов, управляющая способом открытия объекта. Можно использовать следующие флаги:
MAPI_BEST_ACCESS
Запрашивает открытие объекта с использованием максимального сетевого разрешения, разрешенного для пользователя, и максимального доступа к клиентскому приложению. Например, если у клиента есть разрешение на чтение и запись, объект должен быть открыт с помощью разрешения на чтение и запись. Если клиент имеет разрешение только для чтения, объект должен быть открыт с помощью разрешения только для чтения.
MAPI_DEFERRED_ERRORS
Позволяет OpenEntry успешно возвращать объект, возможно, до того, как объект будет полностью доступен вызывающему клиенту. Если объект недоступен, последующий вызов объекта может вызвать ошибку.
MAPI_MODIFY
Запрашивает разрешение на чтение и запись. По умолчанию объекты открываются с разрешением только для чтения, и клиенты не должны работать при условии предоставления разрешения на чтение и запись.
lpulObjType
[out] Указатель на тип открытого объекта.
lppUnk
[out] Указатель на указатель на открытый объект.
Возвращаемое значение
S_OK
����� ������� � ������ ��������� ��������� ��� ��������.
MAPI_E_NO_ACCESS
Предпринята попытка изменить объект, доступный только для чтения, или получить доступ к объекту, для которого у пользователя недостаточно разрешений.
MAPI_NO_CACHE
При открытии хранилища в кэшированном режиме клиент или поставщик услуг может вызвать IMsgStore::OpenEntry, установив флаг MAPI_NO_CACHE, чтобы открыть элемент или папку в удаленном хранилище. Если вы открываете хранилище сообщений с флагом MDB_ONLINE на удаленном сервере, вам не нужно использовать флаг MAPI_NO_CACHE.
Замечания
Метод IMsgStore::OpenEntry открывает папку или сообщение и возвращает указатель на интерфейс, который можно использовать для дальнейшего доступа.
Важно!
При открытии записей папок в общедоступном хранилище, таких как папки и сообщения, используйте IMsgStore::OpenEntry вместо IMAPISession::OpenEntry. Это гарантирует правильную работу общедоступных папок при определении нескольких учетных записей Exchange в профиле.
Примечания для вызывающих методов
Папки и сообщения автоматически открываются с разрешением только для чтения, если в параметре ulFlags не задан флаг MAPI_MODIFY или MAPI_BEST_ACCESS. Установка одного из этих флагов не гарантирует определенный тип разрешения; Предоставленные разрешения зависят от поставщика хранилища сообщений, уровня доступа и объекта . Чтобы определить уровень доступа открытого объекта, получите его свойство PR_ACCESS_LEVEL (PidTagAccessLevel).
Хотя IMsgStore::OpenEntry можно использовать для открытия любой папки или сообщения, обычно быстрее использовать метод IMAPIContainer::OpenEntry , если у вас есть доступ к родительской папке папки или сообщения для открытия.
Проверьте значение, возвращаемое в параметре lpulObjType , чтобы определить, является ли возвращаемый тип объекта ожидаемым. Если тип объекта не является ожидаемым, приведите указатель из параметра lppUnk к указателю соответствующего типа. Например, если вы открываете папку, приведите lppUnk к указателю типа LPMAPIFOLDER.
Справочные материалы по MFCMAPI
Пример кода MFCMAPI указан в приведенной ниже таблице.
Файл | Функция | Comment |
---|---|---|
MAPIFunctions.cpp |
CallOpenEntry |
MFCMAPI использует метод IMsgStore::OpenEntry для открытия объекта, связанного с идентификатором записи. |