Завершение работы поставщика услуг
Область применения: Outlook 2013 | Outlook 2016
Когда клиент вызывает метод IMAPISession::Logoff , чтобы завершить сеанс и завершить работу всех активных поставщиков услуг, MAPI, в свою очередь, вызывает следующие методы:
IABLogon::Logoff для поставщиков адресных книг.
IMSLogon::Logoff для поставщиков хранилища сообщений.
IXPLogon::TransportLogoff для поставщиков транспорта.
Эти методы имеют аналогичные реализации. Ниже перечислены main задачи, выполняемые методом выхода.
Освобождение всех открытых объектов, включая подобъекты и объекты состояния.
Вызов метода IUnknown::Release объекта поддержки для уменьшения числа ссылок.
Удаление всех зарегистрированных структур MAPIUID поставщика.
Удаление строки поставщика в таблице состояния.
Выполнение любых задач, связанных с очисткой ресурсов, например:
Прекращение подключения с удаленным сервером.
Уменьшение количества ссылок на объект входа.
Удаление объекта входа из списка объектов входа, хранимых поставщиком.
В режиме отладки выдача трассировок для обнаружения объектов, у которых произошла утечка памяти.
При возврате метода выхода MAPI вызывает следующее:
Метод IUnknown::Release объекта входа.
Метод завершения работы объекта поставщика для выполнения всех окончательных задач очистки. В зависимости от типа поставщика вызывается один из следующих методов:
IABProvider::Shutdown для поставщиков адресных книг
IMSProvider::Shutdown для поставщиков хранилища сообщений
IXPProvider::Shutdown для поставщиков транспорта
Метод IUnknown::Release объекта поставщика.
Если ваш поставщик является хранилищем сообщений, клиентский вызов IMsgStore::StoreLogoff также инициирует процесс завершения работы. StoreLogoff отключает один конкретный поставщик хранилища сообщений и не влияет на сеанс. С помощью этого метода можно завершить работу только поставщика хранилища сообщений; Нет явного способа завершить работу определенной адресной книги или поставщика транспорта. Сведения о том, как ответить на вызов StoreLogoff , см. в разделе Завершение работы поставщика хранилища сообщений.
Библиотека DLL поставщика будет выгружена, когда MAPI вызывает функцию API Win32 FreeLibrary, которая выполняется после того, как последний активный клиент вызвал MAPIUninitialize. К этому времени поставщик услуг завершит работу.