Реализация входа поставщика услуг
Область применения: Outlook 2013 | Outlook 2016
MAPI вызывает метод в объекте поставщика, чтобы начать процесс входа с помощью указателя, возвращаемого из функции точки входа. Метод отличается следующим образом в зависимости от типа поставщика услуг.
IABProvider::Logon для поставщиков адресных книг
IMSProvider::Вход для поставщиков хранилища сообщений
IXPProvider::TransportLogon для поставщиков транспорта
Выполните следующие задачи в любом методе входа, который вы реализуете:
Увеличьте количество ссылок для объекта поддержки, передаваемого в качестве входного параметра, вызвав его метод IUnknown::AddRef .
Вызовите метод IMAPISupport::OpenProfileSection объекта поддержки, чтобы получить доступ к разделу профиля.
Вызовите метод IMAPIProp::SetProps раздела профиля, чтобы задать следующие свойства:
PR_DISPLAY_NAME (PidTagDisplayName)
PR_ENTRYID (PidTagEntryId)
PR_PROVIDER_DISPLAY (PidTagProviderDisplay)
PR_RECORD_KEY (PidTagRecordKey)
Примечание.
Не пытайтесь задать свойства PR_RESOURCE_FLAGS или PR_PROVIDER_DLL_NAME раздела профиля. Во время входа эти свойства доступны только для чтения.
Убедитесь, что свойства, необходимые для настройки, хранятся в профиле или доступны пользователю. Дополнительные сведения о проверке конфигурации см. в разделе Проверка конфигурации поставщика услуг.
Вызовите метод IMAPISupport::SetProviderUID объекта поддержки, чтобы зарегистрировать уникальный идентификатор или MAPIUID, если ваш поставщик является адресной книгой или поставщиком хранилища сообщений. Поставщики транспорта регистрируют структуры MAPIUID , когда MAPI вызывает метод IXPLogon::AddressTypes . Дополнительные сведения о регистрации MAPIUID см. в разделе Регистрация уникальных идентификаторов поставщика услуг.
Создайте экземпляр объекта входа и верните одно из следующих значений:
S_OK для обозначения успешного входа.
MAPI_E_UNCONFIGURED, чтобы указать, что одно или несколько свойств конфигурации были недоступны.
MAPI_E_USER_CANCEL, чтобы указать, что пользователь отменил диалоговое окно конфигурации, в результате чего свойства конфигурации будут недоступны.
MAPI_E_FAILONEPROVIDER, чтобы указать, что поставщик не может быть настроен, но MAPI должен разрешать его использование независимо от того. Методы входа должны возвращать это значение, чтобы сообщить о нефатальной ошибке, например, когда поставщик требует пароль и не может заставить пользователя ввести его, так как пользовательский интерфейс отключен.
В приведенном выше списке задач описывается минимальная реализация метода входа поставщика услуг. При необходимости можно включить дополнительные функции. Например, некоторые поставщики вызывают IMAPISupport::ModifyStatusRow для обновления таблицы состояния в методе входа.
Примечание.
Чтобы достичь максимальной производительности во время входа, избегайте вызова IMAPISupport::P repareSubmit или IMAPISupport::SpoolerNotify. Прежде чем эти вызовы смогут завершиться и вернуть управление методом входа, необходимо запустить диспетчер очереди MAPI.