TAPI Client Management DLL API Hooks

This section discusses TAPI Client Management DLL API hooks that are called from TAPISRV during their corresponding call to a TAPI function.

The following TAPI functions have corresponding TAPI Client Management functions:

lineAddToConference

lineBlindTransfer

lineDial

lineForward

lineGenerateDigits

lineMakeCall

lineOpen

lineRedirect

lineSetCallData

lineSetCallParams

lineSetCallPrivilege

lineSetCallTreatment

lineSetCurrentLocation

lineSetDevConfig

lineSetLineDevStatus

lineSetMediaControl

lineSetMediaMode

lineSetTerminal

phoneOpen

Note  For more information on these TAPI functions, see the Microsoft TAPI Programmer's Reference in the Microsoft Platform Software Development Kit.

During a managed TAPI call, TAPI runs through the list of Client Management DLLs and calls the corresponding TAPICLIENT function in the DLL. The DLLs are called in the order that they are listed in the Client Management DLL registry key.

If a Client Management DLL returns LINEERR_STRUCTURETOOSMALL for a function, TAPI reallocates the buffer and calls the DLL again. If a DLL returns any other failure for a call, TAPI returns that failure to the client application. If the DLL call succeeds, TAPI calls the next DLL in the list.

Certain functions allow the Client Management DLL to modify a buffer. For example, TAPICLIENT_LineMakeCall allows the DLL to modify the destination address, LINECALLPARAMS structure, and the country code. If any parameter is modified during the call, the modified parameter is passed to the next DLL.

Note  The DLL must not modify the buffer unless it returns success for that call. In addition, the DLL must verify that the buffer is large enough for the changes before it attempts to modify the buffer.

TAPI Client DLL does not need to implement every TAPICLIENT hook. A Client Management DLL can implement any hook it is interested in.

The following return values apply to all TAPICLIENT functions.

Return Value Meaning
0 Success; the client is allowed to continue with this call.
LINEERR_STRUCTURETOOSMALL A modifiable buffer passed in is too small for the modifications.
LINEERR_BILLINGREJECTED The destination address is not allowed.
LINEERR_INVALFEATURE The client is not allowed to call this function (under these conditions).
LINEERR_NOMEM There was a memory failure during normal processing of this function.
LINEERR_OPERATIONFAILED Some failure occurred during processing of this function.