Another breaking change related to 64 bit compatibility, this time in TAPISRV w/Windows 8

The ADO team had to make a breaking change the ADO APIs due to compatibility problem with Microsoft Office. Now it seems to be Tapi’s turn. In the 64 bit editions of Windows 8 and Windows Server 2012, some TAPI providers would stop getting incoming calls due to implementation changes in the TAPI service (TAPISRV) that had to be done for 64 bit compatibility.

The problem is pretty obvious from the documentation, for example LINE_NEWCALL has this:

htLine = (HTAPILINE) hLineDevice;
htCall = (HTAPICALL) 0;
dwMsg = (DWORD) LINE_NEWCALL;
dwParam1 = (DWORD)(HDRVCALL) hdCall;
dwParam2 = (DWORD)(LPHTAPICALL) &htCall;
dwParam3 = (DWORD) 0;

The parameters can’t really be passed as DWORDs – on a 64 bit build, pointers are 64 bit in size, and a DWORD is 32 bit.

Fortunately this can be corrected fairly easily, just ignore what the documentation said and treat the DWORD parameters as DWORD_PTR, however for the end users they would need updates from TAPI providers to get TAPI working on their Windows 8 /Server 2012 machine.

According to TAPI MVP Andreas Marschall, the following TAPI providers are affected (If you got a provider released before 2012,  it is likely also affected)

  • Avaya TAPI
  • Acatel-Lucent TSP
  • NEC TSP (for PBX NEC SL1100)
  • Siemens HiPath TAPI 120/170 (V2 R1.66.0)
About these ads

About Sheng Jiang 蒋晟

Microsoft MVP in Visual C , 2004- Forum moderator of the Visual C and .Net forums on CSDN Forum moderator of Chinese forums on Microsoft's MSDN forums
This entry was posted in enmsdn, Microsoft. Bookmark the permalink.

One Response to Another breaking change related to 64 bit compatibility, this time in TAPISRV w/Windows 8

  1. Flightrisk says:

    Funny how it works in XP 64bit and Windows 7 64bit. There was no need to implement anything in 64 bits anyway with TAPI as all of these parameters could have been 8 bit and still worked. For example, most of the parameters in the two changed functions hold a state or a mode of which there are only a handful. Did we need to change a parameter that only hold 1 through 5? This is a case where nothing was broken and Microsoft “fixed” it. This has caused untold trouble. And for many devices which no longer have internal support for their TSPs, customers are just now out of luck because they can’t use it anymore after Windows 8.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s