' The  Telephony  API  is jointly copyrighted by Intel and Microsoft.  You are
' granted  a royalty free worldwide, unlimited license to make copies, and use
' the   API/SPI  for  making  applications/drivers  that  interface  with  the
' specification provided that this paragraph and the Intel/Microsoft copyright
' statement is maintained as is in the text and source code files.
'
' Copyright 1995 Microsoft, all rights reserved.
' Portions copyright 1992, 1993 Intel/Microsoft, all rights reserved.

' typedef of the LINE callback procedure

' typedef void (CALLBACK * LINECALLBACK)  (byval hDevice as long,
'                          byval dwMessage as long,
'                          byval dwInstance as long,
'                          byval dwParam1 as long,
'                          byval dwParam2 as long,
'                          byval dwParam3 as long);

' typedef of the PHONE callback procedure

' typedef void (CALLBACK * PHONECALLBACK)  (byval hDevice as long,
'                          byval dwMessage as long,
'                          byval dwInstance as long,
'                          byval dwParam1 as long,
'                          byval dwParam2 as long,
'                          byval dwParam3 as long);


' Messages for Phones and Lines
Const LINE_CALLINFO = 1&
Const LINE_CALLSTATE = 2&
Const LINE_CLOSE = 3&
Const LINE_DEVSPECIFIC = 4&
Const LINE_DEVSPECIFICFEATURE = 5&
Const LINE_GATHERDIGITS = 6&
Const LINE_GENERATE = 7&
Const LINE_LINEDEVSTATE = 8&
Const LINE_MONITORDIGITS = 9&
Const LINE_MONITORMEDIA = 10&
Const LINE_MONITORTONE = 11&
Const LINE_REPLY = 12&
Const LINE_REQUEST = 13&
Const PHONE_BUTTON = 14&
Const PHONE_CLOSE = 15&
Const PHONE_DEVSPECIFIC = 16&
Const PHONE_REPLY = 17&
Const PHONE_STATE = 18&
Const LINE_CREATE = 19&
Const PHONE_CREATE = 20&

' Define Simple Telephony Constants.

'Const TAPI_REPLY = WM_USER + 99
Const TAPI_REPLY = &H400 + 99

Const TAPIERR_CONNECTED = 0&
Const TAPIERR_DROPPED = -1&
Const TAPIERR_NOREQUESTRECIPIENT = -2&
Const TAPIERR_REQUESTQUEUEFULL = -3&
Const TAPIERR_INVALDESTADDRESS = -4&
Const TAPIERR_INVALWINDOWHANDLE = -5&
Const TAPIERR_INVALDEVICECLASS = -6&
Const TAPIERR_INVALDEVICEID = -7&
Const TAPIERR_DEVICECLASSUNAVAIL = -8&
Const TAPIERR_DEVICEIDUNAVAIL = -9&
Const TAPIERR_DEVICEINUSE = -10&
Const TAPIERR_DESTBUSY = -11&
Const TAPIERR_DESTNOANSWER = -12&
Const TAPIERR_DESTUNAVAIL = -13&
Const TAPIERR_UNKNOWNWINHANDLE = -14&
Const TAPIERR_UNKNOWNREQUESTID = -15&
Const TAPIERR_REQUESTFAILED = -16&
Const TAPIERR_REQUESTCANCELLED = -17&
Const TAPIERR_INVALPOINTER = -18&


Const TAPIMAXDESTADDRESSSIZE = 80&
Const TAPIMAXAPPNAMESIZE = 40&
Const TAPIMAXCALLEDPARTYSIZE = 40&
Const TAPIMAXCOMMENTSIZE = 80&
Const TAPIMAXDEVICECLASSSIZE = 40&
Const TAPIMAXDEVICEIDSIZE = 40&


' Data types and values for Phones


Const PHONEBUTTONFUNCTION_UNKNOWN = &H0&
Const PHONEBUTTONFUNCTION_CONFERENCE = &H1&
Const PHONEBUTTONFUNCTION_TRANSFER = &H2&
Const PHONEBUTTONFUNCTION_DROP = &H3&
Const PHONEBUTTONFUNCTION_HOLD = &H4&
Const PHONEBUTTONFUNCTION_RECALL = &H5&
Const PHONEBUTTONFUNCTION_DISCONNECT = &H6&
Const PHONEBUTTONFUNCTION_CONNECT = &H7&
Const PHONEBUTTONFUNCTION_MSGWAITON = &H8&
Const PHONEBUTTONFUNCTION_MSGWAITOFF = &H9&
Const PHONEBUTTONFUNCTION_SELECTRING = &HA&
Const PHONEBUTTONFUNCTION_ABBREVDIAL = &HB&
Const PHONEBUTTONFUNCTION_FORWARD = &HC&
Const PHONEBUTTONFUNCTION_PICKUP = &HD&
Const PHONEBUTTONFUNCTION_RINGAGAIN = &HE&
Const PHONEBUTTONFUNCTION_PARK = &HF&
Const PHONEBUTTONFUNCTION_REJECT = &H10&
Const PHONEBUTTONFUNCTION_REDIRECT = &H11&
Const PHONEBUTTONFUNCTION_MUTE = &H12&
Const PHONEBUTTONFUNCTION_VOLUMEUP = &H13&
Const PHONEBUTTONFUNCTION_VOLUMEDOWN = &H14&
Const PHONEBUTTONFUNCTION_SPEAKERON = &H15&
Const PHONEBUTTONFUNCTION_SPEAKEROFF = &H16&
Const PHONEBUTTONFUNCTION_FLASH = &H17&
Const PHONEBUTTONFUNCTION_DATAON = &H18&
Const PHONEBUTTONFUNCTION_DATAOFF = &H19&
Const PHONEBUTTONFUNCTION_DONOTDISTURB = &H1A&
Const PHONEBUTTONFUNCTION_INTERCOM = &H1B&
Const PHONEBUTTONFUNCTION_BRIDGEDAPP = &H1C&
Const PHONEBUTTONFUNCTION_BUSY = &H1D&
Const PHONEBUTTONFUNCTION_CALLAPP = &H1E&
Const PHONEBUTTONFUNCTION_DATETIME = &H1F&
Const PHONEBUTTONFUNCTION_DIRECTORY = &H20&
Const PHONEBUTTONFUNCTION_COVER = &H21&
Const PHONEBUTTONFUNCTION_CALLID = &H22&
Const PHONEBUTTONFUNCTION_LASTNUM = &H23&
Const PHONEBUTTONFUNCTION_NIGHTSRV = &H24&
Const PHONEBUTTONFUNCTION_SENDCALLS = &H25&
Const PHONEBUTTONFUNCTION_MSGINDICATOR = &H26&
Const PHONEBUTTONFUNCTION_REPDIAL = &H27&
Const PHONEBUTTONFUNCTION_SETREPDIAL = &H28&
Const PHONEBUTTONFUNCTION_SYSTEMSPEED = &H29&
Const PHONEBUTTONFUNCTION_STATIONSPEED = &H2A&
Const PHONEBUTTONFUNCTION_CAMPON = &H2B&
Const PHONEBUTTONFUNCTION_SAVEREPEAT = &H2C&
Const PHONEBUTTONFUNCTION_QUEUECALL = &H2D&
Const PHONEBUTTONFUNCTION_NONE = &H2E&

Type PHONEBUTTONINFO
	dwTotalSize As Long
	dwNeededSize As Long
	dwUsedSize As Long

	dwButtonMode As Long
	dwButtonFunction As Long

	dwButtonTextSize As Long
	dwButtonTextOffset As Long

	dwDevSpecificSize As Long
	dwDevSpecificOffset As Long

	dwButtonState As Long
End Type

