Browse Source

+ Added TAPI declarations by SovNarKom.

git-svn-id: trunk@8230 -
yury 18 years ago
parent
commit
0e1357642e
3 changed files with 1810 additions and 0 deletions
  1. 1 0
      .gitattributes
  2. 2 0
      rtl/wince/windows.pp
  3. 1807 0
      rtl/wince/wininc/tapi.inc

+ 1 - 0
.gitattributes

@@ -5517,6 +5517,7 @@ rtl/wince/wininc/messages.inc -text
 rtl/wince/wininc/oleaut32.inc svneol=native#text/plain
 rtl/wince/wininc/redef.inc -text
 rtl/wince/wininc/struct.inc -text
+rtl/wince/wininc/tapi.inc -text
 rtl/wince/winres.inc -text
 rtl/wince/winsock.pp svneol=native#text/plain
 rtl/wince/winsock2.pp svneol=native#text/plain

+ 2 - 0
rtl/wince/windows.pp

@@ -47,6 +47,7 @@ interface
 {$i ceshell.inc}
 {$i oleaut32.inc}
 {$i iphlpapi.inc}
+{$i tapi.inc}
 {$i cemiss.inc}
 
 {$i redef.inc}
@@ -68,6 +69,7 @@ implementation
 {$i commdlg.inc}
 {$i ceshell.inc}
 {$i oleaut32.inc}
+{$i tapi.inc}
 {$i cemiss.inc}
 
 {$i redef.inc}

+ 1807 - 0
rtl/wince/wininc/tapi.inc

