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


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

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

Каждая библиотека DLL поставщика услуг имеет функцию точки входа, которую MAPI вызывает для загрузки. Имейте в виду, что эта функция точки входа не совпадает с dllMain, функцией точки входа Win32 DLL.

В зависимости от типа поставщика функция точки входа поставщика соответствует другому прототипу. MAPI определяет различные прототипы функций точки входа для поставщиков услуг.

Поставщик Прототип функции точки входа
Поставщики хранилища сообщений
MSProviderInit
Поставщики транспорта
XPProviderInit
Поставщики адресных книг
ABProviderInit

Большая часть функциональных возможностей этих прототипов одинакова для всех типов поставщиков услуг.

Поставщики адресной книги, хранилища сообщений и транспорта выполняют следующие две задачи main в своих функциях точки входа:

  1. Проверьте версию интерфейса поставщика услуг (SPI), чтобы убедиться, что MAPI использует версию, совместимую с версией, используемой поставщиком услуг. Используйте параметр lpulMAPIVer, содержащий версию MAPI SPI, и параметр lpulProviderVer, содержащий версию SPI, для выполнения проверка. Эти параметры представляют собой 32-разрядные целые числа без знака, состоящие из трех частей:
  • Биты от 24 до 31 представляют основную версию.

  • Биты от 16 до 23 представляют дополнительную версию.

  • Биты от 0 до 15 представляют идентификатор обновления. Хотя основной номер версии редко меняется, дополнительный номер версии изменяется при выпуске MAPI и при изменении SPI. Идентификатор обновления — это внутренняя версия сборки Майкрософт; используется для отслеживания изменений в процессе разработки. MAPI определяет константу CURRENT_SPI_VERSION, описанную в файле заголовка Mapispi.h, чтобы указать текущую версию SPI. Сбой проверка с ошибкой MAPI_E_VERSION, если используется версия SPI, более новая, чем версия MAPI.

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

    Если вы пишете поставщик адресной книги, реализуйте IABProvider : IUnknown. Если вы пишете поставщик хранилища сообщений, реализуйте IMSProvider : IUnknown. Дополнительные сведения см. в разделе Загрузка поставщиков хранилища сообщений.

    Если вы пишете поставщик транспорта, реализуйте IXPProvider : IUnknown. Дополнительные сведения см. в разделе Инициализация поставщика транспорта.

См. также

Запуск поставщика услуг