lineHandoff
The
lineHandoff function gives ownership of the specified call to another application. The
application can be either specified directly by its filename or indirectly as the
highest priority application that handles calls of the specified media mode.
LONG lineHandoff(
HCALL hCall,
|
|
LPCSTR lpszFileName,
|
|
DWORD dwMediaMode
|
|
);
|
|
Parameters
hCall
A handle to the call to be handed off. The application must be an owner of the
call. The call state of
hCall can be any state.
lpszFileName
A pointer to a NULL-terminated ASCII string. If this pointer parameter is
non-NULL, it contains the filename of the application that is the target of the
handoff. If NULL, the handoff target is the highest priority application that has
opened the line for owner privilege for the specified media mode. A valid
filename does not include the path of the file.
dwMediaMode
The media mode used to identify the target for the indirect handoff. The
dwMediaMode parameter indirectly identifies the target application that is to receive
ownership of the call. This parameter is ignored if
lpszFileName is not NULL. Only a single flag may be set in the
dwMediaMode parameter at any one time. This parameter uses the following LINEMEDIAMODE_
constants:
LINEMEDIAMODE_UNKNOWN
The target application is the one that handles calls of unknown media mode
(unclassified calls).
LINEMEDIAMODE_INTERACTIVEVOICE
The target application is the one that handles calls with the interactive
voice media mode (live conversations).
LINEMEDIAMODE_AUTOMATEDVOICE
Voice energy is present on the call and the voice is locally handled by an
automated application.
LINEMEDIAMODE_DATAMODEM
The target application is the one that handles calls with the data modem media
mode.
LINEMEDIAMODE_G3FAX
The target application is the one that handles calls with the group 3 fax
media mode.
LINEMEDIAMODE_TDD
The target application is the one that handles calls with the TDD (Telephony
Devices for the Deaf) media mode.
LINEMEDIAMODE_G4FAX
The target application is the one that handles calls with the group 4 fax
media mode.
LINEMEDIAMODE_DIGITALDATA
The target application is the one that handles calls that are digital data
calls.
LINEMEDIAMODE_TELETEX
The target application is the one that handles calls with the teletex media
mode.
LINEMEDIAMODE_VIDEOTEX
The target application is the one that handles calls with the videotex media
mode.
LINEMEDIAMODE_TELEX
The target application is the one that handles calls with the telex media
mode.
LINEMEDIAMODE_MIXED
The target application is the one that handles calls with the ISDN mixed media
mode.
LINEMEDIAMODE_ADSI
The target application is the one that handles calls with the ADSI (Analog
Display Services Interface) media mode.
LINEMEDIAMODE_VOICEVIEW
The media mode of the call is VoiceView.
Return Values
Returns zero if the request is successful or a negative error number if an
error has occurred. Possible return values are:
LINEERR_INVALCALLHANDLE, LINEERR_OPERATIONFAILED, LINEERR_INVALMEDIAMODE,
LINEERR_TARGETNOTFOUND, LINEERR_INVALPOINTER, LINEERR_TARGETSELF, LINEERR_NOMEM,
LINEERR_UNINITIALIZED, LINEERR_NOTOWNER.
Remarks
The
lineHandoff function returns LINEERR_TARGETSELF if the calling application attempted an
indirect handoff (that is, set the
lpszFileName parameter to NULL) and TAPI determined that the application is itself the
highest priority application for the given media mode. If LINEERR_TARGETNOTFOUND
is returned, a target for the call handoff was not found. This may occur if the
named application did not open the same line with the LINECALLPRIVILEGE_OWNER
bit in the
dwPrivileges parameter of
lineOpen. Or, in the case of media-mode handoff, no application has opened the same
line with the LINECALLPRIVILEGE_OWNER bit in the
dwPrivileges parameter of
lineOpen and with the media mode specified in the
dwMediaMode parameter having been specified in the
dwMediaModes parameter of
lineOpen.
Call handoff allows ownership of a call to be passed among applications. There
are two types of handoff. In the first type, if the application knows the
filename of the target application, it can simply specify the filename of that
application. If an instance of the target application has opened the line device,
ownership of the call will be passed to the other application; otherwise, the
handoff will fail and an error is returned. This form of handoff will succeed if
the call handle is handed off to the same file name as the application
requesting the handoff.
The second type of handoff is based on media mode. In this case, the
application indirectly specifies the target application by means of a media mode. The
highest priority application that has currently opened the line device for that
media mode is the target for the handoff. If there is no such application, the
handoff fails and an error is returned.
The
lineHandoff function does not change the media mode of a call. To change the media mode
of a call, the application should use
lineSetMediaMode on the call, specifying the new media mode. This changes the call's media as
stored in the call's
LINECALLINFO structure.
If handoff is successful, the receiving application will receive a
LINE_CALLSTATE message for the call. This message indicates that the receiving application
has owner privilege to the call (
dwParam3). In addition, the number of owners and/or monitors for the call may have
changed. This is reported by the
LINE_CALLINFO message, and the receiving application can then invoke
lineGetCallStatus and
lineGetCallInfo to retrieve more information about the received call.
The receiving application should first check the media mode in
LINECALLINFO. If only a single media mode flag is set, the call is officially of that
media mode, and the application can act accordingly. If UNKNOWN and other media
mode flags are set, then the media mode of the call is officially UNKNOWN but is
assumed to be of one of the media modes for which a flag is set in
LINECALLINFO. The application should assume that it ought to probe for the highest
priority media mode.
If the probe succeeds (either for that media mode or for another one), the
application should set the media mode field in
LINECALLINFO to just the single media mode that was recognized. If the media mode is for
that media mode, the application can act accordingly; otherwise, if it makes a
determination for another media mode, it must first hand off the call to that
media mode.
If the probe fails, the application should clear the corresponding media mode
flag in
LINECALLINFO and hand off the call, specifying
dwMediaMode as LINEMEDIAMODE_UNKNOWN. It should also deallocate its call handle (or
revert back to monitoring).
If none of the media modes succeeded in making a determination, only the
UNKNOWN flag will remain set in the media mode field of
LINECALLINFO at the time the media application attempts to hand off the call back to
UNKNOWN. The final
lineHandoff will fail if the application is the only remaining owner of the call. This
informs the application that it should drop the call and deallocate its handle,
in which case the call is abandoned. The privileges of the invoking application
to the call are unchanged by this operation, but the application can change its
privileges to a call with
lineSetCallPrivilege.
See Also
LINECALLINFO,
lineGetCallStatus,
lineOpen,
lineSetCallPrivilege,
lineSetMediaMode
- Software for developers
-
Delphi Components
.Net Components
Software for Android Developers
- More information resources
-
MegaDetailed.Net
Unix Manual Pages
Delphi Examples
- Databases for Amazon shops developers
-
Amazon Categories Database
Browse Nodes Database