Structure of Message Store Providers

A message store provider, when it is running in memory, is an IMSProvider : IUnknown object. The IMSProvider interface allows client applications and the MAPI spooler to log on to and off of the message store. The objects that client applications and the MAPI spooler use to access folders and messages in the message store are an IMSLogon object and an IMsgStore object. These objects are typically created when the message store is first logged on to, although the message store DLL's MSProviderInit entry point could also create them.

Because the IMSLogon and IMsgStore interfaces share some methods, it may be easier to create one class object that inherits from both of these interfaces. You can also implement these interfaces in separate objects, and write helper functions internal to your DLL that implement the shared methods which can then be called from the methods in the IMSLogon and IMsgStore interfaces.

The following illustration shows a high-level outline of the object hierarchy within a running message store.