Поделиться через


MSProviderInit

Область применения: Outlook 2013 | Outlook 2016

Инициализирует поставщик хранилища сообщений для операции.

Свойство Значение
Файл заголовка:
Mapispi.h
Реализовано в:
Поставщики хранилища сообщений
Вызывающая сторона:
MAPI
HRESULT MSProviderInit(
  HINSTANCE hInstance,
  LPMALLOC lpMalloc,
  LPALLOCATEBUFFER lpAllocateBuffer,
  LPALLOCATEMORE lpAllocateMore,
  LPFREEBUFFER lpFreeBuffer,
  ULONG ulFlags,
  ULONG ulMAPIVer,
  ULONG FAR * lpulProviderVer,
  LPMSPROVIDER FAR * lppMSProvider
);

Параметры

hInstance

[в] Экземпляр библиотеки динамической компоновки (DLL) поставщика хранилища сообщений, который MAPI использовал при связывании.

lpMalloc

[в] Указатель на объект распределителя памяти, предоставляющий интерфейс OLE IMalloc . Поставщику хранилища сообщений может потребоваться использовать этот метод выделения при работе с определенными интерфейсами, такими как IStream.

lpAllocateBuffer

[в] Указатель на функцию MAPIAllocateBuffer , используемую для выделения памяти.

lpAllocateMore

[в] Указатель на функцию MAPIAllocateMore , которая будет использоваться для выделения дополнительной памяти.

lpFreeBuffer

[в] Указатель на функцию MAPIFreeBuffer , которая будет использоваться для освобождения памяти.

ulFlags

[в] Битовая маска флагов. Можно задать следующий флаг:

MAPI_NT_SERVICE

Поставщик загружается в контексте службы Windows, особого типа процесса без доступа к какому-либо пользовательскому интерфейсу.

ulMAPIVer

[в] Номер версии интерфейса поставщика услуг (SPI), используемого MAPI. Номер текущей версии см. в файле заголовка Mapispi.h.

lpulProviderVer

[out] Указатель на номер версии SPI, используемого поставщиком хранилища сообщений.

lppMSProvider

[out] Указатель на указатель на объект поставщика инициализированного хранилища сообщений.

Возвращаемое значение

S_OK

����� ������� � ������ ��������� ��������� ��� ��������.

MAPI_E_VERSION

Версия SPI, используемая MAPI, несовместима с spi, используемой этим поставщиком.

Замечания

MAPI вызывает функцию точки входа MSProviderInit для инициализации поставщика хранилища сообщений после входа клиента.

Примечания для исполнителей

Поставщик хранилища сообщений должен реализовывать MSProviderInit как функцию точки входа в библиотеке DLL поставщика. Реализация должна основываться на прототипе функции MSPROVIDERINIT , также указанном в MAPISPI.H. MAPI определяет MSPROVIDERINIT для использования стандартного типа вызова инициализации MAPI STDMAPIINITCALLTYPE, который заставляет MSProviderInit следовать соглашению о вызовах CDECL. Преимущество CDECL заключается в том, что можно попытаться выполнить вызовы, даже если количество параметров вызова не соответствует числу определенных параметров.

Поставщик может быть инициализирован несколько раз в результате одновременного использования в нескольких профилях или нескольких раз в одном профиле. Так как объект поставщика содержит контекст, MSProviderInit должен возвращать другой объект поставщика в lppMSProvider для каждой инициализации даже для нескольких инициализаций в одном процессе.

Библиотека DLL поставщика не должна быть связана с Mapix.dll. Вместо этого он должен использовать эти указатели для выделения памяти или освобождения.

Поставщик хранилища сообщений должен использовать функции, на которые указывают lpAllocateBuffer, lpAllocateMore и lpFreeBuffer для выделения и освобождения памяти. В частности, поставщик должен использовать эти функции для выделения памяти для использования клиентскими приложениями при вызове интерфейсов объектов, таких как IMAPIProp::GetProps и IMAPITable::QueryRows. Если поставщик также планирует использовать распределитель памяти OLE, он должен вызвать метод IUnknown::AddRef объекта распределителя, на который указывает параметр lpMalloc .

Дополнительные сведения о написании MSProviderInit см. в разделе Загрузка поставщиков хранилища сообщений. Дополнительные сведения о функциях точки входа см. в разделе Реализация функции точки входа поставщика услуг.

См. также

ABProviderInit
IMSProvider : IUnknown
XPProviderInit