Const PHONEBUTTONMODE_DUMMY = &H1&
Const PHONEBUTTONMODE_CALL = &H2&
Const PHONEBUTTONMODE_FEATURE = &H4&
Const PHONEBUTTONMODE_KEYPAD = &H8&
Const PHONEBUTTONMODE_LOCAL = &H10&
Const PHONEBUTTONMODE_DISPLAY = &H20&

Const PHONEBUTTONSTATE_UP = &H1&
Const PHONEBUTTONSTATE_DOWN = &H2&
Const PHONEBUTTONSTATE_UNKNOWN = &H4&
Const PHONEBUTTONSTATE_UNAVAIL = &H8&

Type PHONEEXTENSIONID
	dwExtensionID0 As Long
	dwExtensionID1 As Long
	dwExtensionID2 As Long
	dwExtensionID3 As Long
End Type

Type PHONECAPS
	dwTotalSize As Long
	dwNeededSize As Long
	dwUsedSize As Long

	dwProviderInfoSize As Long
	dwProviderInfoOffset As Long

	dwPhoneInfoSize As Long
	dwPhoneInfoOffset As Long

	dwPermanentPhoneID As Long
	dwPhoneNameSize As Long
	dwPhoneNameOffset As Long
	dwStringFormat As Long

	dwPhoneStates As Long
	dwHookSwitchDevs As Long
	dwHandsetHookSwitchModes As Long
	dwSpeakerHookSwitchModes As Long
	dwHeadsetHookSwitchModes As Long

	dwVolumeFlags As Long
	dwGainFlags As Long
	dwDisplayNumRows As Long
	dwDisplayNumColumns As Long
	dwNumRingModes As Long
	dwNumButtonLamps As Long

	dwButtonModesSize As Long
	dwButtonModesOffset As Long

	dwButtonFunctionsSize As Long
	dwButtonFunctionsOffset As Long

	dwLampModesSize As Long
	dwLampModesOffset As Long

	dwNumSetData As Long
	dwSetDataSize As Long
	dwSetDataOffset As Long

	dwNumGetData As Long
	dwGetDataSize As Long
	dwGetDataOffset As Long

	dwDevSpecificSize As Long
	dwDevSpecificOffset As Long

End Type

Const PHONEERR_ALLOCATED = &H90000001
Const PHONEERR_BADDEVICEID = &H90000002
Const PHONEERR_INCOMPATIBLEAPIVERSION = &H90000003
Const PHONEERR_INCOMPATIBLEEXTVERSION = &H90000004
Const PHONEERR_INIFILECORRUPT = &H90000005
Const PHONEERR_INUSE = &H90000006
Const PHONEERR_INVALAPPHANDLE = &H90000007
Const PHONEERR_INVALAPPNAME = &H90000008
Const PHONEERR_INVALBUTTONLAMPID = &H90000009
Const PHONEERR_INVALBUTTONMODE = &H9000000A
Const PHONEERR_INVALBUTTONSTATE = &H9000000B
Const PHONEERR_INVALDATAID = &H9000000C
Const PHONEERR_INVALDEVICECLASS = &H9000000D
Const PHONEERR_INVALEXTVERSION = &H9000000E
Const PHONEERR_INVALHOOKSWITCHDEV = &H9000000F
Const PHONEERR_INVALHOOKSWITCHMODE = &H90000010
Const PHONEERR_INVALLAMPMODE = &H90000011
Const PHONEERR_INVALPARAM = &H90000012
Const PHONEERR_INVALPHONEHANDLE = &H90000013
Const PHONEERR_INVALPHONESTATE = &H90000014
Const PHONEERR_INVALPOINTER = &H90000015
Const PHONEERR_INVALPRIVILEGE = &H90000016
Const PHONEERR_INVALRINGMODE = &H90000017
Const PHONEERR_NODEVICE = &H90000018
Const PHONEERR_NODRIVER = &H90000019
Const PHONEERR_NOMEM = &H9000001A
Const PHONEERR_NOTOWNER = &H9000001B
Const PHONEERR_OPERATIONFAILED = &H9000001C
Const PHONEERR_OPERATIONUNAVAIL = &H9000001D
Const PHONEERR_RESOURCEUNAVAIL = &H9000001F
Const PHONEERR_REQUESTOVERRUN = &H90000020
Const PHONEERR_STRUCTURETOOSMALL = &H90000021
Const PHONEERR_UNINITIALIZED = &H90000022
Const PHONEERR_REINIT = &H90000023

Const PHONEHOOKSWITCHDEV_HANDSET = &H1&
Const PHONEHOOKSWITCHDEV_SPEAKER = &H2&
Const PHONEHOOKSWITCHDEV_HEADSET = &H4&
	  
Const PHONEHOOKSWITCHMODE_ONHOOK = &H1&
Const PHONEHOOKSWITCHMODE_MIC = &H2&
Const PHONEHOOKSWITCHMODE_SPEAKER = &H4&
Const PHONEHOOKSWITCHMODE_MICSPEAKER = &H8&
Const PHONEHOOKSWITCHMODE_UNKNOWN = &H10&

Const PHONELAMPMODE_DUMMY = &H1&
Const PHONELAMPMODE_OFF = &H2&
Const PHONELAMPMODE_STEADY = &H4&
Const PHONELAMPMODE_WINK = &H8&
Const PHONELAMPMODE_FLASH = &H10&
Const PHONELAMPMODE_FLUTTER = &H20&
Const PHONELAMPMODE_BROKENFLUTTER = &H40&
Const PHONELAMPMODE_UNKNOWN = &H80&


Const PHONEPRIVILEGE_MONITOR = &H1&
Const PHONEPRIVILEGE_OWNER = &H2&

Const PHONESTATE_OTHER = &H1&
Const PHONESTATE_CONNECTED = &H2&
Const PHONESTATE_DISCONNECTED = &H4&
Const PHONESTATE_OWNER = &H8&
Const PHONESTATE_MONITORS = &H10&
Const PHONESTATE_DISPLAY = &H20&
Const PHONESTATE_LAMP = &H40&
Const PHONESTATE_RINGMODE = &H80&
Const PHONESTATE_RINGVOLUME = &H100&
Const PHONESTATE_HANDSETHOOKSWITCH = &H200&
Const PHONESTATE_HANDSETVOLUME = &H400&
Const PHONESTATE_HANDSETGAIN = &H800&
Const PHONESTATE_SPEAKERHOOKSWITCH = &H1000&
Const PHONESTATE_SPEAKERVOLUME = &H2000&
Const PHONESTATE_SPEAKERGAIN = &H4000&
Const PHONESTATE_HEADSETHOOKSWITCH = &H8000&
Const PHONESTATE_HEADSETVOLUME = &H10000
Const PHONESTATE_HEADSETGAIN = &H20000
Const PHONESTATE_SUSPEND = &H40000
Const PHONESTATE_RESUME = &H80000
Const PHONESTATE_DEVSPECIFIC = &H100000
Const PHONESTATE_REINIT = &H200000
Const PHONESTATE_CAPSCHANGE = &H400000
Const PHONESTATE_REMOVED = &H800000


Type PHONESTATUS

	dwTotalSize As Long
	dwNeededSize As Long
	dwUsedSize As Long

	dwStatusFlags As Long
	dwNumOwners As Long
	dwNumMonitors As Long
	dwRingMode As Long
	dwRingVolume As Long

	dwHandsetHookSwitchMode As Long
	dwHandsetVolume As Long
	dwHandsetGain As Long

	dwSpeakerHookSwitchMode As Long
	dwSpeakerVolume As Long
	dwSpeakerGain As Long

	dwHeadsetHookSwitchMode As Long
	dwHeadsetVolume As Long
	dwHeadsetGain As Long

	dwDisplaySize As Long
	dwDisplayOffset As Long

	dwLampModesSize As Long
	dwLampModesOffset As Long

	dwOwnerNameSize As Long
	dwOwnerNameOffset As Long

	dwDevSpecificSize As Long
	dwDevSpecificOffset As Long

