Win32 Telephony is a full, 32-bit implementation of the original 16-bit Windows Telephony application and service provider interface. Other than components provided for backward compatibility, all components of Win32 Telephony, including service providers, are implemented in 32 bits. The following figure illustrates the architecture of Win32 Telephony on the Windows operating systems.
Existing 16-bit applications link to TAPI. In Windows 3.1 and Windows 95, TAPI is the core of Windows Telephony, but in Windows NT, TAPI is simply a thunk layer to map 16-bit addresses to 32-bit addresses, and pass requests along to tapi32.dll.
Existing 32-bit applications link to tapi32.dll. In Windows 95, tapi32.dll is a thunk layer to TAPI. In Windows NT (and future releases of the Windows 95 platform), tapi32.dll is a thin marshaling layer, that transfers function requests to tapisrv.exe and, when needed, loads and invokes service provider user interface DLLs in the application's process.
In the Win32 implementation, tapisrv.exe is the core of TAPI. It runs as a separate service process, subsuming the role played in Windows 3.1 and Windows 95 by the tapisrv.exe hidden process and TAPI itself. All telephony service providers execute in the tapisrv.exe process, eliminating the difficulties that arose in previous versions of Windows telephony caused by service providers sometimes running in the TAPIEXE context, and sometimes in the context of an individual application. Service providers can create threads in the TAPISRV context as needed to do their work, and be confident that none of the resources they create will be destroyed by the exit of any individual application.
Underneath the telephony service provider DLL, the service provider can use any system functions or other components necessary. These functions include CreateFile and DeviceIOControl, which work with independent hardware vendor-designed kernel mode components and services, as well as standard devices such as serial and parallel ports to control external, locally attached devices. They can also access network services (such as RPC, Windows Sockets, and Named Pipes) for client/server telephony.
The Telephony service provider user interface DLL is new. This DLL is loaded by TAPI into the process of an application that invokes any of the service provider functions that can display a dialog box (for example, TSPI_lineConfigDialog). The service provider can also cause its associated UI DLL to be loaded and executed in the process of an application if the service provider needs to display UI at unexpected times, such as to display the Talk/Hang-up dialog box displayed by the Universal Modem Driver (UNIMODEM) when a data modem is used to dial an interactive voice call using TSPI_lineMakeCall (not normally considered to be a UI-generating function).
The new proxy request handler is a full telephony application that normally executes on a telephony server (the same server on which the telephony service provider is executing for the associated line devices). This architecture, rather than the WOSA service provider architecture, is used when a particular service is more appropriately implemented in an application than in a driver on the server. In this version of Win32 Telephony, the ACD Agent management functions are implemented in a proxy request handler rather than in a service provider.
The UNIMODEM driver service provider for modem control is available on Windows NT. Windows Telephony for Windows NT also includes a generic kernel mode Telephony Service Provider Interface (TSPI) mapper, known as KMDDSP, that allows service providers to be implemented as kernel mode device drivers.