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 см. в разделе Инициализация поставщика транспорта. Дополнительные сведения о функциях точки входа см. в разделе Реализация функции точки входа поставщика услуг.