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


Реализация входа поставщика услуг

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

MAPI вызывает метод в объекте поставщика, чтобы начать процесс входа с помощью указателя, возвращаемого из функции точки входа. Метод отличается следующим образом в зависимости от типа поставщика услуг.

Выполните следующие задачи в любом методе входа, который вы реализуете:

  1. Увеличьте количество ссылок для объекта поддержки, передаваемого в качестве входного параметра, вызвав его метод IUnknown::AddRef .

  2. Вызовите метод IMAPISupport::OpenProfileSection объекта поддержки, чтобы получить доступ к разделу профиля.

  3. Вызовите метод IMAPIProp::SetProps раздела профиля, чтобы задать следующие свойства:

Примечание.

Не пытайтесь задать свойства PR_RESOURCE_FLAGS или PR_PROVIDER_DLL_NAME раздела профиля. Во время входа эти свойства доступны только для чтения.

  1. Убедитесь, что свойства, необходимые для настройки, хранятся в профиле или доступны пользователю. Дополнительные сведения о проверке конфигурации см. в разделе Проверка конфигурации поставщика услуг.

  2. Вызовите метод IMAPISupport::SetProviderUID объекта поддержки, чтобы зарегистрировать уникальный идентификатор или MAPIUID, если ваш поставщик является адресной книгой или поставщиком хранилища сообщений. Поставщики транспорта регистрируют структуры MAPIUID , когда MAPI вызывает метод IXPLogon::AddressTypes . Дополнительные сведения о регистрации MAPIUID см. в разделе Регистрация уникальных идентификаторов поставщика услуг.

  3. Создайте экземпляр объекта входа и верните одно из следующих значений:

  • S_OK для обозначения успешного входа.

  • MAPI_E_UNCONFIGURED, чтобы указать, что одно или несколько свойств конфигурации были недоступны.

  • MAPI_E_USER_CANCEL, чтобы указать, что пользователь отменил диалоговое окно конфигурации, в результате чего свойства конфигурации будут недоступны.

  • MAPI_E_FAILONEPROVIDER, чтобы указать, что поставщик не может быть настроен, но MAPI должен разрешать его использование независимо от того. Методы входа должны возвращать это значение, чтобы сообщить о нефатальной ошибке, например, когда поставщик требует пароль и не может заставить пользователя ввести его, так как пользовательский интерфейс отключен.

В приведенном выше списке задач описывается минимальная реализация метода входа поставщика услуг. При необходимости можно включить дополнительные функции. Например, некоторые поставщики вызывают IMAPISupport::ModifyStatusRow для обновления таблицы состояния в методе входа.

Примечание.

Чтобы достичь максимальной производительности во время входа, избегайте вызова IMAPISupport::P repareSubmit или IMAPISupport::SpoolerNotify. Прежде чем эти вызовы смогут завершиться и вернуть управление методом входа, необходимо запустить диспетчер очереди MAPI.

См. также