ABProviderInit
Область применения: Outlook 2013 | Outlook 2016
Инициализирует поставщик адресной книги для операции.
Свойство | Значение |
---|---|
Файл заголовка: |
Mapispi.h |
Реализовано в: |
Поставщики адресных книг |
Вызывающая сторона: |
MAPI |
HRESULT ABProviderInit(
HINSTANCE hInstance,
LPMALLOC lpMalloc,
LPALLOCATEBUFFER lpAllocateBuffer,
LPALLOCATEMORE lpAllocateMore,
LPFREEBUFFER lpFreeBuffer,
ULONG ulFlags,
ULONG ulMAPIVer,
ULONG FAR * lpulProviderVer,
LPABPROVIDER FAR * lppABProvider
);
Параметры
hInstance
[в] Экземпляр библиотеки динамической компоновки (DLL) поставщика адресной книги, который MAPI использовал при связывании.
lpMalloc
[в] Указатель на объект распределителя памяти, предоставляющий интерфейс OLE IMalloc . Поставщику адресной книги может потребоваться использовать этот метод выделения при работе с определенными интерфейсами, такими как IStream.
lpAllocateBuffer
[в] Указатель на функцию MAPIAllocateBuffer , которая будет использоваться в случаях, когда MAPI требует выделения памяти.
lpAllocateMore
[в] Указатель на функцию MAPIAllocateMore , которая будет использоваться там, где MAPI требует выделить дополнительную память.
lpFreeBuffer
[в] Указатель на функцию MAPIFreeBuffer , которая будет использоваться там, где mapi требуется для освобождения памяти.
ulFlags
[в] Битовая маска флагов. Можно задать следующий флаг:
MAPI_NT_SERVICE
Поставщик загружается в контексте службы Windows, особого типа процесса без доступа к какому-либо пользовательскому интерфейсу.
ulMAPIVer
[в] Номер версии интерфейса поставщика услуг (SPI), который MAPI.DLL использует. Номер текущей версии см. в mapISPI. Файл заголовка H.
lpulProviderVer
[out] Указатель на номер версии SPI, используемого этим поставщиком адресной книги.
lppABProvider
[out] Указатель на указатель на инициализированный объект поставщика адресной книги.
Возвращаемое значение
S_OK
����� ������� � ������ ��������� ��������� ��� ��������.
MAPI_E_VERSION
Версия SPI, используемая MAPI, несовместима с spi, используемой этим поставщиком.
Замечания
MAPI вызывает функцию точки входа ABProviderInit для инициализации поставщика адресной книги после входа клиента.
Примечания для исполнителей
Поставщик адресной книги должен реализовать ABProviderInit как функцию точки входа в библиотеке DLL поставщика. Реализация должна основываться на прототипе функции ABPROVIDERINIT , также указанном в MAPISPI.H. MAPI определяет ABPROVIDERINIT для использования стандартного типа вызова инициализации MAPI STDMAPIINITCALLTYPE, который заставляет ABProviderInit следовать соглашению о вызовах CDECL.
Поставщик может быть инициализирован несколько раз в результате одновременного использования в нескольких профилях или нескольких раз в одном профиле. Поскольку объект поставщика содержит контекст, ABProviderInit должен возвращать другой объект поставщика в lppABProvider для каждой инициализации даже для нескольких инициализаций в одном процессе.
Поставщик адресной книги должен использовать функции, на которые указывают lpAllocateBuffer, lpAllocateMore и lpFreeBuffer для выделения и освобождения памяти. В частности, поставщик должен использовать эти функции для выделения памяти для использования клиентскими приложениями при вызове интерфейсов объектов, таких как IMAPIProp::GetProps и IMAPITable::QueryRows. Если поставщик также планирует использовать распределитель памяти OLE, он должен вызвать метод IUnknown::AddRef объекта распределителя, на который указывает параметр lpMalloc .
Дополнительные сведения о написании ABProviderInit см. в разделе Реализация функции точки входа поставщика адресной книги. Дополнительные сведения о функциях точки входа см. в разделе Реализация функции точки входа поставщика услуг.