@@ -0,0 +1,1807 @@
+{
+    This file is part of the Free Pascal run time library.
+    Copyright (c) 2007 Free Pascal development team.
+
+    See the file COPYING.FPC, included in this distribution,
+    for details about the copyright.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+
+ **********************************************************************}
+
+{ Declarations for tapi WinCE API, note than on WinCE tapi functions originally
+  based in core.dll
+}
+
+{ this port based on Windows Mobile 5 Smartphone Edition SDK
+  contact S0vNark0m for more information [email protected] (en, ru)
+}
+
+{$ifdef read_interface}
+
+//*****************************************************************************
+// consts
+//*****************************************************************************
+
+const
+
+  TAPI_CURRENT_VERSION = $00020000;
+
+  { Messages for Phones and Lines }
+
+  LINE_ADDRESSSTATE = 0;
+  LINE_CALLINFO = 1;
+  LINE_CALLSTATE = 2;
+  LINE_CLOSE = 3;
+  LINE_DEVSPECIFIC = 4;
+  LINE_DEVSPECIFICFEATURE = 5;
+  LINE_GATHERDIGITS = 6;
+  LINE_GENERATE = 7;
+  LINE_LINEDEVSTATE = 8;
+  LINE_MONITORDIGITS = 9;
+  LINE_MONITORMEDIA = 10;
+  LINE_MONITORTONE = 11;
+  LINE_REPLY = 12;
+  LINE_REQUEST = 13;
+  PHONE_BUTTON = 14;
+  PHONE_CLOSE = 15;
+  PHONE_DEVSPECIFIC = 16;
+  PHONE_REPLY = 17;
+  PHONE_STATE = 18;
+  LINE_CREATE = 19;       { TAPI v1.4 }
+  PHONE_CREATE = 20;       { TAPI v1.4 }
+
+  LINE_AGENTSPECIFIC = 21;       { TAPI v2.0 }
+  LINE_AGENTSTATUS = 22;       { TAPI v2.0 }
+  LINE_APPNEWCALL = 23;       { TAPI v2.0 }
+  LINE_PROXYREQUEST = 24;       { TAPI v2.0 }
+  LINE_REMOVE = 25;       { TAPI v2.0 }
+  PHONE_REMOVE = 26;       { TAPI v2.0 }
+
+  INITIALIZE_NEGOTIATION = $FFFFFFFF;
+
+  LINEADDRCAPFLAGS_FWDNUMRINGS = $00000001;
+  LINEADDRCAPFLAGS_PICKUPGROUPID = $00000002;
+  LINEADDRCAPFLAGS_SECURE = $00000004;
+  LINEADDRCAPFLAGS_BLOCKIDDEFAULT = $00000008;
+  LINEADDRCAPFLAGS_BLOCKIDOVERRIDE = $00000010;
+  LINEADDRCAPFLAGS_DIALED = $00000020;
+  LINEADDRCAPFLAGS_ORIGOFFHOOK = $00000040;
+  LINEADDRCAPFLAGS_DESTOFFHOOK = $00000080;
+  LINEADDRCAPFLAGS_FWDCONSULT = $00000100;
+  LINEADDRCAPFLAGS_SETUPCONFNULL = $00000200;
+  LINEADDRCAPFLAGS_AUTORECONNECT = $00000400;
+  LINEADDRCAPFLAGS_COMPLETIONID = $00000800;
+  LINEADDRCAPFLAGS_TRANSFERHELD = $00001000;
+  LINEADDRCAPFLAGS_TRANSFERMAKE = $00002000;
+  LINEADDRCAPFLAGS_CONFERENCEHELD = $00004000;
+  LINEADDRCAPFLAGS_CONFERENCEMAKE = $00008000;
+  LINEADDRCAPFLAGS_PARTIALDIAL = $00010000;
+  LINEADDRCAPFLAGS_FWDSTATUSVALID = $00020000;
+  LINEADDRCAPFLAGS_FWDINTEXTADDR = $00040000;
+  LINEADDRCAPFLAGS_FWDBUSYNAADDR = $00080000;
+  LINEADDRCAPFLAGS_ACCEPTTOALERT = $00100000;
+  LINEADDRCAPFLAGS_CONFDROP = $00200000;
+  LINEADDRCAPFLAGS_PICKUPCALLWAIT = $00400000;
+  LINEADDRCAPFLAGS_PREDICTIVEDIALER = $00800000;       { TAPI v2.0 }
+  LINEADDRCAPFLAGS_QUEUE = $01000000;       { TAPI v2.0 }
+  LINEADDRCAPFLAGS_ROUTEPOINT = $02000000;       { TAPI v2.0 }
+  LINEADDRCAPFLAGS_HOLDMAKESNEW = $04000000;       { TAPI v2.0 }
+  LINEADDRCAPFLAGS_NOINTERNALCALLS = $08000000;       { TAPI v2.0 }
+  LINEADDRCAPFLAGS_NOEXTERNALCALLS = $10000000;       { TAPI v2.0 }
+  LINEADDRCAPFLAGS_SETCALLINGID = $20000000;       { TAPI v2.0 }
+
+  LINEADDRESSMODE_ADDRESSID = $00000001;
+  LINEADDRESSMODE_DIALABLEADDR = $00000002;
+
+  LINEADDRESSSHARING_PRIVATE = $00000001;
+  LINEADDRESSSHARING_BRIDGEDEXCL = $00000002;
+  LINEADDRESSSHARING_BRIDGEDNEW = $00000004;
+  LINEADDRESSSHARING_BRIDGEDSHARED = $00000008;
+  LINEADDRESSSHARING_MONITORED = $00000010;
+
+  LINEADDRESSSTATE_OTHER = $00000001;
+  LINEADDRESSSTATE_DEVSPECIFIC = $00000002;
+  LINEADDRESSSTATE_INUSEZERO = $00000004;
+  LINEADDRESSSTATE_INUSEONE = $00000008;
+  LINEADDRESSSTATE_INUSEMANY = $00000010;
+  LINEADDRESSSTATE_NUMCALLS = $00000020;
+  LINEADDRESSSTATE_FORWARD = $00000040;
+  LINEADDRESSSTATE_TERMINALS = $00000080;
+  LINEADDRESSSTATE_CAPSCHANGE = $00000100;       { TAPI v1.4 }
+
+  LINEADDRESSTYPE_PHONENUMBER = $00000001;
+  LINEADDRESSTYPE_SDP = $00000002;
+  LINEADDRESSTYPE_EMAILNAME = $00000004;
+  LINEADDRESSTYPE_DOMAINNAME = $00000008;
+  LINEADDRESSTYPE_IPADDRESS = $00000010;
+
+  LINEADDRFEATURE_FORWARD = $00000001;
+  LINEADDRFEATURE_MAKECALL = $00000002;
+  LINEADDRFEATURE_PICKUP = $00000004;
+  LINEADDRFEATURE_SETMEDIACONTROL = $00000008;
+  LINEADDRFEATURE_SETTERMINAL = $00000010;
+  LINEADDRFEATURE_SETUPCONF = $00000020;
+  LINEADDRFEATURE_UNCOMPLETECALL = $00000040;
+  LINEADDRFEATURE_UNPARK = $00000080;
+  LINEADDRFEATURE_PICKUPHELD = $00000100;       { TAPI v2.0 }
+  LINEADDRFEATURE_PICKUPGROUP = $00000200;       { TAPI v2.0 }
+  LINEADDRFEATURE_PICKUPDIRECT = $00000400;       { TAPI v2.0 }
+  LINEADDRFEATURE_PICKUPWAITING = $00000800;       { TAPI v2.0 }
+  LINEADDRFEATURE_FORWARDFWD = $00001000;       { TAPI v2.0 }
+  LINEADDRFEATURE_FORWARDDND = $00002000;       { TAPI v2.0 }
+
+  LINEAGENTFEATURE_SETAGENTGROUP = $00000001;       { TAPI v2.0 }
+  LINEAGENTFEATURE_SETAGENTSTATE = $00000002;       { TAPI v2.0 }
+  LINEAGENTFEATURE_SETAGENTACTIVITY = $00000004;       { TAPI v2.0 }
+  LINEAGENTFEATURE_AGENTSPECIFIC = $00000008;       { TAPI v2.0 }
+  LINEAGENTFEATURE_GETAGENTACTIVITYLIST = $00000010;       { TAPI v2.0 }
+  LINEAGENTFEATURE_GETAGENTGROUP = $00000020;       { TAPI v2.0 }
+
+  LINEAGENTSTATE_LOGGEDOFF = $00000001;       { TAPI v2.0 }
+  LINEAGENTSTATE_NOTREADY = $00000002;       { TAPI v2.0 }
+  LINEAGENTSTATE_READY = $00000004;       { TAPI v2.0 }
+  LINEAGENTSTATE_BUSYACD = $00000008;       { TAPI v2.0 }
+  LINEAGENTSTATE_BUSYINCOMING = $00000010;       { TAPI v2.0 }
+  LINEAGENTSTATE_BUSYOUTBOUND = $00000020;       { TAPI v2.0 }
+  LINEAGENTSTATE_BUSYOTHER = $00000040;       { TAPI v2.0 }
+  LINEAGENTSTATE_WORKINGAFTERCALL = $00000080;       { TAPI v2.0 }
+  LINEAGENTSTATE_UNKNOWN = $00000100;       { TAPI v2.0 }
+  LINEAGENTSTATE_UNAVAIL = $00000200;       { TAPI v2.0 }
+
+  LINEAGENTSTATUS_GROUP = $00000001;       { TAPI v2.0 }
+  LINEAGENTSTATUS_STATE = $00000002;       { TAPI v2.0 }
+  LINEAGENTSTATUS_NEXTSTATE = $00000004;       { TAPI v2.0 }
+  LINEAGENTSTATUS_ACTIVITY = $00000008;       { TAPI v2.0 }
+  LINEAGENTSTATUS_ACTIVITYLIST = $00000010;       { TAPI v2.0 }
+  LINEAGENTSTATUS_GROUPLIST = $00000020;       { TAPI v2.0 }
+  LINEAGENTSTATUS_CAPSCHANGE = $00000040;       { TAPI v2.0 }
+  LINEAGENTSTATUS_VALIDSTATES = $00000080;       { TAPI v2.0 }
+  LINEAGENTSTATUS_VALIDNEXTSTATES = $00000100;       { TAPI v2.0 }
+
+  LINEANSWERMODE_NONE = $00000001;
+  LINEANSWERMODE_DROP = $00000002;
+  LINEANSWERMODE_HOLD = $00000004;
+  LINEBEARERMODE_VOICE = $00000001;
+  LINEBEARERMODE_SPEECH = $00000002;
+  LINEBEARERMODE_MULTIUSE = $00000004;
+  LINEBEARERMODE_DATA = $00000008;
+  LINEBEARERMODE_ALTSPEECHDATA = $00000010;
+  LINEBEARERMODE_NONCALLSIGNALING = $00000020;
+  LINEBEARERMODE_PASSTHROUGH = $00000040;       { TAPI v1.4 }
+  LINEBEARERMODE_RESTRICTEDDATA = $00000080;       { TAPI v2.0 }
+
+  LINEBUSYMODE_STATION = $00000001;
+  LINEBUSYMODE_TRUNK = $00000002;
+  LINEBUSYMODE_UNKNOWN = $00000004;
+  LINEBUSYMODE_UNAVAIL = $00000008;
+
+  LINECALLCOMPLCOND_BUSY = $00000001;
+  LINECALLCOMPLCOND_NOANSWER = $00000002;
+
+  LINECALLCOMPLMODE_CAMPON = $00000001;
+  LINECALLCOMPLMODE_CALLBACK = $00000002;
+  LINECALLCOMPLMODE_INTRUDE = $00000004;
+  LINECALLCOMPLMODE_MESSAGE = $00000008;
+
+  LINECALLFEATURE_ACCEPT = $00000001;
+  LINECALLFEATURE_ADDTOCONF = $00000002;
+  LINECALLFEATURE_ANSWER = $00000004;
+  LINECALLFEATURE_BLINDTRANSFER = $00000008;
+  LINECALLFEATURE_COMPLETECALL = $00000010;
+  LINECALLFEATURE_COMPLETETRANSF = $00000020;
+  LINECALLFEATURE_DIAL = $00000040;
+  LINECALLFEATURE_DROP = $00000080;
+  LINECALLFEATURE_GATHERDIGITS = $00000100;
+  LINECALLFEATURE_GENERATEDIGITS = $00000200;
+  LINECALLFEATURE_GENERATETONE = $00000400;
+  LINECALLFEATURE_HOLD = $00000800;
+  LINECALLFEATURE_MONITORDIGITS = $00001000;
+  LINECALLFEATURE_MONITORMEDIA = $00002000;
+  LINECALLFEATURE_MONITORTONES = $00004000;
+  LINECALLFEATURE_PARK = $00008000;
+  LINECALLFEATURE_PREPAREADDCONF = $00010000;
+  LINECALLFEATURE_REDIRECT = $00020000;
+  LINECALLFEATURE_REMOVEFROMCONF = $00040000;
+  LINECALLFEATURE_SECURECALL = $00080000;
+  LINECALLFEATURE_SENDUSERUSER = $00100000;
+  LINECALLFEATURE_SETCALLPARAMS = $00200000;
+  LINECALLFEATURE_SETMEDIACONTROL = $00400000;
+  LINECALLFEATURE_SETTERMINAL = $00800000;
+  LINECALLFEATURE_SETUPCONF = $01000000;
+  LINECALLFEATURE_SETUPTRANSFER = $02000000;
+  LINECALLFEATURE_SWAPHOLD = $04000000;
+  LINECALLFEATURE_UNHOLD = $08000000;
+  LINECALLFEATURE_RELEASEUSERUSERINFO = $10000000;       { TAPI v1.4 }
+  LINECALLFEATURE_SETTREATMENT = $20000000;       { TAPI v2.0 }
+  LINECALLFEATURE_SETQOS = $40000000;       { TAPI v2.0 }
+  LINECALLFEATURE_SETCALLDATA = $80000000;       { TAPI v2.0 }
+
+  LINECALLFEATURE2_NOHOLDCONFERENCE = $00000001;       { TAPI v2.0 }
+  LINECALLFEATURE2_ONESTEPTRANSFER = $00000002;       { TAPI v2.0 }
+  LINECALLFEATURE2_COMPLCAMPON = $00000004;       { TAPI v2.0 }
+  LINECALLFEATURE2_COMPLCALLBACK = $00000008;       { TAPI v2.0 }
+  LINECALLFEATURE2_COMPLINTRUDE = $00000010;       { TAPI v2.0 }
+  LINECALLFEATURE2_COMPLMESSAGE = $00000020;       { TAPI v2.0 }
+  LINECALLFEATURE2_TRANSFERNORM = $00000040;       { TAPI v2.0 }
+  LINECALLFEATURE2_TRANSFERCONF = $00000080;       { TAPI v2.0 }
+  LINECALLFEATURE2_PARKDIRECT = $00000100;       { TAPI v2.0 }
+  LINECALLFEATURE2_PARKNONDIRECT = $00000200;       { TAPI v2.0 }
+
+  LINECALLINFOSTATE_OTHER = $00000001;
+  LINECALLINFOSTATE_DEVSPECIFIC = $00000002;
+  LINECALLINFOSTATE_BEARERMODE = $00000004;
+  LINECALLINFOSTATE_RATE = $00000008;
+  LINECALLINFOSTATE_MEDIAMODE = $00000010;
+  LINECALLINFOSTATE_APPSPECIFIC = $00000020;
+  LINECALLINFOSTATE_CALLID = $00000040;
+  LINECALLINFOSTATE_RELATEDCALLID = $00000080;
+  LINECALLINFOSTATE_ORIGIN = $00000100;
+  LINECALLINFOSTATE_REASON = $00000200;
+  LINECALLINFOSTATE_COMPLETIONID = $00000400;
+  LINECALLINFOSTATE_NUMOWNERINCR = $00000800;
+  LINECALLINFOSTATE_NUMOWNERDECR = $00001000;
+  LINECALLINFOSTATE_NUMMONITORS = $00002000;
+  LINECALLINFOSTATE_TRUNK = $00004000;
+  LINECALLINFOSTATE_CALLERID = $00008000;
+  LINECALLINFOSTATE_CALLEDID = $00010000;
+  LINECALLINFOSTATE_CONNECTEDID = $00020000;
+  LINECALLINFOSTATE_REDIRECTIONID = $00040000;
+  LINECALLINFOSTATE_REDIRECTINGID = $00080000;
+  LINECALLINFOSTATE_DISPLAY = $00100000;
+  LINECALLINFOSTATE_USERUSERINFO = $00200000;
+  LINECALLINFOSTATE_HIGHLEVELCOMP = $00400000;
+  LINECALLINFOSTATE_LOWLEVELCOMP = $00800000;
+  LINECALLINFOSTATE_CHARGINGINFO = $01000000;
+  LINECALLINFOSTATE_TERMINAL = $02000000;
+  LINECALLINFOSTATE_DIALPARAMS = $04000000;
+  LINECALLINFOSTATE_MONITORMODES = $08000000;
+  LINECALLINFOSTATE_TREATMENT = $10000000;       { TAPI v2.0 }
+  LINECALLINFOSTATE_QOS = $20000000;       { TAPI v2.0 }
+  LINECALLINFOSTATE_CALLDATA = $40000000;       { TAPI v2.0 }
+
+  LINECALLORIGIN_OUTBOUND = $00000001;
+  LINECALLORIGIN_INTERNAL = $00000002;
+  LINECALLORIGIN_EXTERNAL = $00000004;
+  LINECALLORIGIN_UNKNOWN = $00000010;
+  LINECALLORIGIN_UNAVAIL = $00000020;
+  LINECALLORIGIN_CONFERENCE = $00000040;
+  LINECALLORIGIN_INBOUND = $00000080;       { TAPI v1.4 }
+
+  LINECALLPARAMFLAGS_SECURE = $00000001;
+  LINECALLPARAMFLAGS_IDLE = $00000002;
+  LINECALLPARAMFLAGS_BLOCKID = $00000004;
+  LINECALLPARAMFLAGS_ORIGOFFHOOK = $00000008;
+  LINECALLPARAMFLAGS_DESTOFFHOOK = $00000010;
+  LINECALLPARAMFLAGS_NOHOLDCONFERENCE = $00000020;       { TAPI v2.0 }
+  LINECALLPARAMFLAGS_PREDICTIVEDIAL = $00000040;       { TAPI v2.0 }
+  LINECALLPARAMFLAGS_ONESTEPTRANSFER = $00000080;       { TAPI v2.0 }
+
+  LINECALLPARTYID_BLOCKED = $00000001;
+  LINECALLPARTYID_OUTOFAREA = $00000002;
+  LINECALLPARTYID_NAME = $00000004;
+  LINECALLPARTYID_ADDRESS = $00000008;
+  LINECALLPARTYID_PARTIAL = $00000010;
+  LINECALLPARTYID_UNKNOWN = $00000020;
+  LINECALLPARTYID_UNAVAIL = $00000040;
+
+  LINECALLPRIVILEGE_NONE = $00000001;
+  LINECALLPRIVILEGE_MONITOR = $00000002;
+  LINECALLPRIVILEGE_OWNER = $00000004;
+
+  LINECALLREASON_DIRECT = $00000001;
+  LINECALLREASON_FWDBUSY = $00000002;
+  LINECALLREASON_FWDNOANSWER = $00000004;
+  LINECALLREASON_FWDUNCOND = $00000008;
+  LINECALLREASON_PICKUP = $00000010;
+  LINECALLREASON_UNPARK = $00000020;
+  LINECALLREASON_REDIRECT = $00000040;
+  LINECALLREASON_CALLCOMPLETION = $00000080;
+  LINECALLREASON_TRANSFER = $00000100;
+  LINECALLREASON_REMINDER = $00000200;
+  LINECALLREASON_UNKNOWN = $00000400;
+  LINECALLREASON_UNAVAIL = $00000800;
+  LINECALLREASON_INTRUDE = $00001000;       { TAPI v1.4 }
+  LINECALLREASON_PARKED = $00002000;       { TAPI v1.4 }
+  LINECALLREASON_CAMPEDON = $00004000;       { TAPI v2.0 }
+  LINECALLREASON_ROUTEREQUEST = $00008000;       { TAPI v2.0 }
+
+  LINECALLSELECT_LINE = $00000001;
+  LINECALLSELECT_ADDRESS = $00000002;
+  LINECALLSELECT_CALL = $00000004;
+  LINECALLSELECT_DEVICEID = $00000008;       { TAPI v2.1 }
+  LINECALLSELECT_CALLID = $00000010;       { TAPI v3.0 }
+
+  LINECALLSTATE_IDLE = $00000001;
+  LINECALLSTATE_OFFERING = $00000002;
+  LINECALLSTATE_ACCEPTED = $00000004;
+  LINECALLSTATE_DIALTONE = $00000008;
+  LINECALLSTATE_DIALING = $00000010;
+  LINECALLSTATE_RINGBACK = $00000020;
+  LINECALLSTATE_BUSY = $00000040;
+  LINECALLSTATE_SPECIALINFO = $00000080;
+  LINECALLSTATE_CONNECTED = $00000100;
+  LINECALLSTATE_PROCEEDING = $00000200;
+  LINECALLSTATE_ONHOLD = $00000400;
+  LINECALLSTATE_CONFERENCED = $00000800;
+  LINECALLSTATE_ONHOLDPENDCONF = $00001000;
+  LINECALLSTATE_ONHOLDPENDTRANSFER = $00002000;
+  LINECALLSTATE_DISCONNECTED = $00004000;
+  LINECALLSTATE_UNKNOWN = $00008000;
+
+  LINECALLTREATMENT_SILENCE = $00000001;       { TAPI v2.0 }
+  LINECALLTREATMENT_RINGBACK = $00000002;       { TAPI v2.0 }
+  LINECALLTREATMENT_BUSY = $00000003;       { TAPI v2.0 }
+  LINECALLTREATMENT_MUSIC = $00000004;       { TAPI v2.0 }
+
+  LINECARDOPTION_PREDEFINED = $00000001;       { TAPI v1.4 }
+  LINECARDOPTION_HIDDEN = $00000002;       { TAPI v1.4 }
+
+  LINECONNECTEDMODE_ACTIVE = $00000001;       { TAPI v1.4 }
+  LINECONNECTEDMODE_INACTIVE = $00000002;       { TAPI v1.4 }
+  LINECONNECTEDMODE_ACTIVEHELD = $00000004;       { TAPI v2.0 }
+  LINECONNECTEDMODE_INACTIVEHELD = $00000008;       { TAPI v2.0 }
+  LINECONNECTEDMODE_CONFIRMED = $00000010;       { TAPI v2.0 }
+
+  LINEDEVCAPFLAGS_CROSSADDRCONF = $00000001;
+  LINEDEVCAPFLAGS_HIGHLEVCOMP = $00000002;
+  LINEDEVCAPFLAGS_LOWLEVCOMP = $00000004;
+  LINEDEVCAPFLAGS_MEDIACONTROL = $00000008;
+  LINEDEVCAPFLAGS_MULTIPLEADDR = $00000010;
+  LINEDEVCAPFLAGS_CLOSEDROP = $00000020;
+  LINEDEVCAPFLAGS_DIALBILLING = $00000040;
+  LINEDEVCAPFLAGS_DIALQUIET = $00000080;
+  LINEDEVCAPFLAGS_DIALDIALTONE = $00000100;
+  LINEDEVCAPFLAGS_MSP = $00000200;       { TAPI v3.0 }
+  LINEDEVCAPFLAGS_CALLHUB = $00000400;       { TAPI v3.0 }
+  LINEDEVCAPFLAGS_CALLHUBTRACKING = $00000800;       { TAPI v3.0 }
+  LINEDEVCAPFLAGS_PRIVATEOBJECTS = $00001000;       { TAPI v3.0 }
+
+  LINEDEVSTATE_OTHER = $00000001;
+  LINEDEVSTATE_RINGING = $00000002;
+  LINEDEVSTATE_CONNECTED = $00000004;
+  LINEDEVSTATE_DISCONNECTED = $00000008;
+  LINEDEVSTATE_MSGWAITON = $00000010;
+  LINEDEVSTATE_MSGWAITOFF = $00000020;
+  LINEDEVSTATE_INSERVICE = $00000040;
+  LINEDEVSTATE_OUTOFSERVICE = $00000080;
+  LINEDEVSTATE_MAINTENANCE = $00000100;
+  LINEDEVSTATE_OPEN = $00000200;
+  LINEDEVSTATE_CLOSE = $00000400;
+  LINEDEVSTATE_NUMCALLS = $00000800;
+  LINEDEVSTATE_NUMCOMPLETIONS = $00001000;
+  LINEDEVSTATE_TERMINALS = $00002000;
+  LINEDEVSTATE_ROAMMODE = $00004000;
+  LINEDEVSTATE_BATTERY = $00008000;
+  LINEDEVSTATE_SIGNAL = $00010000;
+  LINEDEVSTATE_DEVSPECIFIC = $00020000;
+  LINEDEVSTATE_REINIT = $00040000;
+  LINEDEVSTATE_LOCK = $00080000;
+  LINEDEVSTATE_CAPSCHANGE = $00100000;       { TAPI v1.4 }
+  LINEDEVSTATE_CONFIGCHANGE = $00200000;       { TAPI v1.4 }
+  LINEDEVSTATE_TRANSLATECHANGE = $00400000;       { TAPI v1.4 }
+  LINEDEVSTATE_COMPLCANCEL = $00800000;       { TAPI v1.4 }
+  LINEDEVSTATE_REMOVED = $01000000;       { TAPI v1.4 }
+
+  LINEDEVSTATUSFLAGS_CONNECTED = $00000001;
+  LINEDEVSTATUSFLAGS_MSGWAIT = $00000002;
+  LINEDEVSTATUSFLAGS_INSERVICE = $00000004;
+  LINEDEVSTATUSFLAGS_LOCKED = $00000008;
+
+  LINEDIALTONEMODE_NORMAL = $00000001;
+  LINEDIALTONEMODE_SPECIAL = $00000002;
+  LINEDIALTONEMODE_INTERNAL = $00000004;
+  LINEDIALTONEMODE_EXTERNAL = $00000008;
+  LINEDIALTONEMODE_UNKNOWN = $00000010;
+  LINEDIALTONEMODE_UNAVAIL = $00000020;
+
+  LINEDIGITMODE_PULSE = $00000001;
+  LINEDIGITMODE_DTMF = $00000002;
+  LINEDIGITMODE_DTMFEND = $00000004;
+
+  LINEDISCONNECTMODE_NORMAL = $00000001;
+  LINEDISCONNECTMODE_UNKNOWN = $00000002;
+  LINEDISCONNECTMODE_REJECT = $00000004;
+  LINEDISCONNECTMODE_PICKUP = $00000008;
+  LINEDISCONNECTMODE_FORWARDED = $00000010;
+  LINEDISCONNECTMODE_BUSY = $00000020;
+  LINEDISCONNECTMODE_NOANSWER = $00000040;
+  LINEDISCONNECTMODE_BADADDRESS = $00000080;
+  LINEDISCONNECTMODE_UNREACHABLE = $00000100;
+  LINEDISCONNECTMODE_CONGESTION = $00000200;
+  LINEDISCONNECTMODE_INCOMPATIBLE = $00000400;
+  LINEDISCONNECTMODE_UNAVAIL = $00000800;
+  LINEDISCONNECTMODE_NODIALTONE = $00001000;       { TAPI v1.4 }
+  LINEDISCONNECTMODE_NUMBERCHANGED = $00002000;       { TAPI v2.0 }
+  LINEDISCONNECTMODE_OUTOFORDER = $00004000;       { TAPI v2.0 }
+  LINEDISCONNECTMODE_TEMPFAILURE = $00008000;       { TAPI v2.0 }
+  LINEDISCONNECTMODE_QOSUNAVAIL = $00010000;       { TAPI v2.0 }
+  LINEDISCONNECTMODE_BLOCKED = $00020000;       { TAPI v2.0 }
+  LINEDISCONNECTMODE_DONOTDISTURB = $00040000;       { TAPI v2.0 }
+  LINEDISCONNECTMODE_CANCELLED = $00080000;       { TAPI v2.0 }
+
+  LINEERR_ALLOCATED = $80000001;
+  LINEERR_BADDEVICEID = $80000002;
+  LINEERR_BEARERMODEUNAVAIL = $80000003;
+  LINEERR_CALLUNAVAIL = $80000005;
+  LINEERR_COMPLETIONOVERRUN = $80000006;
+  LINEERR_CONFERENCEFULL = $80000007;
+  LINEERR_DIALBILLING = $80000008;
+  LINEERR_DIALDIALTONE = $80000009;
+  LINEERR_DIALPROMPT = $8000000A;
+  LINEERR_DIALQUIET = $8000000B;
+  LINEERR_INCOMPATIBLEAPIVERSION = $8000000C;
+  LINEERR_INCOMPATIBLEEXTVERSION = $8000000D;
+  LINEERR_INIFILECORRUPT = $8000000E;
+  LINEERR_INUSE = $8000000F;
+  LINEERR_INVALADDRESS = $80000010;
+  LINEERR_INVALADDRESSID = $80000011;
+  LINEERR_INVALADDRESSMODE = $80000012;
+  LINEERR_INVALADDRESSSTATE = $80000013;
+  LINEERR_INVALAPPHANDLE = $80000014;
+  LINEERR_INVALAPPNAME = $80000015;
+  LINEERR_INVALBEARERMODE = $80000016;
+  LINEERR_INVALCALLCOMPLMODE = $80000017;
+  LINEERR_INVALCALLHANDLE = $80000018;
+  LINEERR_INVALCALLPARAMS = $80000019;
+  LINEERR_INVALCALLPRIVILEGE = $8000001A;
+  LINEERR_INVALCALLSELECT = $8000001B;
+  LINEERR_INVALCALLSTATE = $8000001C;
+  LINEERR_INVALCALLSTATELIST = $8000001D;
+  LINEERR_INVALCARD = $8000001E;
+  LINEERR_INVALCOMPLETIONID = $8000001F;
+  LINEERR_INVALCONFCALLHANDLE = $80000020;
+  LINEERR_INVALCONSULTCALLHANDLE = $80000021;
+  LINEERR_INVALCOUNTRYCODE = $80000022;
+  LINEERR_INVALDEVICECLASS = $80000023;
+  LINEERR_INVALDEVICEHANDLE = $80000024;
+  LINEERR_INVALDIALPARAMS = $80000025;
+  LINEERR_INVALDIGITLIST = $80000026;
+  LINEERR_INVALDIGITMODE = $80000027;
+  LINEERR_INVALDIGITS = $80000028;
+  LINEERR_INVALEXTVERSION = $80000029;
+  LINEERR_INVALGROUPID = $8000002A;
+  LINEERR_INVALLINEHANDLE = $8000002B;
+  LINEERR_INVALLINESTATE = $8000002C;
+  LINEERR_INVALLOCATION = $8000002D;
+  LINEERR_INVALMEDIALIST = $8000002E;
+  LINEERR_INVALMEDIAMODE = $8000002F;
+  LINEERR_INVALMESSAGEID = $80000030;
+  LINEERR_INVALPARAM = $80000032;
+  LINEERR_INVALPARKID = $80000033;
+  LINEERR_INVALPARKMODE = $80000034;
+  LINEERR_INVALPOINTER = $80000035;
+  LINEERR_INVALPRIVSELECT = $80000036;
+  LINEERR_INVALRATE = $80000037;
+  LINEERR_INVALREQUESTMODE = $80000038;
+  LINEERR_INVALTERMINALID = $80000039;
+  LINEERR_INVALTERMINALMODE = $8000003A;
+  LINEERR_INVALTIMEOUT = $8000003B;
+  LINEERR_INVALTONE = $8000003C;
+  LINEERR_INVALTONELIST = $8000003D;
+  LINEERR_INVALTONEMODE = $8000003E;
+  LINEERR_INVALTRANSFERMODE = $8000003F;
+  LINEERR_LINEMAPPERFAILED = $80000040;
+  LINEERR_NOCONFERENCE = $80000041;
+  LINEERR_NODEVICE = $80000042;
+  LINEERR_NODRIVER = $80000043;
+  LINEERR_NOMEM = $80000044;
+  LINEERR_NOREQUEST = $80000045;
+  LINEERR_NOTOWNER = $80000046;
+  LINEERR_NOTREGISTERED = $80000047;
+  LINEERR_OPERATIONFAILED = $80000048;
+  LINEERR_OPERATIONUNAVAIL = $80000049;
+  LINEERR_RATEUNAVAIL = $8000004A;
+  LINEERR_RESOURCEUNAVAIL = $8000004B;
+  LINEERR_REQUESTOVERRUN = $8000004C;
+  LINEERR_STRUCTURETOOSMALL = $8000004D;
+  LINEERR_TARGETNOTFOUND = $8000004E;
+  LINEERR_TARGETSELF = $8000004F;
+  LINEERR_UNINITIALIZED = $80000050;
+  LINEERR_USERUSERINFOTOOBIG = $80000051;
+  LINEERR_REINIT = $80000052;
+  LINEERR_ADDRESSBLOCKED = $80000053;
+  LINEERR_BILLINGREJECTED = $80000054;
+  LINEERR_INVALFEATURE = $80000055;
+  LINEERR_NOMULTIPLEINSTANCE = $80000056;
+  LINEERR_INVALAGENTID = $80000057;       { TAPI v2.0 }
+  LINEERR_INVALAGENTGROUP = $80000058;       { TAPI v2.0 }
+  LINEERR_INVALPASSWORD = $80000059;       { TAPI v2.0 }
+  LINEERR_INVALAGENTSTATE = $8000005A;       { TAPI v2.0 }
+  LINEERR_INVALAGENTACTIVITY = $8000005B;       { TAPI v2.0 }
+  LINEERR_DIALVOICEDETECT = $8000005C;       { TAPI v2.0 }
+
+  LINEFEATURE_DEVSPECIFIC = $00000001;
+  LINEFEATURE_DEVSPECIFICFEAT = $00000002;
+  LINEFEATURE_FORWARD = $00000004;
+  LINEFEATURE_MAKECALL = $00000008;
+  LINEFEATURE_SETMEDIACONTROL = $00000010;
+  LINEFEATURE_SETTERMINAL = $00000020;
+  LINEFEATURE_SETDEVSTATUS = $00000040;       { TAPI v2.0 }
+  LINEFEATURE_FORWARDFWD = $00000080;       { TAPI v2.0 }
+  LINEFEATURE_FORWARDDND = $00000100;       { TAPI v2.0 }
+
+  LINEFORWARDMODE_UNCOND = $00000001;
+  LINEFORWARDMODE_UNCONDINTERNAL = $00000002;
+  LINEFORWARDMODE_UNCONDEXTERNAL = $00000004;
+  LINEFORWARDMODE_UNCONDSPECIFIC = $00000008;
+  LINEFORWARDMODE_BUSY = $00000010;
+  LINEFORWARDMODE_BUSYINTERNAL = $00000020;
+  LINEFORWARDMODE_BUSYEXTERNAL = $00000040;
+  LINEFORWARDMODE_BUSYSPECIFIC = $00000080;
+  LINEFORWARDMODE_NOANSW = $00000100;
+  LINEFORWARDMODE_NOANSWINTERNAL = $00000200;
+  LINEFORWARDMODE_NOANSWEXTERNAL = $00000400;
+  LINEFORWARDMODE_NOANSWSPECIFIC = $00000800;
+  LINEFORWARDMODE_BUSYNA = $00001000;
+  LINEFORWARDMODE_BUSYNAINTERNAL = $00002000;
+  LINEFORWARDMODE_BUSYNAEXTERNAL = $00004000;
+  LINEFORWARDMODE_BUSYNASPECIFIC = $00008000;
+  LINEFORWARDMODE_UNKNOWN = $00010000;       { TAPI v1.4 }
+  LINEFORWARDMODE_UNAVAIL = $00020000;       { TAPI v1.4 }
+
+  LINEGATHERTERM_BUFFERFULL = $00000001;
+  LINEGATHERTERM_TERMDIGIT = $00000002;
+  LINEGATHERTERM_FIRSTTIMEOUT = $00000004;
+  LINEGATHERTERM_INTERTIMEOUT = $00000008;
+  LINEGATHERTERM_CANCEL = $00000010;
+
+  LINEGENERATETERM_DONE = $00000001;
+  LINEGENERATETERM_CANCEL = $00000002;
+
+ { These constants are mutually exclusive - there's no way to specify more }
+ { than one at a time (and it doesn't make sense, either) so they're }
+ { ordinal rather than bits. }
+
+  LINEINITIALIZEEXOPTION_USEHIDDENWINDOW = $00000001;       { TAPI v2.0 }
+  LINEINITIALIZEEXOPTION_USEEVENT = $00000002;       { TAPI v2.0 }
+  LINEINITIALIZEEXOPTION_USECOMPLETIONPORT = $00000003;       { TAPI v2.0 }
+
+  LINELOCATIONOPTION_PULSEDIAL = $00000001;       { TAPI v1.4 }
+
+  LINEMAPPER = $FFFFFFFF;
+
+  LINEMEDIACONTROL_NONE = $00000001;
+  LINEMEDIACONTROL_START = $00000002;
+  LINEMEDIACONTROL_RESET = $00000004;
+  LINEMEDIACONTROL_PAUSE = $00000008;
+  LINEMEDIACONTROL_RESUME = $00000010;
+  LINEMEDIACONTROL_RATEUP = $00000020;
+  LINEMEDIACONTROL_RATEDOWN = $00000040;
+  LINEMEDIACONTROL_RATENORMAL = $00000080;
+  LINEMEDIACONTROL_VOLUMEUP = $00000100;
+  LINEMEDIACONTROL_VOLUMEDOWN = $00000200;
+  LINEMEDIACONTROL_VOLUMENORMAL = $00000400;
+
+  LINEMEDIAMODE_UNKNOWN = $00000002;
+  LINEMEDIAMODE_INTERACTIVEVOICE = $00000004;
+  LINEMEDIAMODE_AUTOMATEDVOICE = $00000008;
+  LINEMEDIAMODE_DATAMODEM = $00000010;
+  LINEMEDIAMODE_G3FAX = $00000020;
+  LINEMEDIAMODE_TDD = $00000040;
+  LINEMEDIAMODE_G4FAX = $00000080;
+  LINEMEDIAMODE_DIGITALDATA = $00000100;
+  LINEMEDIAMODE_TELETEX = $00000200;
+  LINEMEDIAMODE_VIDEOTEX = $00000400;
+  LINEMEDIAMODE_TELEX = $00000800;
+  LINEMEDIAMODE_MIXED = $00001000;
+  LINEMEDIAMODE_ADSI = $00002000;
+  LINEMEDIAMODE_VOICEVIEW = $00004000;       { TAPI v1.4 }
+  LAST_LINEMEDIAMODE = $00004000;
+
+  LINEOFFERINGMODE_ACTIVE = $00000001;       { TAPI v1.4 }
+  LINEOFFERINGMODE_INACTIVE = $00000002;       { TAPI v1.4 }
+
+  LINEOPENOPTION_SINGLEADDRESS = $80000000;       { TAPI v2.0 }
+  LINEOPENOPTION_PROXY = $40000000;       { TAPI v2.0 }
+
+  LINEPARKMODE_DIRECTED = $00000001;
+  LINEPARKMODE_NONDIRECTED = $00000002;
+
+  LINEPROXYREQUEST_SETAGENTGROUP = $00000001;       { TAPI v2.0 }
+  LINEPROXYREQUEST_SETAGENTSTATE = $00000002;       { TAPI v2.0 }
+  LINEPROXYREQUEST_SETAGENTACTIVITY = $00000003;       { TAPI v2.0 }
+  LINEPROXYREQUEST_GETAGENTCAPS = $00000004;       { TAPI v2.0 }
+  LINEPROXYREQUEST_GETAGENTSTATUS = $00000005;       { TAPI v2.0 }
+  LINEPROXYREQUEST_AGENTSPECIFIC = $00000006;       { TAPI v2.0 }
+  LINEPROXYREQUEST_GETAGENTACTIVITYLIST = $00000007;       { TAPI v2.0 }
+  LINEPROXYREQUEST_GETAGENTGROUPLIST = $00000008;       { TAPI v2.0 }
+
+  LINEREMOVEFROMCONF_NONE = $00000001;
+  LINEREMOVEFROMCONF_LAST = $00000002;
+  LINEREMOVEFROMCONF_ANY = $00000003;
+
+  LINEREQUESTMODE_MAKECALL = $00000001;
+  LINEREQUESTMODE_MEDIACALL = $00000002;
+  LINEREQUESTMODE_DROP = $00000004;
+
+  LAST_LINEREQUESTMODE = LINEREQUESTMODE_MEDIACALL;
+
+  LINEROAMMODE_UNKNOWN = $00000001;
+  LINEROAMMODE_UNAVAIL = $00000002;
+  LINEROAMMODE_HOME = $00000004;
+  LINEROAMMODE_ROAMA = $00000008;
+  LINEROAMMODE_ROAMB = $00000010;
+
+  LINESPECIALINFO_NOCIRCUIT = $00000001;
+  LINESPECIALINFO_CUSTIRREG = $00000002;
+  LINESPECIALINFO_REORDER = $00000004;
+  LINESPECIALINFO_UNKNOWN = $00000008;
+  LINESPECIALINFO_UNAVAIL = $00000010;
+
+  LINETERMDEV_PHONE = $00000001;
+  LINETERMDEV_HEADSET = $00000002;
+  LINETERMDEV_SPEAKER = $00000004;
+
+  LINETERMMODE_BUTTONS = $00000001;
+  LINETERMMODE_LAMPS = $00000002;
+  LINETERMMODE_DISPLAY = $00000004;
+  LINETERMMODE_RINGER = $00000008;
+  LINETERMMODE_HOOKSWITCH = $00000010;
+  LINETERMMODE_MEDIATOLINE = $00000020;
+  LINETERMMODE_MEDIAFROMLINE = $00000040;
+  LINETERMMODE_MEDIABIDIRECT = $00000080;
+
+  LINETERMSHARING_PRIVATE = $00000001;
+  LINETERMSHARING_SHAREDEXCL = $00000002;
+  LINETERMSHARING_SHAREDCONF = $00000004;
+
+  LINETOLLLISTOPTION_ADD = $00000001;
+  LINETOLLLISTOPTION_REMOVE = $00000002;
+
+  LINETONEMODE_CUSTOM = $00000001;
+  LINETONEMODE_RINGBACK = $00000002;
+  LINETONEMODE_BUSY = $00000004;
+  LINETONEMODE_BEEP = $00000008;
+  LINETONEMODE_BILLING = $00000010;
+
+  LINETRANSFERMODE_TRANSFER = $00000001;
+  LINETRANSFERMODE_CONFERENCE = $00000002;
+
+  LINETRANSLATEOPTION_CARDOVERRIDE = $00000001;
+  LINETRANSLATEOPTION_CANCELCALLWAITING = $00000002;       { TAPI v1.4 }
+  LINETRANSLATEOPTION_FORCELOCAL = $00000004;       { TAPI v1.4 }
+  LINETRANSLATEOPTION_FORCELD = $00000008;       { TAPI v1.4 }
+  LINETRANSLATERESULT_CANONICAL = $00000001;
+  LINETRANSLATERESULT_INTERNATIONAL = $00000002;
+  LINETRANSLATERESULT_LONGDISTANCE = $00000004;
+  LINETRANSLATERESULT_LOCAL = $00000008;
+  LINETRANSLATERESULT_INTOLLLIST = $00000010;
+  LINETRANSLATERESULT_NOTINTOLLLIST = $00000020;
+  LINETRANSLATERESULT_DIALBILLING = $00000040;
+  LINETRANSLATERESULT_DIALQUIET = $00000080;
+  LINETRANSLATERESULT_DIALDIALTONE = $00000100;
+  LINETRANSLATERESULT_DIALPROMPT = $00000200;
+  LINETRANSLATERESULT_VOICEDETECT = $00000400;       { TAPI v2.0 }
+
+  PHONEBUTTONFUNCTION_UNKNOWN = $00000000;
+  PHONEBUTTONFUNCTION_CONFERENCE = $00000001;
+  PHONEBUTTONFUNCTION_TRANSFER = $00000002;
+  PHONEBUTTONFUNCTION_DROP = $00000003;
+  PHONEBUTTONFUNCTION_HOLD = $00000004;
+  PHONEBUTTONFUNCTION_RECALL = $00000005;
+  PHONEBUTTONFUNCTION_DISCONNECT = $00000006;
+  PHONEBUTTONFUNCTION_CONNECT = $00000007;
+  PHONEBUTTONFUNCTION_MSGWAITON = $00000008;
+  PHONEBUTTONFUNCTION_MSGWAITOFF = $00000009;
+  PHONEBUTTONFUNCTION_SELECTRING = $0000000A;
+  PHONEBUTTONFUNCTION_ABBREVDIAL = $0000000B;
+  PHONEBUTTONFUNCTION_FORWARD = $0000000C;
+  PHONEBUTTONFUNCTION_PICKUP = $0000000D;
+  PHONEBUTTONFUNCTION_RINGAGAIN = $0000000E;
+  PHONEBUTTONFUNCTION_PARK = $0000000F;
+  PHONEBUTTONFUNCTION_REJECT = $00000010;
+  PHONEBUTTONFUNCTION_REDIRECT = $00000011;
+  PHONEBUTTONFUNCTION_MUTE = $00000012;
+  PHONEBUTTONFUNCTION_VOLUMEUP = $00000013;
+  PHONEBUTTONFUNCTION_VOLUMEDOWN = $00000014;
+  PHONEBUTTONFUNCTION_SPEAKERON = $00000015;
+  PHONEBUTTONFUNCTION_SPEAKEROFF = $00000016;
+  PHONEBUTTONFUNCTION_FLASH = $00000017;
+  PHONEBUTTONFUNCTION_DATAON = $00000018;
+  PHONEBUTTONFUNCTION_DATAOFF = $00000019;
+  PHONEBUTTONFUNCTION_DONOTDISTURB = $0000001A;
+  PHONEBUTTONFUNCTION_INTERCOM = $0000001B;
+  PHONEBUTTONFUNCTION_BRIDGEDAPP = $0000001C;
+  PHONEBUTTONFUNCTION_BUSY = $0000001D;
+  PHONEBUTTONFUNCTION_CALLAPP = $0000001E;
+  PHONEBUTTONFUNCTION_DATETIME = $0000001F;
+  PHONEBUTTONFUNCTION_DIRECTORY = $00000020;
+  PHONEBUTTONFUNCTION_COVER = $00000021;
+  PHONEBUTTONFUNCTION_CALLID = $00000022;
+  PHONEBUTTONFUNCTION_LASTNUM = $00000023;
+  PHONEBUTTONFUNCTION_NIGHTSRV = $00000024;
+  PHONEBUTTONFUNCTION_SENDCALLS = $00000025;
+  PHONEBUTTONFUNCTION_MSGINDICATOR = $00000026;
+  PHONEBUTTONFUNCTION_REPDIAL = $00000027;
+  PHONEBUTTONFUNCTION_SETREPDIAL = $00000028;
+  PHONEBUTTONFUNCTION_SYSTEMSPEED = $00000029;
+  PHONEBUTTONFUNCTION_STATIONSPEED = $0000002A;
+  PHONEBUTTONFUNCTION_CAMPON = $0000002B;
+  PHONEBUTTONFUNCTION_SAVEREPEAT = $0000002C;
+  PHONEBUTTONFUNCTION_QUEUECALL = $0000002D;
+  PHONEBUTTONFUNCTION_NONE = $0000002E;
+
+  PHONEBUTTONMODE_DUMMY = $00000001;
+  PHONEBUTTONMODE_CALL = $00000002;
+  PHONEBUTTONMODE_FEATURE = $00000004;
+  PHONEBUTTONMODE_KEYPAD = $00000008;
+  PHONEBUTTONMODE_LOCAL = $00000010;
+  PHONEBUTTONMODE_DISPLAY = $00000020;
+
+  PHONEBUTTONSTATE_UP = $00000001;
+  PHONEBUTTONSTATE_DOWN = $00000002;
+  PHONEBUTTONSTATE_UNKNOWN = $00000004;       { TAPI v1.4 }
+  PHONEBUTTONSTATE_UNAVAIL = $00000008;       { TAPI v1.4 }
+
+  PHONEERR_ALLOCATED = $90000001;
+  PHONEERR_BADDEVICEID = $90000002;
+  PHONEERR_INCOMPATIBLEAPIVERSION = $90000003;
+  PHONEERR_INCOMPATIBLEEXTVERSION = $90000004;
+  PHONEERR_INIFILECORRUPT = $90000005;
+  PHONEERR_INUSE = $90000006;
+  PHONEERR_INVALAPPHANDLE = $90000007;
+  PHONEERR_INVALAPPNAME = $90000008;
+  PHONEERR_INVALBUTTONLAMPID = $90000009;
+  PHONEERR_INVALBUTTONMODE = $9000000A;
+  PHONEERR_INVALBUTTONSTATE = $9000000B;
+  PHONEERR_INVALDATAID = $9000000C;
+  PHONEERR_INVALDEVICECLASS = $9000000D;
+  PHONEERR_INVALEXTVERSION = $9000000E;
+  PHONEERR_INVALHOOKSWITCHDEV = $9000000F;
+  PHONEERR_INVALHOOKSWITCHMODE = $90000010;
+  PHONEERR_INVALLAMPMODE = $90000011;
+  PHONEERR_INVALPARAM = $90000012;
+  PHONEERR_INVALPHONEHANDLE = $90000013;
+  PHONEERR_INVALPHONESTATE = $90000014;
+  PHONEERR_INVALPOINTER = $90000015;
+  PHONEERR_INVALPRIVILEGE = $90000016;
+  PHONEERR_INVALRINGMODE = $90000017;
+  PHONEERR_NODEVICE = $90000018;
+  PHONEERR_NODRIVER = $90000019;
+  PHONEERR_NOMEM = $9000001A;
+  PHONEERR_NOTOWNER = $9000001B;
+  PHONEERR_OPERATIONFAILED = $9000001C;
+  PHONEERR_OPERATIONUNAVAIL = $9000001D;
+  PHONEERR_RESOURCEUNAVAIL = $9000001F;
+  PHONEERR_REQUESTOVERRUN = $90000020;
+  PHONEERR_STRUCTURETOOSMALL = $90000021;
+  PHONEERR_UNINITIALIZED = $90000022;
+  PHONEERR_REINIT = $90000023;
+
+  PHONEFEATURE_GETBUTTONINFO = $00000001;       { TAPI v2.0 }
+  PHONEFEATURE_GETDATA = $00000002;       { TAPI v2.0 }
+  PHONEFEATURE_GETDISPLAY = $00000004;       { TAPI v2.0 }
+  PHONEFEATURE_GETGAINHANDSET = $00000008;       { TAPI v2.0 }
+  PHONEFEATURE_GETGAINSPEAKER = $00000010;       { TAPI v2.0 }
+  PHONEFEATURE_GETGAINHEADSET = $00000020;       { TAPI v2.0 }
+  PHONEFEATURE_GETHOOKSWITCHHANDSET = $00000040;       { TAPI v2.0 }
+  PHONEFEATURE_GETHOOKSWITCHSPEAKER = $00000080;       { TAPI v2.0 }
+  PHONEFEATURE_GETHOOKSWITCHHEADSET = $00000100;       { TAPI v2.0 }
+  PHONEFEATURE_GETLAMP = $00000200;       { TAPI v2.0 }
+  PHONEFEATURE_GETRING = $00000400;       { TAPI v2.0 }
+  PHONEFEATURE_GETVOLUMEHANDSET = $00000800;       { TAPI v2.0 }
+  PHONEFEATURE_GETVOLUMESPEAKER = $00001000;       { TAPI v2.0 }
+  PHONEFEATURE_GETVOLUMEHEADSET = $00002000;       { TAPI v2.0 }
+  PHONEFEATURE_SETBUTTONINFO = $00004000;       { TAPI v2.0 }
+  PHONEFEATURE_SETDATA = $00008000;       { TAPI v2.0 }
+  PHONEFEATURE_SETDISPLAY = $00010000;       { TAPI v2.0 }
+  PHONEFEATURE_SETGAINHANDSET = $00020000;       { TAPI v2.0 }
+  PHONEFEATURE_SETGAINSPEAKER = $00040000;       { TAPI v2.0 }
+  PHONEFEATURE_SETGAINHEADSET = $00080000;       { TAPI v2.0 }
+  PHONEFEATURE_SETHOOKSWITCHHANDSET = $00100000;       { TAPI v2.0 }
+  PHONEFEATURE_SETHOOKSWITCHSPEAKER = $00200000;       { TAPI v2.0 }
+  PHONEFEATURE_SETHOOKSWITCHHEADSET = $00400000;       { TAPI v2.0 }
+  PHONEFEATURE_SETLAMP = $00800000;       { TAPI v2.0 }
+  PHONEFEATURE_SETRING = $01000000;       { TAPI v2.0 }
+  PHONEFEATURE_SETVOLUMEHANDSET = $02000000;       { TAPI v2.0 }
+  PHONEFEATURE_SETVOLUMESPEAKER = $04000000;       { TAPI v2.0 }
+  PHONEFEATURE_SETVOLUMEHEADSET = $08000000;       { TAPI v2.0 }
+
+  PHONEHOOKSWITCHDEV_HANDSET = $00000001;
+  PHONEHOOKSWITCHDEV_SPEAKER = $00000002;
+  PHONEHOOKSWITCHDEV_HEADSET = $00000004;
+
+  PHONEHOOKSWITCHMODE_ONHOOK = $00000001;
+  PHONEHOOKSWITCHMODE_MIC = $00000002;
+  PHONEHOOKSWITCHMODE_SPEAKER = $00000004;
+  PHONEHOOKSWITCHMODE_MICSPEAKER = $00000008;
+  PHONEHOOKSWITCHMODE_UNKNOWN = $00000010;
+
+  PHONEINITIALIZEEXOPTION_USEHIDDENWINDOW = $00000001;       { TAPI v2.0 }
+  PHONEINITIALIZEEXOPTION_USEEVENT = $00000002;       { TAPI v2.0 }
+  PHONEINITIALIZEEXOPTION_USECOMPLETIONPORT = $00000003;       { TAPI v2.0 }
+
+  PHONELAMPMODE_DUMMY = $00000001;
+  PHONELAMPMODE_OFF = $00000002;
+  PHONELAMPMODE_STEADY = $00000004;
+  PHONELAMPMODE_WINK = $00000008;
+  PHONELAMPMODE_FLASH = $00000010;
+  PHONELAMPMODE_FLUTTER = $00000020;
+  PHONELAMPMODE_BROKENFLUTTER = $00000040;
+  PHONELAMPMODE_UNKNOWN = $00000080;
+
+  PHONEPRIVILEGE_MONITOR = $00000001;
+  PHONEPRIVILEGE_OWNER = $00000002;
+
+  PHONESTATE_OTHER = $00000001;
+  PHONESTATE_CONNECTED = $00000002;
+  PHONESTATE_DISCONNECTED = $00000004;
+  PHONESTATE_OWNER = $00000008;
+  PHONESTATE_MONITORS = $00000010;
+  PHONESTATE_DISPLAY = $00000020;
+  PHONESTATE_LAMP = $00000040;
+  PHONESTATE_RINGMODE = $00000080;
+  PHONESTATE_RINGVOLUME = $00000100;
+  PHONESTATE_HANDSETHOOKSWITCH = $00000200;
+  PHONESTATE_HANDSETVOLUME = $00000400;
+  PHONESTATE_HANDSETGAIN = $00000800;
+  PHONESTATE_SPEAKERHOOKSWITCH = $00001000;
+  PHONESTATE_SPEAKERVOLUME = $00002000;
+  PHONESTATE_SPEAKERGAIN = $00004000;
+  PHONESTATE_HEADSETHOOKSWITCH = $00008000;
+  PHONESTATE_HEADSETVOLUME = $00010000;
+  PHONESTATE_HEADSETGAIN = $00020000;
+  PHONESTATE_SUSPEND = $00040000;
+  PHONESTATE_RESUME = $00080000;
+  PHONESTATE_DEVSPECIFIC = $00100000;
+  PHONESTATE_REINIT = $00200000;
+  PHONESTATE_CAPSCHANGE = $00400000;       { TAPI v1.4 }
+  PHONESTATE_REMOVED = $00800000;       { TAPI v1.4 }
+
+  PHONESTATUSFLAGS_CONNECTED = $00000001;
+  PHONESTATUSFLAGS_SUSPENDED = $00000002;
+
+  STRINGFORMAT_ASCII = $00000001;
+  STRINGFORMAT_DBCS = $00000002;
+  STRINGFORMAT_UNICODE = $00000003;
+  STRINGFORMAT_BINARY = $00000004;
+
+  TAPI_REPLY = WM_USER + 99;
+
+  TAPIERR_CONNECTED = 0;
+  TAPIERR_DROPPED = -(1);
+  TAPIERR_NOREQUESTRECIPIENT = -(2);
+  TAPIERR_REQUESTQUEUEFULL = -(3);
+  TAPIERR_INVALDESTADDRESS = -(4);
+  TAPIERR_INVALWINDOWHANDLE = -(5);
+  TAPIERR_INVALDEVICECLASS = -(6);
+  TAPIERR_INVALDEVICEID = -(7);
+  TAPIERR_DEVICECLASSUNAVAIL = -(8);
+  TAPIERR_DEVICEIDUNAVAIL = -(9);
+  TAPIERR_DEVICEINUSE = -(10);
+  TAPIERR_DESTBUSY = -(11);
+  TAPIERR_DESTNOANSWER = -(12);
+  TAPIERR_DESTUNAVAIL = -(13);
+  TAPIERR_UNKNOWNWINHANDLE = -(14);
+  TAPIERR_UNKNOWNREQUESTID = -(15);
+  TAPIERR_REQUESTFAILED = -(16);
+  TAPIERR_REQUESTCANCELLED = -(17);
+  TAPIERR_INVALPOINTER = -(18);
+
+  TAPIMAXDESTADDRESSSIZE = 80;
+  TAPIMAXAPPNAMESIZE = 40;
+  TAPIMAXCALLEDPARTYSIZE = 40;
+  TAPIMAXCOMMENTSIZE = 80;
+  TAPIMAXDEVICECLASSSIZE = 40;
+  TAPIMAXDEVICEIDSIZE = 40;
+
+//*****************************************************************************
+// types
+//*****************************************************************************
+
+type
+
+  HCALL = HANDLE;
+  LPHCALL = ^HCALL;
+
+  HLINE = HANDLE;
+  LPHLINE = ^HLINE;
+
+  HPHONE = HANDLE;
+  LPHPHONE = ^HPHONE;
+
+  HLINEAPP = HANDLE;
+  LPHLINEAPP = ^HLINEAPP;
+
+  HPHONEAPP = HANDLE;
+  LPHPHONEAPP = ^HPHONEAPP;
+
+  LINECALLBACK = procedure (hDevice:DWORD; dwMessage:DWORD; dwInstance:DWORD; dwParam1:DWORD; dwParam2:DWORD;
+                 dwParam3:DWORD);
+
+  PHONECALLBACK = procedure (hDevice:DWORD; dwMessage:DWORD; dwInstance:DWORD; dwParam1:DWORD; dwParam2:DWORD;
+                  dwParam3:DWORD);
+
+  lineaddresscaps_tag = record
+       dwTotalSize : DWORD;
+       dwNeededSize : DWORD;
+       dwUsedSize : DWORD;
+       dwLineDeviceID : DWORD;
+       dwAddressSize : DWORD;
+       dwAddressOffset : DWORD;
+       dwDevSpecificSize : DWORD;
+       dwDevSpecificOffset : DWORD;
+       dwAddressSharing : DWORD;
+       dwAddressStates : DWORD;
+       dwCallInfoStates : DWORD;
+       dwCallerIDFlags : DWORD;
+       dwCalledIDFlags : DWORD;
+       dwConnectedIDFlags : DWORD;
+       dwRedirectionIDFlags : DWORD;
+       dwRedirectingIDFlags : DWORD;
+       dwCallStates : DWORD;
+       dwDialToneModes : DWORD;
+       dwBusyModes : DWORD;
+       dwSpecialInfo : DWORD;
+       dwDisconnectModes : DWORD;
+       dwMaxNumActiveCalls : DWORD;
+       dwMaxNumOnHoldCalls : DWORD;
+       dwMaxNumOnHoldPendingCalls : DWORD;
+       dwMaxNumConference : DWORD;
+       dwMaxNumTransConf : DWORD;
+       dwAddrCapFlags : DWORD;
+       dwCallFeatures : DWORD;
+       dwRemoveFromConfCaps : DWORD;
+       dwRemoveFromConfState : DWORD;
+       dwTransferModes : DWORD;
+       dwParkModes : DWORD;
+       dwForwardModes : DWORD;
+       dwMaxForwardEntries : DWORD;
+       dwMaxSpecificEntries : DWORD;
+       dwMinFwdNumRings : DWORD;
+       dwMaxFwdNumRings : DWORD;
+       dwMaxCallCompletions : DWORD;
+       dwCallCompletionConds : DWORD;
+       dwCallCompletionModes : DWORD;
+       dwNumCompletionMessages : DWORD;
+       dwCompletionMsgTextEntrySize : DWORD;
+       dwCompletionMsgTextSize : DWORD;
+       dwCompletionMsgTextOffset : DWORD;
+
+       dwAddressFeatures : DWORD; // TAPI v1.4
+
+       dwPredictiveAutoTransferStates : DWORD; // TAPI v2.0
+       dwNumCallTreatments : DWORD;            // TAPI v2.0
+       dwCallTreatmentListSize : DWORD;        // TAPI v2.0
+       dwCallTreatmentListOffset : DWORD;      // TAPI v2.0
+       dwDeviceClassesSize : DWORD;            // TAPI v2.0
+       dwDeviceClassesOffset : DWORD;          // TAPI v2.0
+       dwMaxCallDataSize : DWORD;              // TAPI v2.0
+       dwCallFeatures2 : DWORD;                // TAPI v2.0
+       dwMaxNoAnswerTimeout : DWORD;           // TAPI v2.0
+       dwConnectedModes : DWORD;               // TAPI v2.0
+       dwOfferingModes : DWORD;                // TAPI v2.0
+       dwAvailableMediaModes : DWORD;          // TAPI v2.0
+    end;
+  TLINEADDRESSCAPS = lineaddresscaps_tag;
+  LPLINEADDRESSCAPS = ^lineaddresscaps_tag;
+
+  lineaddressstatus_tag = record
+       dwTotalSize : DWORD;
+       dwNeededSize : DWORD;
+       dwUsedSize : DWORD;
+       dwNumInUse : DWORD;
+       dwNumActiveCalls : DWORD;
+       dwNumOnHoldCalls : DWORD;
+       dwNumOnHoldPendCalls : DWORD;
+       dwAddressFeatures : DWORD;
+       dwNumRingsNoAnswer : DWORD;
+       dwForwardNumEntries : DWORD;
+       dwForwardSize : DWORD;
+       dwForwardOffset : DWORD;
+       dwTerminalModesSize : DWORD;
+       dwTerminalModesOffset : DWORD;
+       dwDevSpecificSize : DWORD;
+       dwDevSpecificOffset : DWORD;
+    end;
+  TLINEADDRESSSTATUS = lineaddressstatus_tag;
+  LPLINEADDRESSSTATUS = ^lineaddressstatus_tag;
+
+  linedialparams_tag = record
+       dwDialPause : DWORD;
+       dwDialSpeed : DWORD;
+       dwDigitDuration : DWORD;
+       dwWaitForDialtone : DWORD;
+    end;
+  TLINEDIALPARAMS = linedialparams_tag;
+  LPLINEDIALPARAMS = ^linedialparams_tag;
+
+  linecallinfo_tag = record
+       dwTotalSize : DWORD;
+       dwNeededSize : DWORD;
+       dwUsedSize : DWORD;
+       hLine : HLINE;
+       dwLineDeviceID : DWORD;
+       dwAddressID : DWORD;
+       dwBearerMode : DWORD;
+       dwRate : DWORD;
+       dwMediaMode : DWORD;
+       dwAppSpecific : DWORD;
+       dwCallID : DWORD;
+       dwRelatedCallID : DWORD;
+       dwCallParamFlags : DWORD;
+       dwCallStates : DWORD;
+       dwMonitorDigitModes : DWORD;
+       dwMonitorMediaModes : DWORD;
+       DialParams : TLINEDIALPARAMS;
+       dwOrigin : DWORD;
+       dwReason : DWORD;
+       dwCompletionID : DWORD;
+       dwNumOwners : DWORD;
+       dwNumMonitors : DWORD;
+       dwCountryCode : DWORD;
+       dwTrunk : DWORD;
+       dwCallerIDFlags : DWORD;
+       dwCallerIDSize : DWORD;
+       dwCallerIDOffset : DWORD;
+       dwCallerIDNameSize : DWORD;
+       dwCallerIDNameOffset : DWORD;
+       dwCalledIDFlags : DWORD;
+       dwCalledIDSize : DWORD;
+       dwCalledIDOffset : DWORD;
+       dwCalledIDNameSize : DWORD;
+       dwCalledIDNameOffset : DWORD;
+       dwConnectedIDFlags : DWORD;
+       dwConnectedIDSize : DWORD;
+       dwConnectedIDOffset : DWORD;
+       dwConnectedIDNameSize : DWORD;
+       dwConnectedIDNameOffset : DWORD;
+       dwRedirectionIDFlags : DWORD;
+       dwRedirectionIDSize : DWORD;
+       dwRedirectionIDOffset : DWORD;
+       dwRedirectionIDNameSize : DWORD;
+       dwRedirectionIDNameOffset : DWORD;
+       dwRedirectingIDFlags : DWORD;
+       dwRedirectingIDSize : DWORD;
+       dwRedirectingIDOffset : DWORD;
+       dwRedirectingIDNameSize : DWORD;
+       dwRedirectingIDNameOffset : DWORD;
+       dwAppNameSize : DWORD;
+       dwAppNameOffset : DWORD;
+       dwDisplayableAddressSize : DWORD;
+       dwDisplayableAddressOffset : DWORD;
+       dwCalledPartySize : DWORD;
+       dwCalledPartyOffset : DWORD;
+       dwCommentSize : DWORD;
+       dwCommentOffset : DWORD;
+       dwDisplaySize : DWORD;
+       dwDisplayOffset : DWORD;
+       dwUserUserInfoSize : DWORD;
+       dwUserUserInfoOffset : DWORD;
+       dwHighLevelCompSize : DWORD;
+       dwHighLevelCompOffset : DWORD;
+       dwLowLevelCompSize : DWORD;
+       dwLowLevelCompOffset : DWORD;
+       dwChargingInfoSize : DWORD;
+       dwChargingInfoOffset : DWORD;
+       dwTerminalModesSize : DWORD;
+       dwTerminalModesOffset : DWORD;
+       dwDevSpecificSize : DWORD;
+       dwDevSpecificOffset : DWORD;
+       dwCallTreatment : DWORD;                // TAPI v2.0
+       dwCallDataSize : DWORD;                 // TAPI v2.0
+       dwCallDataOffset : DWORD;               // TAPI v2.0
+       dwSendingFlowspecSize : DWORD;          // TAPI v2.0
+       dwSendingFlowspecOffset : DWORD;        // TAPI v2.0
+       dwReceivingFlowspecSize : DWORD;        // TAPI v2.0
+       dwReceivingFlowspecOffset : DWORD;      // TAPI v2.0
+       dwAddressType : DWORD;                  // TAPI v3.0
+    end;
+  TLINECALLINFO = linecallinfo_tag;
+  LPLINECALLINFO = ^linecallinfo_tag;
+
+  linecalllist_tag = record
+       dwTotalSize : DWORD;
+       dwNeededSize : DWORD;
+       dwUsedSize : DWORD;
+       dwCallsNumEntries : DWORD;
+       dwCallsSize : DWORD;
+       dwCallsOffset : DWORD;
+    end;
+  TLINECALLLIST = linecalllist_tag;
+  LPLINECALLLIST = ^linecalllist_tag;
+
+  linecallparams_tag = record                 // Defaults:
+       dwTotalSize : DWORD;
+       dwBearerMode : DWORD;                  // voice
+       dwMinRate : DWORD;                     // (3.1kHz)
+       dwMaxRate : DWORD;                     // (3.1kHz)
+       dwMediaMode : DWORD;                   // interactiveVoice
+       dwCallParamFlags : DWORD;              // 0
+       dwAddressMode : DWORD;
+       dwAddressID : DWORD;                   // (any available)
+       DialParams : TLINEDIALPARAMS;           // (0, 0, 0, 0)
+       dwOrigAddressSize : DWORD;             // 0
+       dwOrigAddressOffset : DWORD;
+       dwDisplayableAddressSize : DWORD;
+       dwDisplayableAddressOffset : DWORD;
+       dwCalledPartySize : DWORD;             // 0
+       dwCalledPartyOffset : DWORD;
+       dwCommentSize : DWORD;                 // 0
+       dwCommentOffset : DWORD;
+       dwUserUserInfoSize : DWORD;            // 0
+       dwUserUserInfoOffset : DWORD;
+       dwHighLevelCompSize : DWORD;           // 0
+       dwHighLevelCompOffset : DWORD;
+       dwLowLevelCompSize : DWORD;            // 0
+       dwLowLevelCompOffset : DWORD;
+       dwDevSpecificSize : DWORD;             // 0
+       dwDevSpecificOffset : DWORD;
+       dwPredictiveAutoTransferStates : DWORD;      // TAPI v2.0
+       dwTargetAddressSize : DWORD;                 // TAPI v2.0
+       dwTargetAddressOffset : DWORD;               // TAPI v2.0
+       dwSendingFlowspecSize : DWORD;               // TAPI v2.0
+       dwSendingFlowspecOffset : DWORD;             // TAPI v2.0
+       dwReceivingFlowspecSize : DWORD;             // TAPI v2.0
+       dwReceivingFlowspecOffset : DWORD;           // TAPI v2.0
+       dwDeviceClassSize : DWORD;                   // TAPI v2.0
+       dwDeviceClassOffset : DWORD;                 // TAPI v2.0
+       dwDeviceConfigSize : DWORD;                  // TAPI v2.0
+       dwDeviceConfigOffset : DWORD;                // TAPI v2.0
+       dwCallDataSize : DWORD;                      // TAPI v2.0
+       dwCallDataOffset : DWORD;                    // TAPI v2.0
+       dwNoAnswerTimeout : DWORD;                   // TAPI v2.0
+       dwCallingPartyIDSize : DWORD;                // TAPI v2.0
+       dwCallingPartyIDOffset : DWORD;              // TAPI v2.0
+       dwAddressType : DWORD;                       // TAPI v3.0
+    end;
+  TLINECALLPARAMS = linecallparams_tag;
+  LPLINECALLPARAMS = ^linecallparams_tag;
+
+  linecallstatus_tag = record
+       dwTotalSize : DWORD;
+       dwNeededSize : DWORD;
+       dwUsedSize : DWORD;
+       dwCallState : DWORD;
+       dwCallStateMode : DWORD;
+       dwCallPrivilege : DWORD;
+       dwCallFeatures : DWORD;
+       dwDevSpecificSize : DWORD;
+       dwDevSpecificOffset : DWORD;
+
+       dwCallFeatures2 : DWORD;                    // TAPI v2.0
+       tStateEntryTime : SYSTEMTIME;               // TAPI v2.0
+    end;
+  TLINECALLSTATUS = linecallstatus_tag;
+  LPLINECALLSTATUS = ^linecallstatus_tag;
+
+  linecalltreatmententry_tag = record
+       dwCallTreatmentID : DWORD;                  // TAPI v2.0
+       dwCallTreatmentNameSize : DWORD;            // TAPI v2.0
+       dwCallTreatmentNameOffset : DWORD;          // TAPI v2.0
+    end;
+  TLINECALLTREATMENTENTRY = linecalltreatmententry_tag;
+  LPLINECALLTREATMENTENTRY = ^linecalltreatmententry_tag;
+
+  linecardentry_tag = record
+       dwPermanentCardID : DWORD;
+       dwCardNameSize : DWORD;
+       dwCardNameOffset : DWORD;
+       dwCardNumberDigits : DWORD;                // TAPI v1.4
+       dwSameAreaRuleSize : DWORD;                // TAPI v1.4
+       dwSameAreaRuleOffset : DWORD;              // TAPI v1.4
+       dwLongDistanceRuleSize : DWORD;            // TAPI v1.4
+       dwLongDistanceRuleOffset : DWORD;          // TAPI v1.4
+       dwInternationalRuleSize : DWORD;           // TAPI v1.4
+       dwInternationalRuleOffset : DWORD;         // TAPI v1.4
+       dwOptions : DWORD;                         // TAPI v1.4
+    end;
+  TLINECARDENTRY = linecardentry_tag;
+  LPLINECARDENTRY = ^linecardentry_tag;
+
+  linecountryentry_tag = record                   // TAPI v1.4
+       dwCountryID : DWORD;                       // TAPI v1.4
+       dwCountryCode : DWORD;                     // TAPI v1.4
+       dwNextCountryID : DWORD;                   // TAPI v1.4
+       dwCountryNameSize : DWORD;                 // TAPI v1.4
+       dwCountryNameOffset : DWORD;               // TAPI v1.4
+       dwSameAreaRuleSize : DWORD;                // TAPI v1.4
+       dwSameAreaRuleOffset : DWORD;              // TAPI v1.4
+       dwLongDistanceRuleSize : DWORD;            // TAPI v1.4
+       dwLongDistanceRuleOffset : DWORD;          // TAPI v1.4
+       dwInternationalRuleSize : DWORD;           // TAPI v1.4
+       dwInternationalRuleOffset : DWORD;         // TAPI v1.4
+    end;
+  TLINECOUNTRYENTRY = linecountryentry_tag;
+  LPLINECOUNTRYENTRY = ^linecountryentry_tag;
+
+  linecountrylist_tag = record
+       dwTotalSize : DWORD;                       // TAPI v1.4
+       dwNeededSize : DWORD;                      // TAPI v1.4
+       dwUsedSize : DWORD;                        // TAPI v1.4
+       dwNumCountries : DWORD;                    // TAPI v1.4
+       dwCountryListSize : DWORD;                 // TAPI v1.4
+       dwCountryListOffset : DWORD;               // TAPI v1.4
+    end;
+  TLINECOUNTRYLIST = linecountrylist_tag;
+  LPLINECOUNTRYLIST = ^linecountrylist_tag;
+
+  linedevcaps_tag = record
+       dwTotalSize : DWORD;
+       dwNeededSize : DWORD;
+       dwUsedSize : DWORD;
+       dwProviderInfoSize : DWORD;
+       dwProviderInfoOffset : DWORD;
+       dwSwitchInfoSize : DWORD;
+       dwSwitchInfoOffset : DWORD;
+       dwPermanentLineID : DWORD;
+       dwLineNameSize : DWORD;
+       dwLineNameOffset : DWORD;
+       dwStringFormat : DWORD;
+       dwAddressModes : DWORD;
+       dwNumAddresses : DWORD;
+       dwBearerModes : DWORD;
+       dwMaxRate : DWORD;
+       dwMediaModes : DWORD;
+       dwGenerateToneModes : DWORD;
+       dwGenerateToneMaxNumFreq : DWORD;
+       dwGenerateDigitModes : DWORD;
+       dwMonitorToneMaxNumFreq : DWORD;
+       dwMonitorToneMaxNumEntries : DWORD;
+       dwMonitorDigitModes : DWORD;
+       dwGatherDigitsMinTimeout : DWORD;
+       dwGatherDigitsMaxTimeout : DWORD;
+       dwMedCtlDigitMaxListSize : DWORD;
+       dwMedCtlMediaMaxListSize : DWORD;
+       dwMedCtlToneMaxListSize : DWORD;
+       dwMedCtlCallStateMaxListSize : DWORD;
+       dwDevCapFlags : DWORD;
+       dwMaxNumActiveCalls : DWORD;
+       dwAnswerMode : DWORD;
+       dwRingModes : DWORD;
+       dwLineStates : DWORD;
+       dwUUIAcceptSize : DWORD;
+       dwUUIAnswerSize : DWORD;
+       dwUUIMakeCallSize : DWORD;
+       dwUUIDropSize : DWORD;
+       dwUUISendUserUserInfoSize : DWORD;
+       dwUUICallInfoSize : DWORD;
+       MinDialParams : TLINEDIALPARAMS;
+       MaxDialParams : TLINEDIALPARAMS;
+       DefaultDialParams : TLINEDIALPARAMS;
+       dwNumTerminals : DWORD;
+       dwTerminalCapsSize : DWORD;
+       dwTerminalCapsOffset : DWORD;
+       dwTerminalTextEntrySize : DWORD;
+       dwTerminalTextSize : DWORD;
+       dwTerminalTextOffset : DWORD;
+       dwDevSpecificSize : DWORD;
+       dwDevSpecificOffset : DWORD;
+
+       dwLineFeatures : DWORD;                    // TAPI v1.4
+
+       dwSettableDevStatus : DWORD;               // TAPI v2.0
+       dwDeviceClassesSize : DWORD;               // TAPI v2.0
+       dwDeviceClassesOffset : DWORD;             // TAPI v2.0
+       PermanentLineGuid : GUID;                  // TAPI v2.2
+       dwAddressTypes : DWORD;                    // TAPI v3.0
+       ProtocolGuid : GUID;                       // TAPI v3.0
+       dwAvailableTracking : DWORD;               // TAPI v3.0
+    end;
+  TLINEDEVCAPS = linedevcaps_tag;
+  LPLINEDEVCAPS = ^linedevcaps_tag;
+
+  linedevstatus_tag = record
+       dwTotalSize : DWORD;
+       dwNeededSize : DWORD;
+       dwUsedSize : DWORD;
+       dwNumOpens : DWORD;
+       dwOpenMediaModes : DWORD;
+       dwNumActiveCalls : DWORD;
+       dwNumOnHoldCalls : DWORD;
+       dwNumOnHoldPendCalls : DWORD;
+       dwLineFeatures : DWORD;
+       dwNumCallCompletions : DWORD;
+       dwRingMode : DWORD;
+       dwSignalLevel : DWORD;
+       dwBatteryLevel : DWORD;
+       dwRoamMode : DWORD;
+       dwDevStatusFlags : DWORD;
+       dwTerminalModesSize : DWORD;
+       dwTerminalModesOffset : DWORD;
+       dwDevSpecificSize : DWORD;
+       dwDevSpecificOffset : DWORD;
+
+       dwAvailableMediaModes : DWORD;             // TAPI v2.0
+       dwAppInfoSize : DWORD;                     // TAPI v2.0
+       dwAppInfoOffset : DWORD;                   // TAPI v2.0
+    end;
+  LINEDEVSTATUS = linedevstatus_tag;
+  LPLINEDEVSTATUS = ^linedevstatus_tag;
+
+  lineextensionid_tag = record
+       dwExtensionID0 : DWORD;
+       dwExtensionID1 : DWORD;
+       dwExtensionID2 : DWORD;
+       dwExtensionID3 : DWORD;
+    end;
+  TLINEEXTENSIONID = lineextensionid_tag;
+  LPLINEEXTENSIONID = ^lineextensionid_tag;
+
+  lineforward_tag = record
+       dwForwardMode : DWORD;
+       dwCallerAddressSize : DWORD;
+       dwCallerAddressOffset : DWORD;
+       dwDestCountryCode : DWORD;
+       dwDestAddressSize : DWORD;
+       dwDestAddressOffset : DWORD;
+    end;
+  TLINEFORWARD = lineforward_tag;
+  LPLINEFORWARD = ^lineforward_tag;
+
+  lineforwardlist_tag = record
+       dwTotalSize : DWORD;
+       dwNumEntries : DWORD;
+       ForwardList : array[0..0] of TLINEFORWARD;
+    end;
+  TLINEFORWARDLIST = lineforwardlist_tag;
+  LPLINEFORWARDLIST = ^lineforwardlist_tag;
+
+  linegeneratetone_tag = record
+       dwFrequency : DWORD;
+       dwCadenceOn : DWORD;
+       dwCadenceOff : DWORD;
+       dwVolume : DWORD;
+    end;
+  TLINEGENERATETONE = linegeneratetone_tag;
+  LPLINEGENERATETONE = ^linegeneratetone_tag;
+
+  lineinitializeexparams_tag = record
+       dwTotalSize : DWORD;                       // TAPI v2.0
+       dwNeededSize : DWORD;                      // TAPI v2.0
+       dwUsedSize : DWORD;                        // TAPI v2.0
+       dwOptions : DWORD;                         // TAPI v2.0
+
+       Handles : record
+           case longint of
+              0 : ( hEvent : HANDLE );            // TAPI v2.0
+              1 : ( hCompletionPort : HANDLE );   // TAPI v2.0
+           end;
+       dwCompletionKey : DWORD;                   // TAPI v2.0
+    end;
+  TLINEINITIALIZEEXPARAMS = lineinitializeexparams_tag;
+  LPLINEINITIALIZEEXPARAMS = ^lineinitializeexparams_tag;
+
+  linelocationentry_tag = record
+       dwPermanentLocationID : DWORD;
+       dwLocationNameSize : DWORD;
+       dwLocationNameOffset : DWORD;
+       dwCountryCode : DWORD;
+       dwCityCodeSize : DWORD;
+       dwCityCodeOffset : DWORD;
+       dwPreferredCardID : DWORD;
+
+       dwLocalAccessCodeSize : DWORD;             // TAPI v1.4
+       dwLocalAccessCodeOffset : DWORD;           // TAPI v1.4
+       dwLongDistanceAccessCodeSize : DWORD;      // TAPI v1.4
+       dwLongDistanceAccessCodeOffset : DWORD;    // TAPI v1.4
+       dwTollPrefixListSize : DWORD;              // TAPI v1.4
+       dwTollPrefixListOffset : DWORD;            // TAPI v1.4
+       dwCountryID : DWORD;                       // TAPI v1.4
+       dwOptions : DWORD;                         // TAPI v1.4
+       dwCancelCallWaitingSize : DWORD;           // TAPI v1.4
+       dwCancelCallWaitingOffset : DWORD;         // TAPI v1.4
+    end;
+  TLINELOCATIONENTRY = linelocationentry_tag;
+  LPLINELOCATIONENTRY = ^linelocationentry_tag;
+
+  linemediacontrolcallstate_tag = record
+       dwCallStates : DWORD;
+       dwMediaControl : DWORD;
+    end;
+  TLINEMEDIACONTROLCALLSTATE = linemediacontrolcallstate_tag;
+  LPLINEMEDIACONTROLCALLSTATE = ^linemediacontrolcallstate_tag;
+
+  linemediacontroldigit_tag = record
+       dwDigit : DWORD;
+       dwDigitModes : DWORD;
+       dwMediaControl : DWORD;
+    end;
+  TLINEMEDIACONTROLDIGIT = linemediacontroldigit_tag;
+  LPLINEMEDIACONTROLDIGIT = ^linemediacontroldigit_tag;
+
+  linemediacontrolmedia_tag = record
+       dwMediaModes : DWORD;
+       dwDuration : DWORD;
+       dwMediaControl : DWORD;
+    end;
+  TLINEMEDIACONTROLMEDIA = linemediacontrolmedia_tag;
+  LPLINEMEDIACONTROLMEDIA = ^linemediacontrolmedia_tag;
+
+  linemediacontroltone_tag = record
+       dwAppSpecific : DWORD;
+       dwDuration : DWORD;
+       dwFrequency1 : DWORD;
+       dwFrequency2 : DWORD;
+       dwFrequency3 : DWORD;
+       dwMediaControl : DWORD;
+    end;
+  TLINEMEDIACONTROLTONE = linemediacontroltone_tag;
+  LPLINEMEDIACONTROLTONE = ^linemediacontroltone_tag;
+
+  linemessage_tag = record
+       hDevice : DWORD;                           // TAPI v2.0
+       dwMessageID : DWORD;                       // TAPI v2.0
+       dwCallbackInstance : DWORD;                // TAPI v2.0
+       dwParam1 : DWORD;                          // TAPI v2.0
+       dwParam2 : DWORD;                          // TAPI v2.0
+       dwParam3 : DWORD;                          // TAPI v2.0
+    end;
+  TLINEMESSAGE = linemessage_tag;
+  LPLINEMESSAGE = ^linemessage_tag;
+
+  linemonitortone_tag = record
+       dwAppSpecific : DWORD;
+       dwDuration : DWORD;
+       dwFrequency1 : DWORD;
+       dwFrequency2 : DWORD;
+       dwFrequency3 : DWORD;
+    end;
+  TLINEMONITORTONE = linemonitortone_tag;
+  LPLINEMONITORTONE = ^linemonitortone_tag;
+
+  lineproviderentry_tag = record
+       dwPermanentProviderID : DWORD;             // TAPI v1.4
+       dwProviderFilenameSize : DWORD;            // TAPI v1.4
+       dwProviderFilenameOffset : DWORD;          // TAPI v1.4
+    end;
+  TLINEPROVIDERENTRY = lineproviderentry_tag;
+  LPLINEPROVIDERENTRY = ^lineproviderentry_tag;
+
+  lineproviderlist_tag = record
+       dwTotalSize : DWORD;                       // TAPI v1.4
+       dwNeededSize : DWORD;                      // TAPI v1.4
+       dwUsedSize : DWORD;                        // TAPI v1.4
+       dwNumProviders : DWORD;                    // TAPI v1.4
+       dwProviderListSize : DWORD;                // TAPI v1.4
+       dwProviderListOffset : DWORD;              // TAPI v1.4
+    end;
+  TLINEPROVIDERLIST = lineproviderlist_tag;
+  LPLINEPROVIDERLIST = ^lineproviderlist_tag;
+
+  linetermcaps_tag = record
+       dwTermDev : DWORD;
+       dwTermModes : DWORD;
+       dwTermSharing : DWORD;
+    end;
+  TLINETERMCAPS = linetermcaps_tag;
+  LPLINETERMCAPS = ^linetermcaps_tag;
+
+  linetranslatecaps_tag = record
+       dwTotalSize : DWORD;
+       dwNeededSize : DWORD;
+       dwUsedSize : DWORD;
+       dwNumLocations : DWORD;
+       dwLocationListSize : DWORD;
+       dwLocationListOffset : DWORD;
+       dwCurrentLocationID : DWORD;
+       dwNumCards : DWORD;
+       dwCardListSize : DWORD;
+       dwCardListOffset : DWORD;
+       dwCurrentPreferredCardID : DWORD;
+    end;
+  TLINETRANSLATECAPS = linetranslatecaps_tag;
+  LPLINETRANSLATECAPS = ^linetranslatecaps_tag;
+
+  linetranslateoutput_tag = record
+       dwTotalSize : DWORD;
+       dwNeededSize : DWORD;
+       dwUsedSize : DWORD;
+       dwDialableStringSize : DWORD;
+       dwDialableStringOffset : DWORD;
+       dwDisplayableStringSize : DWORD;
+       dwDisplayableStringOffset : DWORD;
+       dwCurrentCountry : DWORD;
+       dwDestCountry : DWORD;
+       dwTranslateResults : DWORD;
+    end;
+  TLINETRANSLATEOUTPUT = linetranslateoutput_tag;
+  LPLINETRANSLATEOUTPUT = ^linetranslateoutput_tag;
+
+  phonebuttoninfo_tag = record
+       dwTotalSize : DWORD;
+       dwNeededSize : DWORD;
+       dwUsedSize : DWORD;
+       dwButtonMode : DWORD;
+       dwButtonFunction : DWORD;
+       dwButtonTextSize : DWORD;
+       dwButtonTextOffset : DWORD;
+       dwDevSpecificSize : DWORD;
+       dwDevSpecificOffset : DWORD;
+
+       dwButtonState : DWORD;                     // TAPI v1.4
+    end;
+  TPHONEBUTTONINFO = phonebuttoninfo_tag;
+  LPPHONEBUTTONINFO = ^phonebuttoninfo_tag;
+
+  phonecaps_tag = record
+       dwTotalSize : DWORD;
+       dwNeededSize : DWORD;
+       dwUsedSize : DWORD;
+       dwProviderInfoSize : DWORD;
+       dwProviderInfoOffset : DWORD;
+       dwPhoneInfoSize : DWORD;
+       dwPhoneInfoOffset : DWORD;
+       dwPermanentPhoneID : DWORD;
+       dwPhoneNameSize : DWORD;
+       dwPhoneNameOffset : DWORD;
+       dwStringFormat : DWORD;
+       dwPhoneStates : DWORD;
+       dwHookSwitchDevs : DWORD;
+       dwHandsetHookSwitchModes : DWORD;
+       dwSpeakerHookSwitchModes : DWORD;
+       dwHeadsetHookSwitchModes : DWORD;
+       dwVolumeFlags : DWORD;
+       dwGainFlags : DWORD;
+       dwDisplayNumRows : DWORD;
+       dwDisplayNumColumns : DWORD;
+       dwNumRingModes : DWORD;
+       dwNumButtonLamps : DWORD;
+       dwButtonModesSize : DWORD;
+       dwButtonModesOffset : DWORD;
+       dwButtonFunctionsSize : DWORD;
+       dwButtonFunctionsOffset : DWORD;
+       dwLampModesSize : DWORD;
+       dwLampModesOffset : DWORD;
+       dwNumSetData : DWORD;
+       dwSetDataSize : DWORD;
+       dwSetDataOffset : DWORD;
+       dwNumGetData : DWORD;
+       dwGetDataSize : DWORD;
+       dwGetDataOffset : DWORD;
+       dwDevSpecificSize : DWORD;
+       dwDevSpecificOffset : DWORD;
+       dwDeviceClassesSize : DWORD;               // TAPI v2.0
+       dwDeviceClassesOffset : DWORD;             // TAPI v2.0
+       dwPhoneFeatures : DWORD;                   // TAPI v2.0
+       dwSettableHandsetHookSwitchModes : DWORD;  // TAPI v2.0
+       dwSettableSpeakerHookSwitchModes : DWORD;  // TAPI v2.0
+       dwSettableHeadsetHookSwitchModes : DWORD;  // TAPI v2.0
+       dwMonitoredHandsetHookSwitchModes : DWORD; // TAPI v2.0
+       dwMonitoredSpeakerHookSwitchModes : DWORD; // TAPI v2.0
+       dwMonitoredHeadsetHookSwitchModes : DWORD; // TAPI v2.0
+       PermanentPhoneGuid : GUID;                 // TAPI v2.2
+    end;
+  TPHONECAPS = phonecaps_tag;
+  LPPHONECAPS = ^phonecaps_tag;
+
+  phoneextensionid_tag = record
+       dwExtensionID0 : DWORD;
+       dwExtensionID1 : DWORD;
+       dwExtensionID2 : DWORD;
+       dwExtensionID3 : DWORD;
+    end;
+  TPHONEEXTENSIONID = phoneextensionid_tag;
+  LPPHONEEXTENSIONID = ^phoneextensionid_tag;
+
+  phoneinitializeexparams_tag = record
+       dwTotalSize : DWORD;                       // TAPI v2.0
+       dwNeededSize : DWORD;                      // TAPI v2.0
+       dwUsedSize : DWORD;                        // TAPI v2.0
+       dwOptions : DWORD;                         // TAPI v2.0
+
+       Handles : record
+           case longint of
+              0 : ( hEvent : HANDLE );            // TAPI v2.0
+              1 : ( hCompletionPort : HANDLE );   // TAPI v2.0
+           end;
+
+       dwCompletionKey : DWORD;                   // TAPI v2.0
+    end;
+  TPHONEINITIALIZEEXPARAMS = phoneinitializeexparams_tag;
+  LPPHONEINITIALIZEEXPARAMS = ^phoneinitializeexparams_tag;
+
+  phonemessage_tag = record
+       hDevice : DWORD;                           // TAPI v2.0
+       dwMessageID : DWORD;                       // TAPI v2.0
+       dwCallbackInstance : DWORD;                // TAPI v2.0
+       dwParam1 : DWORD;                          // TAPI v2.0
+       dwParam2 : DWORD;                          // TAPI v2.0
+       dwParam3 : DWORD;                          // TAPI v2.0
+    end;
+  TPHONEMESSAGE = phonemessage_tag;
+  LPPHONEMESSAGE = ^phonemessage_tag;
+
+  phonestatus_tag = record
+       dwTotalSize : DWORD;
+       dwNeededSize : DWORD;
+       dwUsedSize : DWORD;
+       dwStatusFlags : DWORD;
+       dwNumOwners : DWORD;
+       dwNumMonitors : DWORD;
+       dwRingMode : DWORD;
+       dwRingVolume : DWORD;
+       dwHandsetHookSwitchMode : DWORD;
+       dwHandsetVolume : DWORD;
+       dwHandsetGain : DWORD;
+       dwSpeakerHookSwitchMode : DWORD;
+       dwSpeakerVolume : DWORD;
+       dwSpeakerGain : DWORD;
+       dwHeadsetHookSwitchMode : DWORD;
+       dwHeadsetVolume : DWORD;
+       dwHeadsetGain : DWORD;
+       dwDisplaySize : DWORD;
+       dwDisplayOffset : DWORD;
+       dwLampModesSize : DWORD;
+       dwLampModesOffset : DWORD;
+       dwOwnerNameSize : DWORD;
+       dwOwnerNameOffset : DWORD;
+       dwDevSpecificSize : DWORD;
+       dwDevSpecificOffset : DWORD;
+
+       dwPhoneFeatures : DWORD;                   // TAPI v2.0
+    end;
+  TPHONESTATUS = phonestatus_tag;
+  LPPHONESTATUS = ^phonestatus_tag;
+
+  varstring_tag = record
+       dwTotalSize : DWORD;
+       dwNeededSize : DWORD;
+       dwUsedSize : DWORD;
+       dwStringFormat : DWORD;
+       dwStringSize : DWORD;
+       dwStringOffset : DWORD;
+    end;
+  TVARSTRING = varstring_tag;
+  LPVARSTRING = ^varstring_tag;
+
+//*****************************************************************************
+// functions
+//*****************************************************************************
+
+function lineAccept(hCall:HCALL; lpsUserUserInfo:LPCSTR; dwSize:DWORD):LONG;external KernelDLL name 'lineAccept';
+function lineAddProvider(lpszProviderFilename:LPCWSTR; hwndOwner:HWND;
+ lpdwPermanentProviderID:LPDWORD):LONG;external KernelDLL name 'lineAddProvider';
+function lineAddToConference(hConfCall:HCALL; hConsultCall:HCALL):LONG;external KernelDLL name 'lineAddToConference';
+function lineAnswer(hCall:HCALL; lpsUserUserInfo:LPCSTR; dwSize:DWORD):LONG;external KernelDLL name 'lineAnswer';
+function lineBlindTransfer(hCall:HCALL; lpszDestAddressW:LPCWSTR;
+ dwCountryCode:DWORD):LONG;external KernelDLL name 'lineBlindTransfer';
+function lineClose(hLine:HLINE):LONG;external KernelDLL name 'lineClose';
+function lineCompleteTransfer(hCall:HCALL; hConsultCall:HCALL; lphConfCall:LPHCALL;
+ dwTransferMode:DWORD):LONG;external KernelDLL name 'lineCompleteTransfer';
+function lineConfigDialogEdit(dwDeviceID:DWORD; hwndOwner:HWND; lpszDeviceClass:LPCWSTR; lpDeviceConfigIn:LPVOID;
+ dwSize:DWORD; lpDeviceConfigOut:LPVARSTRING):LONG;external KernelDLL name 'lineConfigDialogEdit';
+function lineDeallocateCall(hCall:HCALL):LONG;external KernelDLL name 'lineDeallocateCall';
+function lineDevSpecific(hLine:HLINE; dwAddressID:DWORD; hCall:HCALL; lpParams:LPVOID;
+ dwSize:DWORD):LONG;external KernelDLL name 'lineDevSpecific';
+function lineDial(hCall:HCALL; lpszDestAddress:LPCWSTR; dwCountryCode:DWORD):LONG;external KernelDLL name 'lineDial';
+function lineDrop(hCall:HCALL; lpsUserUserInfo:LPCSTR; dwSize:DWORD):LONG;external KernelDLL name 'lineDrop';
+function lineForward(hLine:HLINE; bAllAddresses:DWORD; dwAddressID:DWORD; lpForwardList:LPLINEFORWARDLIST;
+ dwNumRingsNoAnswer:DWORD; lphConsultCall:LPHCALL; lpCallParams:LPLINECALLPARAMS):LONG;external KernelDLL name 'lineForward';
+function lineGenerateDigits(hCall:HCALL; dwDigitMode:DWORD; lpszDigits:LPCWSTR;  dwDuration:DWORD):LONG;
+ external KernelDLL name 'lineGenerateDigits';
+function lineGenerateTone(hCall:HCALL; dwToneMode:DWORD; dwDuration:DWORD; dwNumTones:DWORD; lpTones:LPLINEGENERATETONE):LONG;
+ external KernelDLL name 'lineGenerateTone';
+function lineGetAddressCaps(hLineApp:HLINEAPP; dwDeviceID:DWORD; dwAddressID:DWORD; dwAPIVersion:DWORD;
+ dwExtVersion:DWORD; lpAddressCaps:LPLINEADDRESSCAPS):LONG;external KernelDLL name 'lineGetAddressCaps';
+function lineGetAddressID(hLine:HLINE; lpdwAddressID:LPDWORD; dwAddressMode:DWORD; lpsAddress:LPCWSTR;
+ dwSize:DWORD):LONG;external KernelDLL name 'lineGetAddressID';
+function tAddressStatus(hLine:HLINE; dwAddressID:DWORD;  lpAddressStatus:LPLINEADDRESSSTATUS):LONG;
+ external KernelDLL name 'lineGetAddressStatus';
+function lineGetAppPriority(lpszAppFilename:LPCWSTR; dwMediaMode:DWORD; lpExtensionID:LPLINEEXTENSIONID;
+ dwRequestMode:DWORD; lpExtensionName:LPVARSTRING; lpdwPriority:LPDWORD):LONG;external KernelDLL name 'lineGetAppPriority'; { TAPI v1.4 }
+function lineGetCallInfo(hCall:HCALL; lpCallInfo:LPLINECALLINFO):LONG;external KernelDLL name 'lineGetCallInfo';
+function lineGetCallStatus(hCall:HCALL; lpCallStatus:LPLINECALLSTATUS):LONG;external KernelDLL name 'lineGetCallStatus';
+function lineGetConfRelatedCalls(hCall:HCALL; lpCallList:LPLINECALLLIST):LONG;external KernelDLL name 'lineGetConfRelatedCalls';
+function lineGetDevCaps(hLineApp:HLINEAPP; dwDeviceID:DWORD; dwAPIVersion:DWORD; dwExtVersion:DWORD;
+ lpLineDevCaps:LPLINEDEVCAPS):LONG;external KernelDLL name 'lineGetDevCaps';
+function lineGetDevConfig(dwDeviceID:DWORD; lpDeviceConfig:LPVARSTRING; lpszDeviceClass:LPCWSTR):LONG;
+ external KernelDLL name 'lineGetDevConfig';
+function lineGetNewCalls(hLine:HLINE; dwAddressID:DWORD; dwSelect:DWORD; lpCallList:LPLINECALLLIST):LONG;
+ external KernelDLL name 'lineGetNewCalls';
+function lineGetIcon(dwDeviceID:DWORD; lpszDeviceClass:LPCWSTR; lphIcon:LPHICON):LONG;external KernelDLL name 'lineGetIcon';
+function lineGetID(hLine:HLINE; dwAddressID:DWORD; hCall:HCALL; dwSelect:DWORD; lpDeviceID:LPVARSTRING;
+               lpszDeviceClass:LPCWSTR):LONG;external KernelDLL name 'lineGetID';
+function lineGetLineDevStatus(hLine:HLINE; lpLineDevStatus:LPLINEDEVSTATUS):LONG;external KernelDLL name 'lineGetLineDevStatus';
+function lineGetMessage(hLineApp:HLINEAPP; lpMessage:LPLINEMESSAGE; dwTimeout:DWORD):LONG;external KernelDLL name 'lineGetMessage';
+function lineGetNumRings(hLine:HLINE; dwAddressID:DWORD; lpdwNumRings:LPDWORD):LONG;external KernelDLL name 'lineGetNumRings';
+function lineGetProviderList(dwAPIVersion:DWORD; lpProviderList:LPLINEPROVIDERLIST):LONG;
+ external KernelDLL name 'lineGetProviderList'; { TAPI v1.4 }
+function lineGetStatusMessages(hLine:HLINE; lpdwLineStates:LPDWORD; lpdwAddressStates:LPDWORD):LONG;
+ external KernelDLL name 'lineGetStatusMessages';
+function lineGetTranslateCaps(hLineApp:HLINEAPP; dwAPIVersion:DWORD; lpTranslateCaps:LPLINETRANSLATECAPS):LONG;
+ external KernelDLL name 'lineGetTranslateCaps';
+function lineHandoff(hCall:HCALL; lpszFileName:LPCWSTR; dwMediaMode:DWORD):LONG;external KernelDLL name 'lineHandoff';
+function lineHold(hCall:HCALL):LONG;external KernelDLL name 'lineHold';
+function lineInitialize(lphLineApp:LPHLINEAPP; hInstance:HINST; lpfnCallback:LINECALLBACK; lpszAppName:LPCWSTR;
+ lpdwNumDevs:LPDWORD):LONG;external KernelDLL name 'lineInitialize';
+function lineInitializeEx(lphLineApp:LPHLINEAPP; hInstance:HINST; lpfnCallback:LINECALLBACK; lpszFriendlyAppName:LPCWSTR;
+ lpdwNumDevs:LPDWORD; lpdwAPIVersion:LPDWORD; lpLineInitializeExParams:LPLINEINITIALIZEEXPARAMS):LONG;
+ external KernelDLL name 'lineInitializeEx';
+function lineMakeCall(hLine:HLINE; lphCall:LPHCALL; lpszDestAddress:LPCWSTR; dwCountryCode:DWORD;
+ lpCallParams:LPLINECALLPARAMS):LONG;external KernelDLL name 'lineMakeCall';
+function lineMonitorDigits(hCall:HCALL; dwDigitModes:DWORD):LONG;external KernelDLL name 'lineMonitorDigits';
+function lineMonitorMedia(hCall:HCALL; dwMediaModes:DWORD):LONG;external KernelDLL name 'lineMonitorMedia';
+function lineNegotiateAPIVersion(hLineApp:HLINEAPP; dwDeviceID:DWORD; dwAPILowVersion:DWORD; dwAPIHighVersion:DWORD;
+ lpdwAPIVersion:LPDWORD; lpExtensionID:LPLINEEXTENSIONID):LONG;external KernelDLL name 'lineNegotiateAPIVersion';
+function lineNegotiateExtVersion(hLineApp:HLINEAPP; dwDeviceID:DWORD; dwAPIVersion:DWORD; dwExtLowVersion:DWORD;
+ dwExtHighVersion:DWORD; lpdwExtVersion:LPDWORD):LONG;external KernelDLL name 'lineNegotiateExtVersion';
+function lineOpen(hLineApp:HLINEAPP; dwDeviceID:DWORD; lphLine:LPHLINE; dwAPIVersion:DWORD; dwExtVersion:DWORD;
+ dwCallbackInstance:DWORD; dwPrivileges:DWORD; dwMediaModes:DWORD; lpCallParams:LPLINECALLPARAMS):LONG;
+ external KernelDLL name 'lineOpen';
+function linePickup(hLine:HLINE; dwAddressID:DWORD; lphCall:LPHCALL; lpszDestAddress:LPCWSTR; lpszGroupID:LPCWSTR):LONG;
+ external KernelDLL name 'linePickup';
+function linePrepareAddToConference(hConfCall:HCALL; lphConsultCall:LPHCALL; lpCallParams:LPLINECALLPARAMS):LONG;
+ external KernelDLL name 'linePrepareAddToConference';
+function lineRedirect(hCall:HCALL; lpszDestAddress:LPCWSTR; dwCountryCode:DWORD):LONG;external KernelDLL name 'lineRedirect';
+function lineReleaseUserUserInfo(hCall:HCALL):LONG;external KernelDLL name 'lineReleaseUserUserInfo'; { TAPI v1.4 }
+function lineRemoveFromConference(hCall:HCALL):LONG;external KernelDLL name 'lineRemoveFromConference';
+function lineSendUserUserInfo(hCall:HCALL; lpsUserUserInfo:LPCSTR; dwSize:DWORD):LONG;external KernelDLL name 'lineSendUserUserInfo';
+function lineSetAppPriority(lpszAppFilename:LPCWSTR; dwMediaMode:DWORD; lpExtensionID:LPLINEEXTENSIONID; dwRequestMode:DWORD;
+ lpszExtensionName:LPCWSTR; dwPriority:DWORD):LONG;external KernelDLL name 'lineSetAppPriority'; { TAPI v1.4 }
+function lineSetCallParams(hCall:HCALL; dwBearerMode:DWORD; dwMinRate:DWORD; dwMaxRate:DWORD; lpDialParams:LPLINEDIALPARAMS):LONG;
+ external KernelDLL name 'lineSetCallParams';
+function lineSetCallPrivilege(hCall:HCALL; dwCallPrivilege:DWORD):LONG;external KernelDLL name 'lineSetCallPrivilege';
+function lineSetCurrentLocation(hLineApp:HLINEAPP; dwLocation:DWORD):LONG;external KernelDLL name 'lineSetCurrentLocation';
+function lineSetDevConfig(dwDeviceID:DWORD; lpDeviceConfig:LPVOID; dwSize:DWORD; lpszDeviceClass:LPCWSTR):LONG;
+ external KernelDLL name 'lineSetDevConfig';
+function lineSetMediaMode(hCall:HCALL; dwMediaModes:DWORD):LONG;external KernelDLL name 'lineSetMediaMode';
+function lineSetNumRings(hLine:HLINE; dwAddressID:DWORD; dwNumRings:DWORD):LONG;external KernelDLL name 'lineSetNumRings';
+function lineSetStatusMessages(hLine:HLINE; dwLineStates:DWORD; dwAddressStates:DWORD):LONG;
+ external KernelDLL name 'lineSetStatusMessages';
+function lineSetTerminal(hLine:HLINE; dwAddressID:DWORD; hCall:HCALL; dwSelect:DWORD; dwTerminalModes:DWORD;
+ dwTerminalID:DWORD; bEnable:DWORD):LONG;external KernelDLL name 'lineSetTerminal';
+function lineSetTollList(hLineApp:HLINEAPP; dwDeviceID:DWORD; lpszAddressIn:LPCWSTR; dwTollListOption:DWORD):LONG;
+ external KernelDLL name 'lineSetTollList';
+function lineSetupConference(hCall:HCALL; hLine:HLINE; lphConfCall:LPHCALL; lphConsultCall:LPHCALL; dwNumParties:DWORD;
+ lpCallParams:LPLINECALLPARAMS):LONG;external KernelDLL name 'lineSetupConference';
+function lineSetupTransfer(hCall:HCALL; lphConsultCall:LPHCALL; lpCallParams:LPLINECALLPARAMS):LONG;
+ external KernelDLL name 'lineSetupTransfer';
+function lineShutdown(hLineApp:HLINEAPP):LONG;external KernelDLL name 'lineShutdown';
+function lineSwapHold(hActiveCall:HCALL; hHeldCall:HCALL):LONG;external KernelDLL name 'lineSwapHold';
+function lineTranslateAddress(hLineApp:HLINEAPP; dwDeviceID:DWORD; dwAPIVersion:DWORD; lpszAddressIn:LPCWSTR; dwCard:DWORD;
+ dwTranslateOptions:DWORD; lpTranslateOutput:LPLINETRANSLATEOUTPUT):LONG;external KernelDLL name 'lineTranslateAddress';
+function lineTranslateDialog(hLineApp:HLINEAPP; dwDeviceID:DWORD; dwAPIVersion:DWORD; hwndOwner:HWND;
+ lpszAddressIn:LPCWSTR):LONG;external KernelDLL name 'lineTranslateDialog'; { TAPI v1.4 }
+function lineUnhold(hCall:HCALL):LONG;external KernelDLL name 'lineUnhold';
+
+function phoneClose(hPhone:HPHONE):LONG;external KernelDLL name 'phoneClose';
+function phoneConfigDialog(dwDeviceID:DWORD; hwndOwner:HWND; lpszDeviceClass:LPCWSTR):LONG;external KernelDLL name 'phoneConfigDialog';
+function phoneDevSpecific(hPhone:HPHONE; lpParams:LPVOID; dwSize:DWORD):LONG;external KernelDLL name 'phoneDevSpecific';
+function phoneGetDevCaps(hPhoneApp:HPHONEAPP; dwDeviceID:DWORD; dwAPIVersion:DWORD; dwExtVersion:DWORD;
+ lpPhoneCaps:LPPHONECAPS):LONG;external KernelDLL name 'phoneGetDevCaps';
+function phoneGetGain(hPhone:HPHONE; dwHookSwitchDev:DWORD; lpdwGain:LPDWORD):LONG;external KernelDLL name 'phoneGetGain';
+function phoneGetHookSwitch(hPhone:HPHONE; lpdwHookSwitchDevs:LPDWORD):LONG;external KernelDLL name 'phoneGetHookSwitch';
+function phoneGetIcon(dwDeviceID:DWORD; lpszDeviceClass:LPCWSTR; lphIcon:LPHICON):LONG;external KernelDLL name 'phoneGetIcon';
+function phoneGetID(hPhone:HPHONE; lpDeviceID:LPVARSTRING; lpszDeviceClass:LPCWSTR):LONG;external KernelDLL name 'phoneGetID';
+function phoneGetMessage(hPhoneApp:HPHONEAPP; lpMessage:LPPHONEMESSAGE; dwTimeout:DWORD):LONG;external KernelDLL name 'phoneGetMessage';
+function phoneGetRing(hPhone:HPHONE; lpdwRingMode:LPDWORD; lpdwVolume:LPDWORD):LONG;external KernelDLL name 'phoneGetRing';
+function phoneGetStatus(hPhone:HPHONE; lpPhoneStatus:LPPHONESTATUS):LONG;external KernelDLL name 'phoneGetStatus';
+function phoneGetStatusMessages(hPhone:HPHONE; lpdwPhoneStates:LPDWORD; lpdwButtonModes:LPDWORD; lpdwButtonStates:LPDWORD):LONG;
+ external KernelDLL name 'phoneGetStatusMessages';
+function phoneGetVolume(hPhone:HPHONE; dwHookSwitchDev:DWORD; lpdwVolume:LPDWORD):LONG;external KernelDLL name 'phoneGetVolume';
+function phoneInitializeEx(lphPhoneApp:LPHPHONEAPP; hInstance:HINST; lpfnCallback:PHONECALLBACK; lpszFriendlyAppName:LPCWSTR;
+ lpdwNumDevs:LPDWORD; lpdwAPIVersion:LPDWORD; lpPhoneInitializeExParams:LPPHONEINITIALIZEEXPARAMS):LONG;
+ external KernelDLL name 'phoneInitializeEx';
+function phoneNegotiateAPIVersion(hPhoneApp:HPHONEAPP; dwDeviceID:DWORD; dwAPILowVersion:DWORD; dwAPIHighVersion:DWORD;
+ lpdwAPIVersion:LPDWORD; lpExtensionID:LPPHONEEXTENSIONID):LONG;external KernelDLL name 'phoneNegotiateAPIVersion';
+function phoneNegotiateExtVersion(hPhoneApp:HPHONEAPP; dwDeviceID:DWORD; dwAPIVersion:DWORD; dwExtLowVersion:DWORD;
+ dwExtHighVersion:DWORD; lpdwExtVersion:LPDWORD):LONG;external KernelDLL name 'phoneNegotiateExtVersion';
+function phoneOpen(hPhoneApp:HPHONEAPP; dwDeviceID:DWORD; lphPhone:LPHPHONE; dwAPIVersion:DWORD; dwExtVersion:DWORD;
+ dwCallbackInstance:DWORD; dwPrivilege:DWORD):LONG;external KernelDLL name 'phoneOpen';
+function phoneSetGain(hPhone:HPHONE; dwHookSwitchDev:DWORD; dwGain:DWORD):LONG;external KernelDLL name 'phoneSetGain';
+function phoneSetHookSwitch(hPhone:HPHONE; dwHookSwitchDevs:DWORD; dwHookSwitchMode:DWORD):LONG;
+ external KernelDLL name 'phoneSetHookSwitch';
+function phoneSetRing(hPhone:HPHONE; dwRingMode:DWORD; dwVolume:DWORD):LONG;external KernelDLL name 'phoneSetRing';
+function phoneSetStatusMessages(hPhone:HPHONE; dwPhoneStates:DWORD; dwButtonModes:DWORD; dwButtonStates:DWORD):LONG;
+ external KernelDLL name 'phoneSetStatusMessages';
+function phoneSetVolume(hPhone:HPHONE; dwHookSwitchDev:DWORD; dwVolume:DWORD):LONG;external KernelDLL name 'phoneSetVolume';
+function phoneShutdown(hPhoneApp:HPHONEAPP):LONG;external KernelDLL name 'phoneShutdown';
+
+function TAPIERROR_FORMATMESSAGE(const AErrCode: Longint): Longint; // C Macros conversion, may be wrong
+
+{$endif read_interface}
+
+{$ifdef read_implementation}
+
+function TAPIERROR_FORMATMESSAGE(const AErrCode: Longint): Longint;
+begin
+ if AErrCode>$FFFF0000 then Exit(AErrCode and $0000FFFF);
+ if (AErrCode and $10000000)<>0 then Exit(AErrCode-$90000000+$F000);
+ Exit(AErrCode-$80000000+$E000);
+end;
+
+{$endif read_implementation}