|
Closing Lines
An application should close a line it has open in the following cases:
- Before exiting. An application should always close all lines it has open before it becomes
inactive.
- For non-TAPI applications. TAPI applications should cooperate with non-TAPI applications that use media
stream devices such as COM ports. If your TAPI device is a serial device
accessed through a COM port (such as a modem) and the line is open, the service
provider needs to have the COM port open. But with the COM port open, non-TAPI
applications and console applications are prevented from accessing the COM port.
Therefore, a TAPI application should open the line (and keep it open) only if it
is waiting for incoming calls or it is actively engaged in placing an outgoing
call.
- Non-Telephony communications applications may need to share resources with
Telephony applications.
The data structure LINEDEVCAPS contains a capabilities bit (LINEDEVCAPFLAGS_CLOSEDROP) that tells whether
closing a line while a call is still active causes calls on the line to be
dropped. If TRUE, the service provider drops (clears) all active calls on the line
when the last application having that line open closes it using the lineClose function. If the bit is set to FALSE, the service provider does not drop
active calls on the line; instead, it leaves these calls active and under the
control of an external device or devices, such as phones.
Therefore, an application can examine LINEDEVCAPS to detect in advance whether closing a line will cause this active call to be
dropped. The application should warn all appropriate users that the call is
about to be dropped, perhaps by displaying an OK/Cancel dialog box that lets the
user keep the line open.
For example, if a desktop computer and a phoneset are both connected directly
to an analog line (in a party-line configuration), the service provider should
set the flag to FALSE, as the offhook phone would automatically keep the call
active even after the computer powers down.
As another example, a user is speaking on the phone on a call owned by an
active application. The user decides to leave the office for the day and shuts down
the system. The operating system in turn shuts down the active telephony
application, which attempts to close the lines it has open. Whether the call is
automatically hung up depends on whether the LINEDEVCAPFLAGS_CLOSEDROP bit in LINEDEVCAPS is set or not and whether the phone is offhook.
If other applications are monitoring the call, the service provider will not
even be informed that one application has closed the line. It is only when the
last application that has a handle to the call closes the line that the service
provider is informed (with TSPI_lineClose). At that point, it is up to the service provider to handle any remaining
calls. If the service provider is required to drop the calls, it should do so but
it should first warn applications about this requirement with the
LINEDEVCAPFLAGS_CLOSEDROP flag.
Closing an application should ideally perform the following cleanup tasks:
- Dispose of all calls.
- Close all open lines and phones.
- Shut down the usage of the Telephony API.
Failure to do so may leave calls in indeterminate states.
| Last news from Greatis Software |
 |
|
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 |
|
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 |
|
Unique runtime form design solution that allows to edit any form in .Net WinForms application at runtime without manual coding. Full C# source codes are available More » |
 |
|
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 offers controls with gradient background feature. Labels, panels and so on... Full C# source codes are available More » |
 |
|
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 » |
Related LinksSoftware 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
|