MAPIInitialize
Область применения: Outlook 2013 | Outlook 2016
Увеличивает количество ссылок на подсистему MAPI и инициализирует глобальные данные для БИБЛИОТЕКи DLL MAPI.
Свойство | Значение |
---|---|
Файл заголовка: |
Mapix.h |
Реализовано в: |
MAPI |
Вызывающая сторона: |
Клиентские приложения |
HRESULT MAPIInitialize(
LPVOID lpMapiInit
);
Параметры
lpMapiInit
[в] Указатель на структуру MAPIINIT_0 . Для параметра lpMapiInit можно задать значение NULL.
Возвращаемое значение
S_OK
Подсистема MAPI успешно инициализирована.
Замечания
Функция MAPIInitialize увеличивает число ссылок MAPI для подсистемы MAPI, а функция MAPIUninitialize уменьшает число внутренних ссылок. Таким образом, количество вызовов одной функции должно равняться количеству вызовов к другой. MAPIInitialize возвращает S_OK, если MAPI не был инициализирован ранее.
Клиент или поставщик услуг должен вызвать MAPIInitialize , прежде чем выполнять любой другой вызов MAPI. Если это не сделать, вызовы клиента или поставщика услуг возвращают значение MAPI_E_NOT_INITIALIZED.
При вызове MAPIInitialize из многопоточного приложения задайте для параметра lpMapiInitMAPIINIT_0 структуру, объявленную следующим образом:
MAPIINIT_0 MAPIINIT= { 0, MAPI_MULTITHREAD_NOTIFICATIONS}
и вызов:
MAPIInitialize (&MAPIINIT);
При объявлении этой структуры MAPI создает отдельный поток для обработки окна уведомлений, который продолжается до тех пор, пока число ссылок на инициализацию не упадет до нуля. Служба Windows должна задать элемент ulflagsструктуры MAPIINIT_0 , на которую указывает lpMapiInit , MAPI_NT_SERVICE.
Примечание.
Нельзя вызывать MAPIInitialize или MAPIUninitialize из функции Win32 DllMain или любой другой функции, которая создает или завершает потоки. Дополнительные сведения см. в разделе Использование объектов Thread-Safe.
MAPIInitialize не возвращает расширенные сведения об ошибке. В отличие от большинства других вызовов MAPI, значения возвращаемых значений строго определены в соответствии с конкретным этапом инициализации, в который произошел сбой:
Проверяет параметры и флаги.
MAPI_E_INVALID_PARAMETER или MAPI_E_UNKNOWN_FLAGS. Вызывающий передал недопустимый параметр или флаг.
Инициализирует разделы реестра, необходимые для MAPI, и подтверждает тип операционной системы. Этот шаг выполняется только в том случае, если клиентский процесс выполняется как служба в Windows и задает флаг MAPI_NT SERVICE в структуре MAPIINIT_0 .
MAPI_E_TOO_COMPLEX. Процесс вызова — это служба Windows, и разделы реестра, необходимые MAPI, не могут быть инициализированы.
В журнале событий приложения могут быть доступны дополнительные сведения.
Проверьте совместимость MAPI с OLE, а затем инициализируйте OLE.
Проверяет совместимость между текущими версиями OLE и MAPI.
MAPI_E_VERSION. Версия OLE, установленная на рабочей станции, несовместима с этой версией MAPI.
Инициализирует OLE.
Только на этом шаге эта функция может возвращать код ошибки, не указанный здесь. Любая ошибка , не указанная здесь, должна исходить от функции OLE CoInitialize.
Инициализирует глобальные переменные для каждого процесса.
MAPI_E_SESSION_LIMIT. MAPI настраивает контекст, характерный для текущего процесса. Сбои могут возникать в Win16, если количество процессов превышает определенное число, или в любой системе при исчерпании доступной памяти.
Инициализирует общие глобальные переменные всех процессов.
MAPI_E_NOT_ENOUGH_RESOURCES. Для завершения операции было недостаточно системных ресурсов.
Инициализирует подсистему уведомлений, создает его окно и поток по запросу флага MAPI_MULTITHREAD_NOTIFICATIONS.
MAPI_E_INVALID_OBJECT. Может завершиться сбоем, если системные ресурсы исчерпаны.
Загружает и инициализирует поставщик профиля. Проверяет, может ли MAPIInitialize получить доступ к разделу реестра, в котором хранятся данные профиля.
MAPI_E_NOT_INITIALIZED. Поставщик профилей обнаружил ошибку.
Справочные материалы по MFCMAPI
Пример кода MFCMAPI указан в приведенной ниже таблице.
Файл | Функция | Comment |
---|---|---|
ContentsTableListCtrl.cpp |
MFCMAPI использует метод MAPIInitialize для инициализации MAPI в фоновом потоке для выполнения некоторой обработки таблицы. |