End Type

Const PHONESTATUSFLAGS_CONNECTED = &H1
Const PHONESTATUSFLAGS_SUSPENDED = &H2

Const STRINGFORMAT_ASCII = &H1
Const STRINGFORMAT_DBCS = &H2
Const STRINGFORMAT_UNICODE = &H3
Const STRINGFORMAT_BINARY = &H4

Type VARSTRING

	dwTotalSize As Long
	dwNeededSize As Long
	dwUsedSize As Long

	dwStringFormat As Long
	dwStringSize As Long
	dwStringOffset As Long

End Type

' Data types and values for Lines


Const LINEADDRCAPFLAGS_FWDNUMRINGS = &H1
Const LINEADDRCAPFLAGS_PICKUPGROUPID = &H2
Const LINEADDRCAPFLAGS_SECURE = &H4
Const LINEADDRCAPFLAGS_BLOCKIDDEFAULT = &H8
Const LINEADDRCAPFLAGS_BLOCKIDOVERRIDE = &H10
Const LINEADDRCAPFLAGS_DIALED = &H20
Const LINEADDRCAPFLAGS_ORIGOFFHOOK = &H40
Const LINEADDRCAPFLAGS_DESTOFFHOOK = &H80
Const LINEADDRCAPFLAGS_FWDCONSULT = &H100
Const LINEADDRCAPFLAGS_SETUPCONFNULL = &H200
Const LINEADDRCAPFLAGS_AUTORECONNECT = &H400
Const LINEADDRCAPFLAGS_COMPLETIONID = &H800
Const LINEADDRCAPFLAGS_TRANSFERHELD = &H1000
Const LINEADDRCAPFLAGS_TRANSFERMAKE = &H2000
Const LINEADDRCAPFLAGS_CONFERENCEHELD = &H4000
Const LINEADDRCAPFLAGS_CONFERENCEMAKE = &H8000
Const LINEADDRCAPFLAGS_PARTIALDIAL = &H10000
Const LINEADDRCAPFLAGS_FWDSTATUSVALID = &H20000
Const LINEADDRCAPFLAGS_FWDINTEXTADDR = &H40000
Const LINEADDRCAPFLAGS_FWDBUSYNAADDR = &H80000
Const LINEADDRCAPFLAGS_ACCEPTTOALERT = &H100000
Const LINEADDRCAPFLAGS_CONFDROP = &H200000
Const LINEADDRCAPFLAGS_PICKUPCALLWAIT = &H400000

Type LINEADDRESSCAPS

	dwTotalSize As Long
	dwNeededSize As Long
	dwUsedSize As Long

	dwLineDeviceID As Long

	dwAddressSize As Long
	dwAddressOffset As Long

	dwDevSpecificSize As Long
	dwDevSpecificOffset As Long

	dwAddressSharing As Long
	dwAddressStates As Long
	dwCallInfoStates As Long
	dwCallerIDFlags As Long
	dwCalledIDFlags As Long
	dwConnectedIDFlags As Long
	dwRedirectionIDFlags As Long
	dwRedirectingIDFlags As Long
	dwCallStates As Long
	dwDialToneModes As Long
	dwBusyModes As Long
	dwSpecialInfo As Long
	dwDisconnectModes As Long

	dwMaxNumActiveCalls As Long
	dwMaxNumOnHoldCalls As Long
	dwMaxNumOnHoldPendingCalls As Long
	dwMaxNumConference As Long
	dwMaxNumTransConf As Long

	dwAddrCapFlags As Long
	dwCallFeatures As Long
	dwRemoveFromConfCaps As Long
	dwRemoveFromConfState As Long
	dwTransferModes As Long
	dwParkModes As Long

	dwForwardModes As Long
	dwMaxForwardEntries As Long
	dwMaxSpecificEntries As Long
	dwMinFwdNumRings As Long
	dwMaxFwdNumRings As Long

	dwMaxCallCompletions As Long
	dwCallCompletionConds As Long
	dwCallCompletionModes As Long
	dwNumCompletionMessages As Long
	dwCompletionMsgTextEntrySize As Long
	dwCompletionMsgTextSize As Long
	dwCompletionMsgTextOffset As Long
	dwAddressFeatures As Long

End Type

Const LINEADDRESSMODE_ADDRESSID = &H1
Const LINEADDRESSMODE_DIALABLEADDR = &H2


Const LINEADDRESSSHARING_PRIVATE = &H1
Const LINEADDRESSSHARING_BRIDGEDEXCL = &H2
Const LINEADDRESSSHARING_BRIDGEDNEW = &H4
Const LINEADDRESSSHARING_BRIDGEDSHARED = &H8
Const LINEADDRESSSHARING_MONITORED = &H10

Const LINEADDRESSSTATE_OTHER = &H1
Const LINEADDRESSSTATE_DEVSPECIFIC = &H2
Const LINEADDRESSSTATE_INUSEZERO = &H4
Const LINEADDRESSSTATE_INUSEONE = &H8
Const LINEADDRESSSTATE_INUSEMANY = &H10
Const LINEADDRESSSTATE_NUMCALLS = &H20
Const LINEADDRESSSTATE_FORWARD = &H40
Const LINEADDRESSSTATE_TERMINALS = &H80
Const LINEADDRESSSTATE_CAPSCHANGE = &H100

Type LINEADDRESSSTATUS

	dwTotalSize As Long
	dwNeededSize As Long
	dwUsedSize As Long

	dwNumInUse As Long
	dwNumActiveCalls As Long
	dwNumOnHoldCalls As Long
	dwNumOnHoldPendCalls As Long
	dwAddressFeatures As Long

	dwNumRingsNoAnswer As Long
	dwForwardNumEntries As Long
	dwForwardSize As Long
	dwForwardOffset As Long

	dwTerminalModesSize As Long
	dwTerminalModesOffset As Long

	dwDevSpecificSize As Long
	dwDevSpecificOffset As Long

End Type

Const LINEADDRFEATURE_FORWARD = &H1
Const LINEADDRFEATURE_MAKECALL = &H2
Const LINEADDRFEATURE_PICKUP = &H4
Const LINEADDRFEATURE_SETMEDIACONTROL = &H8
Const LINEADDRFEATURE_SETTERMINAL = &H10
Const LINEADDRFEATURE_SETUPCONF = &H20
Const LINEADDRFEATURE_UNCOMPLETECALL = &H40
Const LINEADDRFEATURE_UNPARK = &H80


Const LINEANSWERMODE_NONE = &H1
Const LINEANSWERMODE_DROP = &H2
Const LINEANSWERMODE_HOLD = &H4

Const LINEBEARERMODE_VOICE = &H1
Const LINEBEARERMODE_SPEECH = &H2
Const LINEBEARERMODE_MULTIUSE = &H4
Const LINEBEARERMODE_DATA = &H8
Const LINEBEARERMODE_ALTSPEECHDATA = &H10
Const LINEBEARERMODE_NONCALLSIGNALING = &H20
Const LINEBEARERMODE_PASSTHROUGH = &H40

Const LINEBUSYMODE_STATION = &H1
Const LINEBUSYMODE_TRUNK = &H2
Const LINEBUSYMODE_UNKNOWN = &H4
Const LINEBUSYMODE_UNAVAIL = &H8

Const LINECALLCOMPLCOND_BUSY = &H1
Const LINECALLCOMPLCOND_NOANSWER = &H2

