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:
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. |