2.3.6 Value added by TAPI DLL
As implied by the figure above, much of what the TAPI DLL does is to serve as a sort of "traffic manager" between Service Providers and Applications. Consider several different applications using the same device controlled by the same Service Provider as shown by the dashed arrows. The TAPI DLL allows both applications to open the device without burdening them with the details of cooperating with one another. For the most part each application can operate as if it were the only user of the device. These applications can also elect to become aware of one another. The TAPI DLL provides mechanisms they can use to cooperate and communicate with one another in a orderly fashion. None of the Service Providers need to be concerned with this level of arbitration and communication between multiple applications. To the Service Provider, it appears as if just a single agent is using its services.
Similarly, consider several different Service Providers interacting with the same application as shown by the solid arrows. Each Provider interacts strictly with the TAPI DLL. The TAPI DLL takes care of merging streams of events from both Service Providers into a single stream directed at the application. It hides the details of arbitration and synchronization over the data structures holding this single stream. It assigns device ID number ranges to Service Providers so that device ID numbers form a contiguous, non-overlapping sequence across the total set of TAPI Service Providers. Service Providers are unaware that any of this is happening. They do not need to be concerned about the details of cooperating with one another or even the existence of other Service Providers.
In addition to its major "traffic manager" service, the TAPI DLL provides a number of minor services such as parameter validation, implementation of different privilege levels, canonical phone number translation, etc.