Завершение работы поставщика хранилища сообщений
Область применения: Outlook 2013 | Outlook 2016
Если ваш поставщик является поставщиком хранилища сообщений, его можно завершить одним из следующих способов:
Когда клиент или диспетчер очереди MAPI вызывает IMsgStore::StoreLogoff. Завершение работы поставщика хранилища сообщений с помощью StoreLogoff приводит к тому, что завершение работы будет происходить упорядоченным и контролируемым образом.
Когда клиент вызывает IMAPISession::Logoff.
Реализация IMsgStore::StoreLogoff должна начинаться с вызова IMAPISupport::StoreLogoffTransports , чтобы сообщить MAPI о том, что она завершает работу, указывая, что все связанные поставщики транспорта должны быть отключены. При возврате IMsgStore::StoreLogoff вызывающий объект вызывает метод IUnknown::Release хранилища сообщений. Реализуйте этот метод Release , вызвав метод IUnknown::Release объекта поддержки.
MAPI выполняет следующие задачи в реализации IUnknown::Release для хранилищ сообщений:
Удаляет все структуры MAPIUID , зарегистрированные поставщиком хранилища сообщений.
Удаляет строку поставщика хранилища сообщений из таблицы состояния.
Вызывает IMSLogon::Logoff для освобождения всех открытых объектов, вложенных объектов и объектов состояния.
Вызывает IUnknown::Release , чтобы освободить объект входа поставщика хранилища сообщений.
Некоторые клиенты могут опустить вызов IMsgStore::StoreLogoff, инициируя завершение работы поставщика хранилища сообщений с помощью вызова метода IUnknown::Release хранилища сообщений. При таких обстоятельствах завершение работы без вызова StoreLogoff менее упорядочено и контролируется. Напишите метод Release хранилища сообщений, чтобы обработать эту возможность и отслеживать, был ли вызов IMAPISupport::StoreLogoffTransports . StoreLogoffTransports необходимо вызывать один раз во время завершения работы. Если вы обнаружите в методе Release , что StoreLogoffTransports еще не был вызван, вызовите его с флагом LOGOFF_ABORT.