|Important||This document may not represent best practices for current development, links to downloads and other resources may no longer be valid. Current recommended version can be found here.|
This content is outdated and is no longer being maintained. It is provided as a courtesy for individuals who are still using these technologies. This page may contain URLs that were valid when originally published, but now link to sites or pages that no longer exist.
Initializes a message store provider for operation.
Message store providers
A message store provider must implement MSProviderInit as an entry point function in the provider's DLL. The implementation must be based on the MSPROVIDERINIT function prototype, also specified in MAPISPI.H. MAPI defines MSPROVIDERINIT to use the standard MAPI initialization call type, STDMAPIINITCALLTYPE, which causes MSProviderInit 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, MSProviderInit must return a different provider object in lppMSProvider for each initialization, even for multiple initializations in the same process.
The provider DLL should not be linked with Mapix.dll. Instead, it should use these pointers for memory allocation or deallocation.
The message store 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 about writing MSProviderInit, see Loading Message Store Providers. For more information about entry point functions, see Implementing a Service Provider Entry Point Function.