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
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
If handoff is
successful, the receiving application will receive a LINE_CALLSTATEH0NJU2 and lineGetCallInfo to retrieve more
information about the received call.
The receiving
application should first check the media mode in LINECALLINFO
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