Таблица состояния и объекты состояния
Область применения: Outlook 2013 | Outlook 2016
MAPI предоставляет таблицу со сведениями о состоянии подсистемы MAPI, диспетчера очереди MAPI, адресной книги или конкретного поставщика услуг. Вы можете получить доступ к этой таблице, вызвав IMAPISession::GetStatusTable.
Каждая строка в таблице состояния представляет объект состояния, реализованный MAPI или поставщиком услуг. Объект состояния можно использовать для отображения страницы свойств конфигурации поставщика, изменения пароля поставщика, отправки или скачивания сообщений, а также для взаимодействия с определенным поставщиком транспорта.
Доступ к объекту состояния можно получить двумя способами:
Через таблицу состояния
С помощью метода OpenStatusEntry объекта входа
Так как объекты входа недоступны для клиентов, необходимо использовать таблицу состояния для доступа к объектам состояния. Подход к таблице состояния является косвенным, поэтому перед открытием объекта состояния требуется несколько вызовов и возврат указателя на его реализацию IMAPIStatus .
Использование таблицы состояний для открытия объекта состояния
Вызовите IMAPIStatus::GetStatusTable , чтобы получить указатель IMAPITable .
Вызовите метод IMAPITable::SetColumns таблицы состояния, чтобы ограничить столбец PR_ENTRYID (PidTagEntryId), PR_RESOURCE_TYPE (PidTagResourceType) и PR_DISPLAY_NAME (PidTagDisplayName).
Ограничьте представление таблицы определенным объектом состояния. Для реализаций MAPI клиент может определить ограничение свойств с помощью PR_RESOURCE_TYPE. Для реализаций поставщика услуг клиент может ограничить PR_PROVIDER_DISPLAY (PidTagProviderDisplay), имя поставщика или PR_PROVIDER_DLL_NAME (PidTagProviderDllName) имя DLL-файла поставщика.
Вызовите IMAPITable::Restrict , чтобы задать ограничение.
Вызовите HrQueryAllRows, передав структуру SPropertyRestriction , чтобы получить строку, представляющую состояние поставщика.
Вызовите IMAPISession::OpenEntry, указав идентификатор записи из строки таблицы состояния, чтобы открыть объект состояния и получить указатель IMAPIStatus .
Чтобы отобразить страницу свойств, вызовите метод IMAPIStatus::SettingsDialog объекта состояния для целевого поставщика. ПараметрыDialog отображает страницу свойств для просмотра и в некоторых случаях изменения свойств конфигурации поставщика.
Чтобы связаться с поставщиком транспорта, вызовите метод IMAPIStatus::ValidateState объекта состояния. ValidateState может перенастроить поставщика транспорта, запретить поставщику отображать пользовательский интерфейс и управлять сеансом, который включает скачивание заголовков сообщений с удаленного сервера в зависимости от передаваемого флага. Например, чтобы отменить скачивание удаленных заголовков, передайте флаг ABORT_XP_HEADER_OPERATION в ValidateState. Чтобы подключиться к удаленному серверу или отключить его, передайте FORCE_XP_CONNECT или FORCE_XP_DISCONNECT. Чтобы перенастроить поставщик, передайте CONFIG_CHANGED.
Клиенты, реализующие отправку или получение сообщений по запросу, вызывают метод IMAPIStatus::FlushQueues поставщика транспорта или диспетчера spooooler MAPI. В метод можно передать три флага: FLUSH_UPLOAD, FLUSH_DOWNLOAD и FLUSH_FORCE. FLUSH_UPLOAD указывает поставщику или диспетчеру очереди MAPI отправлять все сообщения, ожидающие в очереди вывода, в то время как FLUSH_DOWNLOAD указывает поставщику или диспетчеру очереди MAPI получать все входящие сообщения. FLUSH_FORCE можно задать с помощью любого из других флагов, чтобы объект состояния выполнял очистку независимо от времени.
Не ожидайте, что вы сможете вызывать ПараметрыDialog или ChangePassword для любых объектов состояния подсистемы MAPI, диспетчера очереди MAPI или адресной книги. Объекты состояния подсистемы и адресной книги поддерживают только ValidateState; Объект состояния диспетчера очереди MAPI поддерживает FlushQueues в дополнение к ValidateState.