Const LINECALLCOMPLMODE_CAMPON = &H1
Const LINECALLCOMPLMODE_CALLBACK = &H2
Const LINECALLCOMPLMODE_INTRUDE = &H4
Const LINECALLCOMPLMODE_MESSAGE = &H8

Const LINECALLFEATURE_ACCEPT = &H1
Const LINECALLFEATURE_ADDTOCONF = &H2
Const LINECALLFEATURE_ANSWER = &H4
Const LINECALLFEATURE_BLINDTRANSFER = &H8
Const LINECALLFEATURE_COMPLETECALL = &H10
Const LINECALLFEATURE_COMPLETETRANSF = &H20
Const LINECALLFEATURE_DIAL = &H40
Const LINECALLFEATURE_DROP = &H80
Const LINECALLFEATURE_GATHERDIGITS = &H100
Const LINECALLFEATURE_GENERATEDIGITS = &H200
Const LINECALLFEATURE_GENERATETONE = &H400
Const LINECALLFEATURE_HOLD = &H800
Const LINECALLFEATURE_MONITORDIGITS = &H1000
Const LINECALLFEATURE_MONITORMEDIA = &H2000
Const LINECALLFEATURE_MONITORTONES = &H4000
Const LINECALLFEATURE_PARK = &H8000
Const LINECALLFEATURE_PREPAREADDCONF = &H10000
Const LINECALLFEATURE_REDIRECT = &H20000
Const LINECALLFEATURE_REMOVEFROMCONF = &H40000
Const LINECALLFEATURE_SECURECALL = &H80000
Const LINECALLFEATURE_SENDUSERUSER = &H100000
Const LINECALLFEATURE_SETCALLPARAMS = &H200000
Const LINECALLFEATURE_SETMEDIACONTROL = &H400000
Const LINECALLFEATURE_SETTERMINAL = &H800000
Const LINECALLFEATURE_SETUPCONF = &H1000000
Const LINECALLFEATURE_SETUPTRANSFER = &H2000000
Const LINECALLFEATURE_SWAPHOLD = &H4000000
Const LINECALLFEATURE_UNHOLD = &H8000000
Const LINECALLFEATURE_RELEASEUSERUSERINFO = &H10000000

Type LINEDIALPARAMS

	dwDialPause As Long
	dwDialSpeed As Long
	dwDigitDuration As Long
	dwWaitForDialtone As Long

End Type

Type LINECALLINFO

	dwTotalSize As Long
	dwNeededSize As Long
	dwUsedSize As Long

	hLine As Integer
	dwLineDeviceID As Long
	dwAddressID As Long

	dwBearerMode As Long
	dwRate As Long
	dwMediaMode As Long

	dwAppSpecific As Long
	dwCallID As Long
	dwRelatedCallID As Long
	dwCallParamFlags As Long
	dwCallStates As Long

	dwMonitorDigitModes As Long
	dwMonitorMediaModes As Long
	DialParams As LINEDIALPARAMS

	dwOrigin As Long
	dwReason As Long
	dwCompletionID As Long
	dwNumOwners As Long
	dwNumMonitors As Long

	dwCountryCode As Long
	dwTrunk As Long

	dwCallerIDFlags As Long
	dwCallerIDSize As Long
	dwCallerIDOffset As Long
	dwCallerIDNameSize As Long
	dwCallerIDNameOffset As Long

	dwCalledIDFlags As Long
	dwCalledIDSize As Long
	dwCalledIDOffset As Long
	dwCalledIDNameSize As Long
	dwCalledIDNameOffset As Long

	dwConnectedIDFlags As Long
	dwConnectedIDSize As Long
	dwConnectedIDOffset As Long
	dwConnectedIDNameSize As Long
	dwConnectedIDNameOffset As Long

	dwRedirectionIDFlags As Long
	dwRedirectionIDSize As Long
	dwRedirectionIDOffset As Long
	dwRedirectionIDNameSize As Long
	dwRedirectionIDNameOffset As Long

	dwRedirectingIDFlags As Long
	dwRedirectingIDSize As Long
	dwRedirectingIDOffset As Long
	dwRedirectingIDNameSize As Long
	dwRedirectingIDNameOffset As Long

	dwAppNameSize As Long
	dwAppNameOffset As Long

	dwDisplayableAddressSize As Long
	dwDisplayableAddressOffset As Long

	dwCalledPartySize As Long
	dwCalledPartyOffset As Long

	dwCommentSize As Long
	dwCommentOffset As Long

	dwDisplaySize As Long
	dwDisplayOffset As Long

	dwUserUserInfoSize As Long
	dwUserUserInfoOffset As Long

	dwHighLevelCompSize As Long
	dwHighLevelCompOffset As Long

	dwLowLevelCompSize As Long
	dwLowLevelCompOffset As Long

	dwChargingInfoSize As Long
	dwChargingInfoOffset As Long

	dwTerminalModesSize As Long
	dwTerminalModesOffset As Long

	dwDevSpecificSize As Long
	dwDevSpecificOffset As Long

End Type

Const LINECALLINFOSTATE_OTHER = &H1
Const LINECALLINFOSTATE_DEVSPECIFIC = &H2
Const LINECALLINFOSTATE_BEARERMODE = &H4
Const LINECALLINFOSTATE_RATE = &H8
Const LINECALLINFOSTATE_MEDIAMODE = &H10
Const LINECALLINFOSTATE_APPSPECIFIC = &H20
Const LINECALLINFOSTATE_CALLID = &H40
Const LINECALLINFOSTATE_RELATEDCALLID = &H80
Const LINECALLINFOSTATE_ORIGIN = &H100
Const LINECALLINFOSTATE_REASON = &H200
Const LINECALLINFOSTATE_COMPLETIONID = &H400
Const LINECALLINFOSTATE_NUMOWNERINCR = &H800
Const LINECALLINFOSTATE_NUMOWNERDECR = &H1000
Const LINECALLINFOSTATE_NUMMONITORS = &H2000
Const LINECALLINFOSTATE_TRUNK = &H4000
Const LINECALLINFOSTATE_CALLERID = &H8000
Const LINECALLINFOSTATE_CALLEDID = &H10000
Const LINECALLINFOSTATE_CONNECTEDID = &H20000
Const LINECALLINFOSTATE_REDIRECTIONID = &H40000
Const LINECALLINFOSTATE_REDIRECTINGID = &H80000
Const LINECALLINFOSTATE_DISPLAY = &H100000
Const LINECALLINFOSTATE_USERUSERINFO = &H200000
Const LINECALLINFOSTATE_HIGHLEVELCOMP = &H400000
Const LINECALLINFOSTATE_LOWLEVELCOMP = &H800000
Const LINECALLINFOSTATE_CHARGINGINFO = &H1000000
Const LINECALLINFOSTATE_TERMINAL = &H2000000
Const LINECALLINFOSTATE_DIALPARAMS = &H4000000
Const LINECALLINFOSTATE_MONITORMODES = &H8000000

Type LINECALLLIST

	dwTotalSize As Long
	dwNeededSize As Long
	dwUsedSize As Long
    
	dwCallsNumEntries As Long
	dwCallsSize As Long
	dwCallsOffset As Long

End Type

Const LINECALLORIGIN_OUTBOUND = &H1
Const LINECALLORIGIN_INTERNAL = &H2
Const LINECALLORIGIN_EXTERNAL = &H4
Const LINECALLORIGIN_UNKNOWN = &H10
Const LINECALLORIGIN_UNAVAIL = &H20
Const LINECALLORIGIN_CONFERENCE = &H40
Const LINECALLORIGIN_INBOUND = &H80

