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


XPProviderInit

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

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

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

Параметры

hInstance

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

lpMalloc

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

lpAllocateBuffer

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

lpAllocateMore

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

lpFreeBuffer

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

ulFlags

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

MAPI_NT_SERVICE

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

ulMAPIVer

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

lpulProviderVer

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

lppXPProvider

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

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

S_OK

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

MAPI_E_VERSION

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

Замечания

MAPI вызывает функцию точки входа XPProviderInit для инициализации поставщика транспорта после входа клиента. XPProviderInit вызывается один раз для каждого поставщика транспорта, указанного в профиле клиента.

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

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

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

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

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

См. также

ABProviderInit
IXPProvider : IUnknown
MSProviderInit