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