Реализация функции точки входа поставщика услуг
Область применения: Outlook 2013 | Outlook 2016
Каждая библиотека DLL поставщика услуг имеет функцию точки входа, которую MAPI вызывает для загрузки. Имейте в виду, что эта функция точки входа не совпадает с dllMain, функцией точки входа Win32 DLL.
В зависимости от типа поставщика функция точки входа поставщика соответствует другому прототипу. MAPI определяет различные прототипы функций точки входа для поставщиков услуг.
Поставщик | Прототип функции точки входа |
---|---|
Поставщики хранилища сообщений |
MSProviderInit |
Поставщики транспорта |
XPProviderInit |
Поставщики адресных книг |
ABProviderInit |
Большая часть функциональных возможностей этих прототипов одинакова для всех типов поставщиков услуг.
Поставщики адресной книги, хранилища сообщений и транспорта выполняют следующие две задачи main в своих функциях точки входа:
- Проверьте версию интерфейса поставщика услуг (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.
Создайте экземпляр объекта поставщика. Так как поставщик может запускаться и инициализироваться несколько раз, каждый раз следует создавать новый экземпляр. Поставщики запускаются несколько раз, когда они отображаются в нескольких профилях, которые используются одновременно одним или несколькими клиентами, или когда они появляются несколько раз в одном профиле. Так же, как прототип функции точки входа отличается в зависимости от типа поставщика, так и тип объекта поставщика.
Если вы пишете поставщик адресной книги, реализуйте IABProvider : IUnknown. Если вы пишете поставщик хранилища сообщений, реализуйте IMSProvider : IUnknown. Дополнительные сведения см. в разделе Загрузка поставщиков хранилища сообщений.
Если вы пишете поставщик транспорта, реализуйте IXPProvider : IUnknown. Дополнительные сведения см. в разделе Инициализация поставщика транспорта.