Const LINECALLPARAMFLAGS_SECURE = &H1
Const LINECALLPARAMFLAGS_IDLE = &H2
Const LINECALLPARAMFLAGS_BLOCKID = &H4
Const LINECALLPARAMFLAGS_ORIGOFFHOOK = &H8
Const LINECALLPARAMFLAGS_DESTOFFHOOK = &H10

Type LINECALLPARAMS
     ' Defaults:
	dwTotalSize As Long               ' ---------
    
	dwBearerMode As Long              ' voice
	dwMinRate As Long                 ' (3.1kHz as integer)
	dwMaxRate As Long                 ' (3.1kHz)
	dwMediaMode As Long               ' interactiveVoice

	dwCallParamFlags As Long          ' 0
	dwAddressMode As Long             ' addressID
	dwAddressID As Long               ' (any available)

	DialParams As LINEDIALPARAMS      ' (0, 0, 0, 0)
    
	dwOrigAddressSize As Long         ' 0
	dwOrigAddressOffset As Long
	dwDisplayableAddressSize As Long
	dwDisplayableAddressOffset As Long

	dwCalledPartySize As Long         ' 0
	dwCalledPartyOffset As Long

	dwCommentSize As Long             ' 0
	dwCommentOffset As Long

	dwUserUserInfoSize As Long        ' 0
	dwUserUserInfoOffset As Long

	dwHighLevelCompSize As Long       ' 0
	dwHighLevelCompOffset As Long

	dwLowLevelCompSize As Long        ' 0
	dwLowLevelCompOffset As Long

	dwDevSpecificSize As Long         ' 0
	dwDevSpecificOffset As Long

End Type


Const LINECALLPARTYID_BLOCKED = &H1
Const LINECALLPARTYID_OUTOFAREA = &H2
Const LINECALLPARTYID_NAME = &H4
Const LINECALLPARTYID_ADDRESS = &H8
Const LINECALLPARTYID_PARTIAL = &H10
Const LINECALLPARTYID_UNKNOWN = &H20
Const LINECALLPARTYID_UNAVAIL = &H40

Const LINECALLPRIVILEGE_NONE = &H1
Const LINECALLPRIVILEGE_MONITOR = &H2
Const LINECALLPRIVILEGE_OWNER = &H4

Const LINECALLREASON_DIRECT = &H1
Const LINECALLREASON_FWDBUSY = &H2
Const LINECALLREASON_FWDNOANSWER = &H4
Const LINECALLREASON_FWDUNCOND = &H8
Const LINECALLREASON_PICKUP = &H10
Const LINECALLREASON_UNPARK = &H20
Const LINECALLREASON_REDIRECT = &H40
Const LINECALLREASON_CALLCOMPLETION = &H80
Const LINECALLREASON_TRANSFER = &H100
Const LINECALLREASON_REMINDER = &H200
Const LINECALLREASON_UNKNOWN = &H400
Const LINECALLREASON_UNAVAIL = &H800
Const LINECALLREASON_INTRUDE = &H1000
Const LINECALLREASON_PARKED = &H2000

Const LINECALLSELECT_LINE = &H1
Const LINECALLSELECT_ADDRESS = &H2
Const LINECALLSELECT_CALL = &H4

Const LINECALLSTATE_IDLE = &H1
Const LINECALLSTATE_OFFERING = &H2
Const LINECALLSTATE_ACCEPTED = &H4
Const LINECALLSTATE_DIALTONE = &H8
Const LINECALLSTATE_DIALING = &H10
Const LINECALLSTATE_RINGBACK = &H20
Const LINECALLSTATE_BUSY = &H40
Const LINECALLSTATE_SPECIALINFO = &H80
Const LINECALLSTATE_CONNECTED = &H100
Const LINECALLSTATE_PROCEEDING = &H200
Const LINECALLSTATE_ONHOLD = &H400
Const LINECALLSTATE_CONFERENCED = &H800
Const LINECALLSTATE_ONHOLDPENDCONF = &H1000
Const LINECALLSTATE_ONHOLDPENDTRANSFER = &H2000
Const LINECALLSTATE_DISCONNECTED = &H4000
Const LINECALLSTATE_UNKNOWN = &H8000


Const LINECONNECTEDMODE_ACTIVE = &H1
Const LINECONNECTEDMODE_INACTIVE = &H2

Const LINEOFFERINGMODE_ACTIVE = &H1
Const LINEOFFERINGMODE_INACTIVE = &H2


Type LINECALLSTATUS

	dwTotalSize As Long
	dwNeededSize As Long
	dwUsedSize As Long

	dwCallState As Long
	dwCallStateMode As Long
	dwCallPrivilege As Long
	dwCallFeatures As Long

	dwDevSpecificSize As Long
	dwDevSpecificOffset As Long

End Type

Const LINEDEVCAPFLAGS_CROSSADDRCONF = &H1
Const LINEDEVCAPFLAGS_HIGHLEVCOMP = &H2
Const LINEDEVCAPFLAGS_LOWLEVCOMP = &H4
Const LINEDEVCAPFLAGS_MEDIACONTROL = &H8
Const LINEDEVCAPFLAGS_MULTIPLEADDR = &H10
Const LINEDEVCAPFLAGS_CLOSEDROP = &H20
Const LINEDEVCAPFLAGS_DIALBILLING = &H40
Const LINEDEVCAPFLAGS_DIALQUIET = &H80
Const LINEDEVCAPFLAGS_DIALDIALTONE = &H100

Type LINEEXTENSIONID

	dwExtensionID0 As Long
	dwExtensionID1 As Long
	dwExtensionID2 As Long
	dwExtensionID3 As Long

End Type


Type LINEDEVCAPS

	dwTotalSize As Long
	dwNeededSize As Long
	dwUsedSize As Long

	dwProviderInfoSize As Long
	dwProviderInfoOffset As Long

	dwSwitchInfoSize As Long
	dwSwitchInfoOffset As Long

	dwPermanentLineID As Long
	dwLineNameSize As Long
	dwLineNameOffset As Long
	dwStringFormat As Long
    
	dwAddressModes As Long
	dwNumAddresses As Long
	dwBearerModes As Long
	dwMaxRate As Long
	dwMediaModes As Long

	dwGenerateToneModes As Long
	dwGenerateToneMaxNumFreq As Long
	dwGenerateDigitModes As Long
	dwMonitorToneMaxNumFreq As Long
	dwMonitorToneMaxNumEntries As Long
	dwMonitorDigitModes As Long
	dwGatherDigitsMinTimeout As Long
	dwGatherDigitsMaxTimeout As Long

	dwMedCtlDigitMaxListSize As Long
	dwMedCtlMediaMaxListSize As Long
	dwMedCtlToneMaxListSize As Long
	dwMedCtlCallStateMaxListSize As Long

	dwDevCapFlags As Long
	dwMaxNumActiveCalls As Long
	dwAnswerMode As Long
	dwRingModes As Long
	dwLineStates As Long

	dwUUIAcceptSize As Long
	dwUUIAnswerSize As Long
	dwUUIMakeCallSize As Long
	dwUUIDropSize As Long
	dwUUISendUserUserInfoSize As Long
	dwUUICallInfoSize As Long
    
	MinDialParams As LINEDIALPARAMS
	MaxDialParams As LINEDIALPARAMS
	DefaultDialParams As LINEDIALPARAMS

	dwNumTerminals As Long
	dwTerminalCapsSize As Long
	dwTerminalCapsOffset As Long
	dwTerminalTextEntrySize As Long
	dwTerminalTextSize As Long
	dwTerminalTextOffset As Long

	dwDevSpecificSize As Long
	dwDevSpecificOffset As Long
	dwLineFeatures As Long

End Type
    
