ID: Q162135
The information in this article applies to:
With the release of TAPI 2.0, the default TAPI version in TAPI.H is set to 2.0. This can cause TAPI APIs called on Windows 95 to fail, and return LINEERR_OPERATIONUNAVAIL. This can be corrected by defining TAPI_CURRENT_VERSION to set the TAPI version to 1.4 before including TAPI.H, as follows:
#define TAPI_CURRENT_VERSION 0x00010004
#include <tapi.h>
The TAPI 2.0 implementation on Windows NT is fully UNICODE. This means there are A (Ansi) and W (Wide Character) versions of many TAPI APIs. By default, TAPI.H shipped with the Win32 SDK Version 4.0 assumes TAPI_CURRENT_VERSION as 2.0 and resolves TAPI calls to either Ansi versions of the APIs (lineMakeCall -> lineMakeCallA) or Wide character versions (lineMakeCall -> lineMakeCallW), depending on if the UNICODE constant is defined.
However, TAPI.DLL on Windows 95 does not export either the Wide or Ansi functions. When you run an application compiled using TAPI_CURRENT_VERSION >= 2.0 on Windows 95, TAPI fails to resolve these function names and reports LINEERR_OPERATIONUNAVAIL. If you set the TAPI_CURRENT_VERSION to < 2.0, it forces the TAPI.H header file to use the non-Unicode version of the APIs.
This most commonly occurs when you compile legacy TAPI application with the Win32 SDK shipped for Windows NT version 4.0 or Visual C++ version 4.2b.
The only way to compile an application that uses TAPI 2.0 on Windows NT and TAPI 1.4 on Windows 95 is to make all TAPI calls from a DLL and have two versions of the DLL, one for TAPI 2.0 and one for TAPI 1.4.
Keywords : kbprg kbusage kbTAPI Tapi
Version : 4.0
Platform : NT WINDOWS
Last Reviewed: August 5, 1998