The ABProviderInit function initializes an address book provider for operation.
Header file: | MAPISPI.H |
Implemented by: | Address book providers |
Called by: | MAPI |
HRESULT ABProviderInit(
HINSTANCE hInstance,
LPMALLOC lpMalloc,
LPALLOCATEBUFFER lpAllocateBuffer,
LPALLOCATEMORE lpAllocateMore,
LPFREEBUFFER lpFreeBuffer,
ULONG ulFlags,
ULONG ulMAPIVer,
ULONG FAR * lpulProviderVer,
LPABPROVIDER FAR * lppABProvider
);
MAPI calls the entry point function ABProviderInit to initialize an address book provider following a client logon.
An address book provider must implement ABProviderInit as an entry point function in the provider's DLL. The implementation must be based on the ABPROVIDERINIT function prototype, also specified in MAPISPI.H. MAPI defines ABPROVIDERINIT to use the standard MAPI initialization call type, STDMAPIINITCALLTYPE, which causes ABProviderInit to follow the CDECL calling convention. An advantage of CDECL is that calls can be attempted even if the number of calling parameters does not match the number of defined parameters.
A provider can be initialized multiple times, as a result of appearing in several profiles in simultaneous use or of appearing more than once in the same profile. Because the provider object contains context, ABProviderInit must return a different provider object in lppABProvider for each initialization, even for multiple initializations in the same process.
The address book provider should use the functions pointed to by lpAllocateBuffer, lpAllocateMore, and lpFreeBuffer for most memory allocation and deallocation. In particular, the provider must use these functions to allocate memory for use by client applications when calling object interfaces such as IMAPIProp::GetProps and IMAPITable::QueryRows. If the provider also expects to use the OLE memory allocator, it should call the IUnknown::AddRef method of the allocator object pointed to by the lpMalloc parameter.
For more information on writing ABProviderInit, see Implementing an Address Book Provider Entry Point Function. For more information on entry point functions, see Implementing a Service Provider Entry Point Function.
Provider Initialization Functions, HPProviderInit, IABProvider : IUnknown, MSProviderInit, XPProviderInit