Const LINEDEVSTATE_OTHER = &H1
Const LINEDEVSTATE_RINGING = &H2
Const LINEDEVSTATE_CONNECTED = &H4
Const LINEDEVSTATE_DISCONNECTED = &H8
Const LINEDEVSTATE_MSGWAITON = &H10
Const LINEDEVSTATE_MSGWAITOFF = &H20
Const LINEDEVSTATE_INSERVICE = &H40
Const LINEDEVSTATE_OUTOFSERVICE = &H80
Const LINEDEVSTATE_MAINTENANCE = &H100
Const LINEDEVSTATE_OPEN = &H200
Const LINEDEVSTATE_CLOSE = &H400
Const LINEDEVSTATE_NUMCALLS = &H800
Const LINEDEVSTATE_NUMCOMPLETIONS = &H1000
Const LINEDEVSTATE_TERMINALS = &H2000
Const LINEDEVSTATE_ROAMMODE = &H4000
Const LINEDEVSTATE_BATTERY = &H8000
Const LINEDEVSTATE_SIGNAL = &H10000
Const LINEDEVSTATE_DEVSPECIFIC = &H20000
Const LINEDEVSTATE_REINIT = &H40000
Const LINEDEVSTATE_LOCK = &H80000
Const LINEDEVSTATE_CAPSCHANGE = &H100000
Const LINEDEVSTATE_CONFIGCHANGE = &H200000
Const LINEDEVSTATE_TRANSLATECHANGE = &H400000
Const LINEDEVSTATE_COMPLCANCEL = &H800000
Const LINEDEVSTATE_REMOVED = &H1000000


Type LINEDEVSTATUS

	dwTotalSize As Long
	dwNeededSize As Long
	dwUsedSize As Long

	dwNumOpens As Long
	dwOpenMediaModes As Long
	dwNumActiveCalls As Long
	dwNumOnHoldCalls As Long
	dwNumOnHoldPendCalls As Long
	dwLineFeatures As Long
	dwNumCallCompletions As Long
	dwRingMode As Long
	dwSignalLevel As Long
	dwBatteryLevel As Long
	dwRoamMode As Long
    
	dwDevStatusFlags As Long
    
	dwTerminalModesSize As Long
	dwTerminalModesOffset As Long
    
	dwDevSpecificSize As Long
	dwDevSpecificOffset As Long

End Type

Const LINEDEVSTATUSFLAGS_CONNECTED = &H1
Const LINEDEVSTATUSFLAGS_MSGWAIT = &H2
Const LINEDEVSTATUSFLAGS_INSERVICE = &H4
Const LINEDEVSTATUSFLAGS_LOCKED = &H8


Const LINEDIALTONEMODE_NORMAL = &H1
Const LINEDIALTONEMODE_SPECIAL = &H2
Const LINEDIALTONEMODE_INTERNAL = &H4
Const LINEDIALTONEMODE_EXTERNAL = &H8
Const LINEDIALTONEMODE_UNKNOWN = &H10
Const LINEDIALTONEMODE_UNAVAIL = &H20
    
Const LINEDIGITMODE_PULSE = &H1
Const LINEDIGITMODE_DTMF = &H2
Const LINEDIGITMODE_DTMFEND = &H4
    
Const LINEDISCONNECTMODE_NORMAL = &H1
Const LINEDISCONNECTMODE_UNKNOWN = &H2
Const LINEDISCONNECTMODE_REJECT = &H4
Const LINEDISCONNECTMODE_PICKUP = &H8
Const LINEDISCONNECTMODE_FORWARDED = &H10
Const LINEDISCONNECTMODE_BUSY = &H20
Const LINEDISCONNECTMODE_NOANSWER = &H40
Const LINEDISCONNECTMODE_BADADDRESS = &H80
Const LINEDISCONNECTMODE_UNREACHABLE = &H100
Const LINEDISCONNECTMODE_CONGESTION = &H200
Const LINEDISCONNECTMODE_INCOMPATIBLE = &H400
Const LINEDISCONNECTMODE_UNAVAIL = &H800
Const LINEDISCONNECTMODE_NODIALTONE = &H1000

Const LINEERR_ALLOCATED = &H80000001
Const LINEERR_BADDEVICEID = &H80000002
Const LINEERR_BEARERMODEUNAVAIL = &H80000003
Const LINEERR_CALLUNAVAIL = &H80000005
Const LINEERR_COMPLETIONOVERRUN = &H80000006
Const LINEERR_CONFERENCEFULL = &H80000007
Const LINEERR_DIALBILLING = &H80000008
Const LINEERR_DIALDIALTONE = &H80000009
Const LINEERR_DIALPROMPT = &H8000000A
Const LINEERR_DIALQUIET = &H8000000B
Const LINEERR_INCOMPATIBLEAPIVERSION = &H8000000C
Const LINEERR_INCOMPATIBLEEXTVERSION = &H8000000D
Const LINEERR_INIFILECORRUPT = &H8000000E
Const LINEERR_INUSE = &H8000000F
Const LINEERR_INVALADDRESS = &H80000010
Const LINEERR_INVALADDRESSID = &H80000011
Const LINEERR_INVALADDRESSMODE = &H80000012
Const LINEERR_INVALADDRESSSTATE = &H80000013
Const LINEERR_INVALAPPHANDLE = &H80000014
Const LINEERR_INVALAPPNAME = &H80000015
Const LINEERR_INVALBEARERMODE = &H80000016
Const LINEERR_INVALCALLCOMPLMODE = &H80000017
Const LINEERR_INVALCALLHANDLE = &H80000018
Const LINEERR_INVALCALLPARAMS = &H80000019
Const LINEERR_INVALCALLPRIVILEGE = &H8000001A
Const LINEERR_INVALCALLSELECT = &H8000001B
Const LINEERR_INVALCALLSTATE = &H8000001C
Const LINEERR_INVALCALLSTATELIST = &H8000001D
Const LINEERR_INVALCARD = &H8000001E
Const LINEERR_INVALCOMPLETIONID = &H8000001F
Const LINEERR_INVALCONFCALLHANDLE = &H80000020
Const LINEERR_INVALCONSULTCALLHANDLE = &H80000021
Const LINEERR_INVALCOUNTRYCODE = &H80000022
Const LINEERR_INVALDEVICECLASS = &H80000023
Const LINEERR_INVALDEVICEHANDLE = &H80000024
Const LINEERR_INVALDIALPARAMS = &H80000025
Const LINEERR_INVALDIGITLIST = &H80000026
Const LINEERR_INVALDIGITMODE = &H80000027
Const LINEERR_INVALDIGITS = &H80000028
Const LINEERR_INVALEXTVERSION = &H80000029
Const LINEERR_INVALGROUPID = &H8000002A
Const LINEERR_INVALLINEHANDLE = &H8000002B
Const LINEERR_INVALLINESTATE = &H8000002C
Const LINEERR_INVALLOCATION = &H8000002D
Const LINEERR_INVALMEDIALIST = &H8000002E
Const LINEERR_INVALMEDIAMODE = &H8000002F
Const LINEERR_INVALMESSAGEID = &H80000030
Const LINEERR_INVALPARAM = &H80000032
Const LINEERR_INVALPARKID = &H80000033
Const LINEERR_INVALPARKMODE = &H80000034
Const LINEERR_INVALPOINTER = &H80000035
Const LINEERR_INVALPRIVSELECT = &H80000036
Const LINEERR_INVALRATE = &H80000037
Const LINEERR_INVALREQUESTMODE = &H80000038
Const LINEERR_INVALTERMINALID = &H80000039
Const LINEERR_INVALTERMINALMODE = &H8000003A
Const LINEERR_INVALTIMEOUT = &H8000003B
Const LINEERR_INVALTONE = &H8000003C
Const LINEERR_INVALTONELIST = &H8000003D
Const LINEERR_INVALTONEMODE = &H8000003E
Const LINEERR_INVALTRANSFERMODE = &H8000003F
Const LINEERR_LINEMAPPERFAILED = &H80000040
Const LINEERR_NOCONFERENCE = &H80000041
Const LINEERR_NODEVICE = &H80000042
Const LINEERR_NODRIVER = &H80000043
Const LINEERR_NOMEM = &H80000044
Const LINEERR_NOREQUEST = &H80000045
Const LINEERR_NOTOWNER = &H80000046
Const LINEERR_NOTREGISTERED = &H80000047
Const LINEERR_OPERATIONFAILED = &H80000048
Const LINEERR_OPERATIONUNAVAIL = &H80000049
Const LINEERR_RATEUNAVAIL = &H8000004A
Const LINEERR_RESOURCEUNAVAIL = &H8000004B
Const LINEERR_REQUESTOVERRUN = &H8000004C
Const LINEERR_STRUCTURETOOSMALL = &H8000004D
Const LINEERR_TARGETNOTFOUND = &H8000004E
Const LINEERR_TARGETSELF = &H8000004F
Const LINEERR_UNINITIALIZED = &H80000050
Const LINEERR_USERUSERINFOTOOBIG = &H80000051
Const LINEERR_REINIT = &H80000052
Const LINEERR_ADDRESSBLOCKED = &H80000053
Const LINEERR_BILLINGREJECTED = &H80000054
Const LINEERR_INVALFEATURE = &H80000055
Const LINEERR_NOMULTIPLEINSTANCE = &H80000056


