Использование поставщика упакованного PST-хранилища
Область применения: Outlook 2013 | Outlook 2016
Прежде чем использовать поставщик хранилища PST-файлов в оболочке, необходимо инициализировать и настроить поставщик хранилища PST с оболочкой. После настройки поставщика хранилища PST в оболочке необходимо реализовать функции, чтобы MAPI и диспетчер очереди MAPI могли войти в поставщик хранилища сообщений. Дополнительные сведения об инициализации поставщика хранилища PST с оболочкой и входе в нее см. в разделах Инициализация поставщика упакованого хранилища PST и Вход в поставщик упакованого хранилища PST.
Интерфейс IMAPISupport::IUnknown предоставляет реализации задач, которые обычно выполняются поставщиками хранилища сообщений. Этот интерфейс должен быть заключен в оболочку, чтобы поставщик хранилища PST с оболочкой работал. Функция IMAPISupport::OpenProfileSection требует специальной реализации. Все остальные функции могут передавать свои параметры базовому объекту оболочки.
В этом разделе функция IMAPISupport::OpenProfileSection демонстрируется с помощью примера кода из примера поставщика хранилища PST в оболочке. В этом примере реализуется поставщик PST в оболочке, который предназначен для использования в сочетании с API репликации. Дополнительные сведения о скачивании и установке поставщика хранилища PST в оболочке см. в разделе Установка поставщика хранилища PST в оболочке. Дополнительные сведения об API репликации см. в разделе Сведения об API репликации.
После завершения работы с поставщиком упакованого PST-хранилища необходимо правильно завершить работу поставщика упакованого хранилища PST. Дополнительные сведения см. в разделе Завершение работы поставщика хранилища PST с оболочкой.
Открытие раздела профиля
Функция IMAPISupport::OpenProfileSection открывает раздел текущего профиля. Функция требует специальной обработки в реализации поставщика поставщика хранилища PST с оболочкой. При запросе pgNSTGlobalProfileSectionGuid
функция возвращает кэшированный раздел профиля.
Пример CSupport::OpenProfileSection()
STDMETHODIMP CSupport::OpenProfileSection(
LPMAPIUID lpUid,
ULONG ulFlags,
LPPROFSECT * lppProfileObj)
{
Log(true,"CSupport::OpenProfileSection\n");
if (lpUid &&
IsEqualMAPIUID(lpUid, (void *)&pbNSTGlobalProfileSectionGuid) &&
m_lpProfSect)
{
// Allow the opening of the Global Section
if (m_lpProfSect)
{
*lppProfileObj = m_lpProfSect;
(*lppProfileObj)->AddRef();
return S_OK;
}
}
return m_pMAPISup->OpenProfileSection(lpUid, ulFlags, lppProfileObj);
}