Transport Provider-MAPI Spooler Operational Model

Transport provider initialization, startup, processing, shutdown and deinitialization are accomplished by a series of calls from the MAPI spooler to the transport provider. The calls are sequenced as follows:

  1. The MAPI spooler calls the XPProviderInit function, passes a support object, gets the provider object, and checks that the provider and MAPI spooler support a compatible range of MAPI version numbers.
  2. The MAPI spooler calls the IXPProvider::TransportLogon method of the XPProvider object. A session is established between the MAPI spooler and the transport with the credentials in the current section of the profile. The provider returns a logon object.
  3. The MAPI spooler calls the IXPLogon::AddressTypes method. The transport returns a list of the unique identifiers (UIDs) and e-mail address types it will accept.
  4. The MAPI spooler calls the IXPLogon::RegisterOptions method for recipient options. The transport returns a list of the available per-recipient options for any of the e-mail address types that it returned in the IXPLogon::AddressTypes call.
  5. The MAPI spooler calls RegisterOptions for message options. The transport returns a list of the available per-message options for any of the e-mail address types that it returned in the IXPLogon::AddressTypes call.
  6. The transport calls the IMAPISupport::ModifyStatusRow method to create its row in the MAPI status table.
  7. The MAPI spooler calls the IXPLogon::TransportNotify method to enable message transmission and reception.
  8. If requested by the transport provider in its return for the TransportLogon call, the MAPI spooler periodically calls the IXPLogon::Idle method. Idle processing is useful if the transport provider needs to poll the underlying messaging system for new messages or perform other low-priority tasks.
  9. The MAPI spooler and transport send and receive messages (see Message Submission Model and Message Reception Model). The MAPI spooler services transport requests and calls on support, message, and attachment objects.
  10. The MAPI spooler calls the TransportNotify method to disable message transmission and reception.
  11. The MAPI spooler releases the logon and provider objects. See IXPProvider::Shutdown.