Transport providers that use scarce resources — such as a modem or COM port — to send and receive messages or message headers need to adhere to the following conventions in order to avoid resource conflicts with other transport providers:
When the MAPI spooler next makes a call to a method in the transport provider's logon object the transport provider can allocate the resource. The transport provider can keep the resource until the time that the action, such as flushing queues, is completed. In some cases, the transport provider will already hold the resource before calling the IMAPISupport::ModifyStatusRow method to update the transport provider's PR_STATUS_CODE property. This will cause some multi-transport operations to fail, but is sometimes unavoidable. The MAPI spooler will handle errors in such cases.