Const LINEFEATURE_DEVSPECIFIC = &H1
Const LINEFEATURE_DEVSPECIFICFEAT = &H2
Const LINEFEATURE_FORWARD = &H4
Const LINEFEATURE_MAKECALL = &H8
Const LINEFEATURE_SETMEDIACONTROL = &H10
Const LINEFEATURE_SETTERMINAL = &H20

Type lineForward

	dwForwardMode As Long

	dwCallerAddressSize As Long
	dwCallerAddressOffset As Long
    
	dwDestCountryCode As Long
	dwDestAddressSize As Long
	dwDestAddressOffset As Long

End Type

Type LINEFORWARDLIST
	dwTotalSize As Long
	dwNumEntries As Long
	ForwardList(1) As lineForward
End Type

Const LINEFORWARDMODE_UNCOND = &H1
Const LINEFORWARDMODE_UNCONDINTERNAL = &H2
Const LINEFORWARDMODE_UNCONDEXTERNAL = &H4
Const LINEFORWARDMODE_UNCONDSPECIFIC = &H8
Const LINEFORWARDMODE_BUSY = &H10
Const LINEFORWARDMODE_BUSYINTERNAL = &H20
Const LINEFORWARDMODE_BUSYEXTERNAL = &H40
Const LINEFORWARDMODE_BUSYSPECIFIC = &H80
Const LINEFORWARDMODE_NOANSW = &H100
Const LINEFORWARDMODE_NOANSWINTERNAL = &H200
Const LINEFORWARDMODE_NOANSWEXTERNAL = &H400
Const LINEFORWARDMODE_NOANSWSPECIFIC = &H800
Const LINEFORWARDMODE_BUSYNA = &H1000
Const LINEFORWARDMODE_BUSYNAINTERNAL = &H2000
Const LINEFORWARDMODE_BUSYNAEXTERNAL = &H4000
Const LINEFORWARDMODE_BUSYNASPECIFIC = &H8000
Const LINEFORWARDMODE_UNKNOWN = &H10000
Const LINEFORWARDMODE_UNAVAIL = &H20000

Const LINEGATHERTERM_BUFFERFULL = &H1
Const LINEGATHERTERM_TERMDIGIT = &H2
Const LINEGATHERTERM_FIRSTTIMEOUT = &H4
Const LINEGATHERTERM_INTERTIMEOUT = &H8
Const LINEGATHERTERM_CANCEL = &H10

Const LINEGENERATETERM_DONE = &H1
Const LINEGENERATETERM_CANCEL = &H2

Type lineGenerateTone

	dwFrequency As Long
	dwCadenceOn As Long
	dwCadenceOff As Long
	dwVolume As Long

End Type

Const LINEMAPPER = &HFFFFFFFF
Type LINEMEDIACONTROLCALLSTATE

	dwCallStates As Long
	dwMediaControl As Long

End Type

Type LINEMEDIACONTROLDIGIT

		dwDigit As Long
		dwDigitModes As Long
		dwMediaControl As Long

End Type

Type LINEMEDIACONTROLMEDIA

		dwMediaModes As Long
		dwDuration As Long
		dwMediaControl As Long

End Type

Type LINEMEDIACONTROLTONE

	dwAppSpecific As Long
	dwDuration As Long
	dwFrequency1 As Long
	dwFrequency2 As Long
	dwFrequency3 As Long
	dwMediaControl As Long

End Type

Const LINEMEDIACONTROL_NONE = &H1
Const LINEMEDIACONTROL_START = &H2
Const LINEMEDIACONTROL_RESET = &H4
Const LINEMEDIACONTROL_PAUSE = &H8
Const LINEMEDIACONTROL_RESUME = &H10
Const LINEMEDIACONTROL_RATEUP = &H20
Const LINEMEDIACONTROL_RATEDOWN = &H40
Const LINEMEDIACONTROL_RATENORMAL = &H80
Const LINEMEDIACONTROL_VOLUMEUP = &H100
Const LINEMEDIACONTROL_VOLUMEDOWN = &H200
Const LINEMEDIACONTROL_VOLUMENORMAL = &H400

Const LINEMEDIAMODE_UNKNOWN = &H2
Const LINEMEDIAMODE_INTERACTIVEVOICE = &H4
Const LINEMEDIAMODE_AUTOMATEDVOICE = &H8
Const LINEMEDIAMODE_DATAMODEM = &H10
Const LINEMEDIAMODE_G3FAX = &H20
Const LINEMEDIAMODE_TDD = &H40
Const LINEMEDIAMODE_G4FAX = &H80
Const LINEMEDIAMODE_DIGITALDATA = &H100
Const LINEMEDIAMODE_TELETEX = &H200
Const LINEMEDIAMODE_VIDEOTEX = &H400
Const LINEMEDIAMODE_TELEX = &H800
Const LINEMEDIAMODE_MIXED = &H1000
Const LINEMEDIAMODE_ADSI = &H2000
Const LINEMEDIAMODE_VOICEVIEW = &H4000

Const LAST_LINEMEDIAMODE = &H4000


Type LINEMONITORTONE

	dwAppSpecific As Long
	dwDuration As Long
	dwFrequency1 As Long
	dwFrequency2 As Long
	dwFrequency3 As Long

End Type

Const LINEPARKMODE_DIRECTED = &H1
Const LINEPARKMODE_NONDIRECTED = &H2

Const LINEREMOVEFROMCONF_NONE = &H1
Const LINEREMOVEFROMCONF_LAST = &H2
Const LINEREMOVEFROMCONF_ANY = &H3

Type LINEREQMAKECALL

    szDestAddress As String * TAPIMAXDESTADDRESSSIZE
    szAppName As String * TAPIMAXAPPNAMESIZE
    szCalledParty As String * TAPIMAXCALLEDPARTYSIZE
    szComment As String * TAPIMAXCOMMENTSIZE

End Type

Type LINEREQMEDIACALL

    hWnd As Integer
    wRequestID As Integer
    szDeviceClass As String * TAPIMAXDEVICECLASSSIZE
