Home   Index   About

Initialization and Shutdown in TAPI

For an application to use any of TAPI's basic or supplementary line functions, it needs a connection to TAPI through which it can receive messages. The application establishes this connection, using either the lineInitializeEx or the phoneInitializeEx function. The parameters of these functions allow the application to specify the message notification mechanism the application desires to use. Following are specifics about the initialization process:

  • The initialization functions are not device-related. When an application calls an initialization function, TAPI does not act on a line or phone device or an abstraction thereof.

  • The first time an initialization function is called in a telephony session, TAPI also sets up the telephony environment. Among the tasks it performs are loading the TAPI dynamic-link library and TAPISRV.EXE, and loading the device drivers (Telephony service providers and ancillary components) specified in the registry. In addition, the communication link described above is established between TAPI and the calling application.

  • The INIFILECORRUPT error can be returned if TAPI determines that the registry contains an invalid entry. When this error occurs (in lineInitializeEx and phoneInitializeEx, or another function), the user should identify and resolve the problem. It may be necessary to rebuild the registry or a portion of it, which can be done through the Telephony Control Panel.

For example, the LINEERR_NODRIVER ("the driver was not installed") error indicates either that a service provider that was previously installed can no longer be found or that some subsidiary component of a service provider (such as a VxD) cannot be found. When this error is encountered, the application should advise the user to correct the problem with the Driver Setup function within the Telephony Control Panel.

  • Although each application needs only one associated with TAPI, it can call an initialization function more than once to specify other message notification path.

  • Both lineInitializeEx and lineShutdown (and the corresponding phone functions) operate synchronously. That is, these functions return a success or failure indication, not an asynchronous Request ID.

Upon completion, the lineInitializeEx function returns two pieces of information to the application: an application handle and the number of available line devices.

  • The application handle represents the application's usage of TAPI. That is, to TAPI, it represents the application. TAPI functions that use line or call handles (explained later in this section) do not require the application handle, because this handle is derived from the specified line, phone, or call handle.

  • The lineInitializeEx function also returns the number of line devices available to the application through TAPI. Line devices are identified by their device identifier (device ID). Valid device IDs range from zero to one less than the number of line devices. For example, if lineInitializeEx reports that there are two line devices in a system, the valid line-device IDs are 0 and 1.

Once an application is finished calling TAPI's line functions, it calls lineShutdown and passes its application handle to terminate its usage of TAPI. This allows TAPI to free any resources assigned to the application.


Programming books recommended by Amazon.com

More programming books on Amazon.com


Share this page

     Follow us

LinkedIn Facebook Twitter Google+ Pinterest Connect.me


Last news from Greatis Software

Nostalgia .Net     Nostalgia .Net     .Net is powerful, but not all-powerful, so sometimes we need to use Win32 API for our .Net applications. It's simple enough with Platform Invoke if you have Win32 skill, but we do not always have time to dig the ancient documentation, declare the special types that are compatible with Win32, find the values of the Win32's constants and so on. Nostalgia .Net offers several simple-to-use classes, and components that will allow you to forget about the headache of Win32 and just use the power of Win32 in your application the same way as you use the native. Net classes.  More »

Recommended software for developers

Ultimate Pack for Delphi and C++ Builder     Ultimate Pack     Component pack for Delphi and C++ Builder that contains runtime form designer, runtime object inspector, print suite and much more for the very special price.  More »

Form Designer .Net     Form Designer .Net     Unique runtime form design solution that allows to edit any form in .Net WinForms application at runtime with full source codes for only 300 euro!  More »

Print Suite .Net     Print Suite .Net     Print Suite .Net is a set of components for easy printing texts, images and grids from your WinForms applications. Full C# source codes are available  More »

Gradient Controls .Net     Gradient Controls .Net     Gradient Controls .Net offers controls with gradient background feature. Labels, panels and so on... Full C# source codes are available  More »

iGrid     Greatis iGrid     iGrid plots drawing grid right over your desktop, so you can use it everywhere, with any drawing application without any special plugins for different graphic editors.  More »


All the contacts and projects

Dmitry Vasiliev (just.dmitry)

Related Links

Software for Visual Studio .NET developers
Software for Delphi and C++ Builder developers
Software for Visual Basic 6 developers
Delphi Tips&Tricks
MegaDetailed.NET

More Online Helps

Win32 Programmer's Reference
Win32 Multimedia Programmer's Reference
OLE Programmer's Reference
Microsoft Windows Pen API Programmer's Reference
Microsoft Windows Sockets 2 Reference
Microsoft Windows Telephony API (TAPI) Programmer's Reference
Unix Manual Pages

Free Tech Secrets ;)