'    unsigned char    ucDeviceID[TAPIMAXDEVICEIDSIZE];
    ucDeviceID As String * TAPIMAXDEVICEIDSIZE
    dwSize As Long
    dwSecure As Long
    szDestAddress As String * TAPIMAXDESTADDRESSSIZE
    szAppName As String * TAPIMAXAPPNAMESIZE
    szCalledParty As String * TAPIMAXCALLEDPARTYSIZE
    szComment As String * TAPIMAXCOMMENTSIZE

End Type

Const LINEREQUESTMODE_MAKECALL = &H1
Const LINEREQUESTMODE_MEDIACALL = &H2
Const LINEREQUESTMODE_DROP = &H4

Const LAST_LINEREQUESTMODE = LINEREQUESTMODE_MEDIACALL

Const LINEROAMMODE_UNKNOWN = &H1
Const LINEROAMMODE_UNAVAIL = &H2
Const LINEROAMMODE_HOME = &H4
Const LINEROAMMODE_ROAMA = &H8
Const LINEROAMMODE_ROAMB = &H10

Const LINESPECIALINFO_NOCIRCUIT = &H1
Const LINESPECIALINFO_CUSTIRREG = &H2
Const LINESPECIALINFO_REORDER = &H4
Const LINESPECIALINFO_UNKNOWN = &H8
Const LINESPECIALINFO_UNAVAIL = &H10

Type LINETERMCAPS

	dwTermDev As Long
	dwTermModes As Long
	dwTermSharing As Long

End Type

Const LINETERMDEV_PHONE = &H1
Const LINETERMDEV_HEADSET = &H2
Const LINETERMDEV_SPEAKER = &H4

Const LINETERMMODE_BUTTONS = &H1
Const LINETERMMODE_LAMPS = &H2
Const LINETERMMODE_DISPLAY = &H4
Const LINETERMMODE_RINGER = &H8
Const LINETERMMODE_HOOKSWITCH = &H10
Const LINETERMMODE_MEDIATOLINE = &H20
Const LINETERMMODE_MEDIAFROMLINE = &H40
Const LINETERMMODE_MEDIABIDIRECT = &H80

Const LINETERMSHARING_PRIVATE = &H1
Const LINETERMSHARING_SHAREDEXCL = &H2
Const LINETERMSHARING_SHAREDCONF = &H4

Const LINETONEMODE_CUSTOM = &H1
Const LINETONEMODE_RINGBACK = &H2
Const LINETONEMODE_BUSY = &H4
Const LINETONEMODE_BEEP = &H8
Const LINETONEMODE_BILLING = &H10

Const LINETRANSFERMODE_TRANSFER = &H1
Const LINETRANSFERMODE_CONFERENCE = &H2

Type LINETRANSLATEOUTPUT

    dwTotalSize As Long
    dwNeededSize As Long
    dwUsedSize As Long

    dwDialableStringSize As Long
    dwDialableStringOffset As Long
    dwDisplayableStringSize As Long
    dwDisplayableStringOffset As Long

    dwCurrentCountry As Long
    dwDestCountry As Long
    dwTranslateResults As Long

End Type

Type LINETRANSLATECAPS

    dwTotalSize As Long
    dwNeededSize As Long
    dwUsedSize As Long

    dwNumLocations As Long
    dwLocationListSize As Long
    dwLocationListOffset As Long
    
    dwCurrentLocationID As Long
    
    dwNumCards As Long
    dwCardListSize As Long
    dwCardListOffset As Long

    dwCurrentPreferredCardID As Long

End Type

Type LINELOCATIONENTRY

    dwPermanentLocationID As Long
    dwLocationNameSize As Long
    dwLocationNameOffset As Long
    dwCountryCode As Long
    dwCityCodeSize As Long
    dwCityCodeOffset As Long
    dwPreferredCardID As Long
    dwLocalAccessCodeSize As Long
    dwLocalAccessCodeOffset As Long
    dwLongDistanceAccessCodeSize As Long
    dwLongDistanceAccessCodeOffset As Long
    dwTollPrefixListSize As Long
    dwTollPrefixListOffset As Long
    dwCountryID As Long
    dwOptions As Long
    dwCancelCallWaitingSize As Long
    dwCancelCallWaitingOffset As Long

End Type

Type LINECARDENTRY

    dwPermanentCardID As Long
    dwCardNameSize As Long
    dwCardNameOffset As Long
    dwCardNumberDigits As Long
    dwSameAreaRuleSize As Long
    dwSameAreaRuleOffset As Long
    dwLongDistanceRuleSize As Long
    dwLongDistanceRuleOffset As Long
    dwInternationalRuleSize As Long
    dwInternationalRuleOffset As Long
    dwOptions As Long

End Type

Type LINECOUNTRYLIST

    dwTotalSize As Long
    dwNeededSize As Long
    dwUsedSize As Long

    dwNumCountries As Long
    dwCountryListSize As Long
    dwCountryListOffset As Long

End Type

Type LINECOUNTRYENTRY

    dwCountryID As Long
    dwCountryCode As Long
    dwNextCountryID As Long
    dwCountryNameSize As Long
    dwCountryNameOffset As Long
    dwSameAreaRuleSize As Long
    dwSameAreaRuleOffset As Long
    dwLongDistanceRuleSize As Long
    dwLongDistanceRuleOffset As Long
    dwInternationalRuleSize As Long
    dwInternationalRuleOffset As Long

End Type

Type LINEPROVIDERLIST

    dwTotalSize As Long
    dwNeededSize As Long
    dwUsedSize As Long
    dwNumProviders As Long
    dwProviderListSize As Long
    dwProviderListOffset As Long

End Type

Type LINEPROVIDERENTRY

    dwPermanentProviderID As Long
    dwProviderFilenameSize As Long
    dwProviderFilenameOffset As Long

End Type


Const LINETOLLLISTOPTION_ADD = &H1
Const LINETOLLLISTOPTION_REMOVE = &H2

Const LINETRANSLATEOPTION_CARDOVERRIDE = &H1
Const LINETRANSLATEOPTION_CANCELCALLWAITING = &H2
Const LINETRANSLATEOPTION_FORCELOCAL = &H4
Const LINETRANSLATEOPTION_FORCELD = &H8

Const LINETRANSLATERESULT_CANONICAL = &H1
Const LINETRANSLATERESULT_INTERNATIONAL = &H2
Const LINETRANSLATERESULT_LONGDISTANCE = &H4
Const LINETRANSLATERESULT_LOCAL = &H8
Const LINETRANSLATERESULT_INTOLLLIST = &H10
Const LINETRANSLATERESULT_NOTINTOLLLIST = &H20
Const LINETRANSLATERESULT_DIALBILLING = &H40
Const LINETRANSLATERESULT_DIALQUIET = &H80
Const LINETRANSLATERESULT_DIALDIALTONE = &H100
Const LINETRANSLATERESULT_DIALPROMPT = &H200


Const LINELOCATIONOPTION_PULSEDIAL = &H1

Const LINECARDOPTION_PREDEFINED = &H1
Const LINECARDOPTION_HIDDEN = &H2


' Simple Telephony prototypes

Declare Function tapiRequestMakeCall Lib "tapi32.dll" Alias "tapiRequestMakeCall" (DestAddress As String,AppName As String,CalledParty As String,Comment As String)As Long

        Dim executeit as Long
        executeit=tapiRequestMakeCall("15619660031","$noname.exe","johngraves","You know you are calling my house don't you?")        

'Declare Function lineDial Lib "tapi32.dll" Alias "lineDial"(ByVal hCall As Integer,ByValpszDestAddress As String,dwCountryCode As Long)
'executeit=linedial(1,