|
|
/*++
Copyright (c) 1995-1996 Microsoft Corporation
Module Name:
esp.h
Abstract:
This module contains
Author:
Dan Knudson (DanKn) 18-Sep-1995
Revision History:
Notes:
--*/
#include "windows.h"
#include "intrface.h"
#include "tapi.h"
#include "tspi.h"
#include "espidl.h"
#define DRVLINE_KEY ((DWORD) 'LPSE')
#define DRVPHONE_KEY ((DWORD) 'PPSE')
#define DRVCALL_KEY ((DWORD) 'CPSE')
#define INVAL_KEY ((DWORD) 'XPSE')
#define SYNC 0
#define ASYNC 1
#define LINE_ICON 1
#define PHONE_ICON 2
#define IDD_DIALOG1 3
#define IDC_LIST1 1001
#define IDC_COMBO1 1002
#define IDC_LIST2 1003
#define MAX_STRING_PARAM_SIZE 32
#define PT_DWORD 1
#define PT_FLAGS 2
#define PT_STRING 3
#define PT_ORDINAL 4
#define DEF_NUM_ASYNC_REQUESTS_IN_QUEUE 256
#define DEF_NUM_EXTRA_LOOKUP_ENTRIES 32
#define MAX_VAR_DATA_SIZE 1024
#define MAX_NUM_COMPLETION_MESSAGES 100
#define PHONE_DISPLAY_SIZE_IN_CHARS 32
#define PHONE_DISPLAY_SIZE_IN_BYTES (PHONE_DISPLAY_SIZE_IN_CHARS * sizeof (WCHAR))
#define SANITYCHECKKEYWORD 0x11223344
#define AllAddrCaps1_0 \
(LINEADDRCAPFLAGS_FWDNUMRINGS | \ LINEADDRCAPFLAGS_PICKUPGROUPID | \ LINEADDRCAPFLAGS_SECURE | \ LINEADDRCAPFLAGS_BLOCKIDDEFAULT | \ LINEADDRCAPFLAGS_BLOCKIDOVERRIDE | \ LINEADDRCAPFLAGS_DIALED | \ LINEADDRCAPFLAGS_ORIGOFFHOOK | \ LINEADDRCAPFLAGS_DESTOFFHOOK | \ LINEADDRCAPFLAGS_FWDCONSULT | \ LINEADDRCAPFLAGS_SETUPCONFNULL | \ LINEADDRCAPFLAGS_AUTORECONNECT | \ LINEADDRCAPFLAGS_COMPLETIONID | \ LINEADDRCAPFLAGS_TRANSFERHELD | \ LINEADDRCAPFLAGS_TRANSFERMAKE | \ LINEADDRCAPFLAGS_CONFERENCEHELD | \ LINEADDRCAPFLAGS_CONFERENCEMAKE | \ LINEADDRCAPFLAGS_PARTIALDIAL | \ LINEADDRCAPFLAGS_FWDSTATUSVALID | \ LINEADDRCAPFLAGS_FWDINTEXTADDR | \ LINEADDRCAPFLAGS_FWDBUSYNAADDR | \ LINEADDRCAPFLAGS_ACCEPTTOALERT | \ LINEADDRCAPFLAGS_CONFDROP | \ LINEADDRCAPFLAGS_PICKUPCALLWAIT)
#define AllAddrCaps2_0 \
(AllAddrCaps1_0 | \ LINEADDRCAPFLAGS_PREDICTIVEDIALER | \ LINEADDRCAPFLAGS_QUEUE | \ LINEADDRCAPFLAGS_ROUTEPOINT | \ LINEADDRCAPFLAGS_HOLDMAKESNEW | \ LINEADDRCAPFLAGS_NOINTERNALCALLS | \ LINEADDRCAPFLAGS_NOEXTERNALCALLS | \ LINEADDRCAPFLAGS_SETCALLINGID)
#define AllAddrFeatures1_0 \
(LINEADDRFEATURE_FORWARD | \ LINEADDRFEATURE_MAKECALL | \ LINEADDRFEATURE_PICKUP | \ LINEADDRFEATURE_SETMEDIACONTROL | \ LINEADDRFEATURE_SETTERMINAL | \ LINEADDRFEATURE_SETUPCONF | \ LINEADDRFEATURE_UNCOMPLETECALL | \ LINEADDRFEATURE_UNPARK)
#define AllAddrFeatures2_0 \
(AllAddrFeatures1_0 | \ LINEADDRFEATURE_PICKUPHELD | \ LINEADDRFEATURE_PICKUPGROUP | \ LINEADDRFEATURE_PICKUPDIRECT | \ LINEADDRFEATURE_PICKUPWAITING | \ LINEADDRFEATURE_FORWARDFWD | \ LINEADDRFEATURE_FORWARDDND)
#define AllBearerModes1_0 \
(LINEBEARERMODE_VOICE | \ LINEBEARERMODE_SPEECH | \ LINEBEARERMODE_MULTIUSE | \ LINEBEARERMODE_DATA | \ LINEBEARERMODE_ALTSPEECHDATA | \ LINEBEARERMODE_NONCALLSIGNALING)
#define AllBearerModes1_4 \
(AllBearerModes1_0 | \ LINEBEARERMODE_PASSTHROUGH)
#define AllBearerModes2_0 \
(AllBearerModes1_4 | \ LINEBEARERMODE_RESTRICTEDDATA)
#define AllCallFeatures1_0 \
(LINECALLFEATURE_ACCEPT | \ LINECALLFEATURE_ADDTOCONF | \ LINECALLFEATURE_ANSWER | \ LINECALLFEATURE_BLINDTRANSFER | \ LINECALLFEATURE_COMPLETECALL | \ LINECALLFEATURE_COMPLETETRANSF | \ LINECALLFEATURE_DIAL | \ LINECALLFEATURE_DROP | \ LINECALLFEATURE_GATHERDIGITS | \ LINECALLFEATURE_GENERATEDIGITS | \ LINECALLFEATURE_GENERATETONE | \ LINECALLFEATURE_HOLD | \ LINECALLFEATURE_MONITORDIGITS | \ LINECALLFEATURE_MONITORMEDIA | \ LINECALLFEATURE_MONITORTONES | \ LINECALLFEATURE_PARK | \ LINECALLFEATURE_PREPAREADDCONF | \ LINECALLFEATURE_REDIRECT | \ LINECALLFEATURE_REMOVEFROMCONF | \ LINECALLFEATURE_SECURECALL | \ LINECALLFEATURE_SENDUSERUSER | \ LINECALLFEATURE_SETCALLPARAMS | \ LINECALLFEATURE_SETMEDIACONTROL | \ LINECALLFEATURE_SETTERMINAL | \ LINECALLFEATURE_SETUPCONF | \ LINECALLFEATURE_SETUPTRANSFER | \ LINECALLFEATURE_SWAPHOLD | \ LINECALLFEATURE_UNHOLD)
#define AllCallFeatures1_4 \
(AllCallFeatures1_0 | \ LINECALLFEATURE_RELEASEUSERUSERINFO)
#define AllCallFeatures2_0 \
(AllCallFeatures1_4 | \ LINECALLFEATURE_SETTREATMENT | \ LINECALLFEATURE_SETQOS | \ LINECALLFEATURE_SETCALLDATA)
#define AllCallFeaturesTwo \
(LINECALLFEATURE2_NOHOLDCONFERENCE | \ LINECALLFEATURE2_COMPLCAMPON | \ LINECALLFEATURE2_COMPLCALLBACK | \ LINECALLFEATURE2_COMPLINTRUDE | \ LINECALLFEATURE2_COMPLMESSAGE | \ LINECALLFEATURE2_TRANSFERNORM | \ LINECALLFEATURE2_TRANSFERCONF | \ LINECALLFEATURE2_PARKDIRECT | \ LINECALLFEATURE2_PARKNONDIRECT)
// LINECALLFEATURE2_ONESTEPTRANSFER | \
#define AllLineFeatures1_0 \
(LINEFEATURE_DEVSPECIFIC | \ LINEFEATURE_DEVSPECIFICFEAT | \ LINEFEATURE_FORWARD | \ LINEFEATURE_MAKECALL | \ LINEFEATURE_SETMEDIACONTROL | \ LINEFEATURE_SETTERMINAL)
#define AllLineFeatures2_0 \
(AllLineFeatures1_0 | \ LINEFEATURE_SETDEVSTATUS | \ LINEFEATURE_FORWARDFWD | \ LINEFEATURE_FORWARDDND)
#define AllMediaModes1_0 \
(LINEMEDIAMODE_UNKNOWN | \ LINEMEDIAMODE_INTERACTIVEVOICE | \ LINEMEDIAMODE_AUTOMATEDVOICE | \ LINEMEDIAMODE_DATAMODEM | \ LINEMEDIAMODE_G3FAX | \ LINEMEDIAMODE_TDD | \ LINEMEDIAMODE_G4FAX | \ LINEMEDIAMODE_DIGITALDATA | \ LINEMEDIAMODE_TELETEX | \ LINEMEDIAMODE_VIDEOTEX | \ LINEMEDIAMODE_TELEX | \ LINEMEDIAMODE_MIXED | \ LINEMEDIAMODE_ADSI)
#define AllMediaModes1_4 \
(AllMediaModes1_0 | \ LINEMEDIAMODE_VOICEVIEW)
#define AllMediaModes2_1 \
(AllMediaModes1_4 | \ LINEMEDIAMODE_VIDEO)
#define AllHookSwitchDevs \
(PHONEHOOKSWITCHDEV_HANDSET | \ PHONEHOOKSWITCHDEV_SPEAKER | \ PHONEHOOKSWITCHDEV_HEADSET)
#define AllHookSwitchModes \
(PHONEHOOKSWITCHMODE_ONHOOK | \ PHONEHOOKSWITCHMODE_MIC | \ PHONEHOOKSWITCHMODE_SPEAKER | \ PHONEHOOKSWITCHMODE_MICSPEAKER | \ PHONEHOOKSWITCHMODE_UNKNOWN)
#define AllPhoneFeatures \
(PHONEFEATURE_GETBUTTONINFO | \ PHONEFEATURE_GETDATA | \ PHONEFEATURE_GETDISPLAY | \ PHONEFEATURE_GETGAINHANDSET | \ PHONEFEATURE_GETGAINSPEAKER | \ PHONEFEATURE_GETGAINHEADSET | \ PHONEFEATURE_GETHOOKSWITCHHANDSET | \ PHONEFEATURE_GETHOOKSWITCHSPEAKER | \ PHONEFEATURE_GETHOOKSWITCHHEADSET | \ PHONEFEATURE_GETLAMP | \ PHONEFEATURE_GETRING | \ PHONEFEATURE_GETVOLUMEHANDSET | \ PHONEFEATURE_GETVOLUMESPEAKER | \ PHONEFEATURE_GETVOLUMEHEADSET | \ PHONEFEATURE_SETBUTTONINFO | \ PHONEFEATURE_SETDATA | \ PHONEFEATURE_SETDISPLAY | \ PHONEFEATURE_SETGAINHANDSET | \ PHONEFEATURE_SETGAINSPEAKER | \ PHONEFEATURE_SETGAINHEADSET | \ PHONEFEATURE_SETHOOKSWITCHHANDSET | \ PHONEFEATURE_SETHOOKSWITCHSPEAKER | \ PHONEFEATURE_SETHOOKSWITCHHEADSET | \ PHONEFEATURE_SETLAMP | \ PHONEFEATURE_SETRING | \ PHONEFEATURE_SETVOLUMEHANDSET | \ PHONEFEATURE_SETVOLUMESPEAKER | \ PHONEFEATURE_SETVOLUMEHEADSET)
typedef struct _DRVCALL { DWORD dwKey; LPVOID pLine; HTAPICALL htCall; DWORD dwAddressID;
DWORD dwMediaMode; DWORD dwBearerMode; DWORD dwMinRate; DWORD dwMaxRate;
LINEDIALPARAMS DialParams;
DWORD dwTreatment; DWORD dwCallState; DWORD dwCallStateMode; DWORD dwAppSpecific;
DWORD dwSendingFlowspecSize; LPVOID pSendingFlowspec; DWORD dwReceivingFlowspecSize; LPVOID pReceivingFlowspec;
DWORD dwCallDataSize; LPVOID pCallData; struct _DRVCALL *pPrev; struct _DRVCALL *pNext;
struct _DRVCALL *pConfParent; struct _DRVCALL *pNextConfChild; struct _DRVCALL *pDestCall; DWORD bConnectedToDestCall;
DWORD dwCallInstance; DWORD dwGatherDigitsEndToEndID; DWORD dwGenerateDigitsEndToEndID; DWORD dwGenerateToneEndToEndID;
DWORD dwMonitorToneListID; DWORD dwCallID; DWORD dwRelatedCallID; DWORD dwAddressType;
} DRVCALL, *PDRVCALL;
typedef struct _DRVADDRESS { DWORD dwNumCalls; PDRVCALL pCalls;
} DRVADDRESS, *PDRVADDRESS;
typedef struct _DRVLINE { DWORD dwDeviceID; HTAPILINE htLine; DWORD dwMediaModes; DRVADDRESS aAddrs[1]; DWORD dwMSGWAITFlag; //smarandb added this field to test winseqfe bug #23974
} DRVLINE, *PDRVLINE;
typedef struct _DRVLINETABLE { DWORD dwNumTotalEntries; DWORD dwNumUsedEntries; struct _DRVLINETABLE *pNext; DRVLINE aLines[1];
} DRVLINETABLE, *PDRVLINETABLE;
typedef struct _DRVPHONE { DWORD dwDeviceID; HTAPIPHONE htPhone; DWORD dwHandsetGain; DWORD dwSpeakerGain;
DWORD dwHeadsetGain; DWORD dwHandsetHookSwitchMode; DWORD dwSpeakerHookSwitchMode; DWORD dwHeadsetHookSwitchMode;
DWORD dwHandsetVolume; DWORD dwSpeakerVolume; DWORD dwHeadsetVolume; DWORD dwRingMode;
DWORD dwRingVolume; DWORD dwLampMode; DWORD dwDataSize; LPVOID pData;
LPPHONEBUTTONINFO pButtonInfo; WCHAR *pDisplay;
} DRVPHONE, *PDRVPHONE;
typedef struct _DRVPHONETABLE { DWORD dwNumTotalEntries; DWORD dwNumUsedEntries; struct _DRVPHONETABLE *pNext; DRVPHONE aPhones[1];
} DRVPHONETABLE, *PDRVPHONETABLE;
typedef struct _ASYNC_REQUEST_INFO { FARPROC pfnPostProcessProc; DWORD dwRequestID; LONG lResult; ULONG_PTR dwParam1;
ULONG_PTR dwParam2; ULONG_PTR dwParam3; ULONG_PTR dwParam4; ULONG_PTR dwParam5;
ULONG_PTR dwParam6; ULONG_PTR dwParam7; ULONG_PTR dwParam8; char *pszFuncName;
} ASYNC_REQUEST_INFO, far *PASYNC_REQUEST_INFO;
typedef struct _ESPGLOBALS { DWORD dwSanityCheckKeyword0;
DWORD dwDebugOptions; DWORD dwCompletionMode; DWORD dwNumLines; DWORD dwNumAddressesPerLine;
DWORD dwNumCallsPerAddress; DWORD dwNumPhones; DWORD dwSPIVersion; CRITICAL_SECTION CallListCritSec;
CRITICAL_SECTION PhoneCritSec; HICON hIconLine; HICON hIconPhone; LINEEVENT pfnLineEvent;
PHONEEVENT pfnPhoneEvent; ASYNC_COMPLETION pfnCompletion; HPROVIDER hProvider; DWORD dwPermanentProviderID;
DWORD dwLineDeviceIDBase; DWORD dwPhoneDeviceIDBase; DWORD dwInitialNumLines; DWORD dwInitialNumPhones;
DWORD dwSanityCheckKeyword1;
PDRVLINETABLE pLines; PDRVPHONETABLE pPhones;
DWORD dwSanityCheckKeyword2;
BOOL bProviderShutdown; HANDLE hAsyncEventQueueServiceThread;
HANDLE hAsyncEventsPendingEvent; CRITICAL_SECTION AsyncEventQueueCritSec; DWORD dwNumTotalQueueEntries; DWORD dwNumUsedQueueEntries;
PASYNC_REQUEST_INFO *pAsyncRequestQueue; PASYNC_REQUEST_INFO *pAsyncRequestQueueIn; PASYNC_REQUEST_INFO *pAsyncRequestQueueOut; CRITICAL_SECTION DebugBufferCritSec;
DWORD dwDebugBufferTotalSize; DWORD dwDebugBufferUsedSize; char *pDebugBuffer; char *pDebugBufferIn;
char *pDebugBufferOut; CRITICAL_SECTION EventBufferCritSec; DWORD dwEventBufferTotalSize; DWORD dwEventBufferUsedSize;
char *pEventBuffer; char *pEventBufferIn; char *pEventBufferOut;
DWORD dwSanityCheckKeyword3; } ESPGLOBALS, *PESPGLOBALS;
typedef struct _LOOKUP { DWORD dwVal; char *lpszVal;
} LOOKUP, *PLOOKUP;
typedef void (FAR PASCAL *POSTPROCESSPROC)(PASYNC_REQUEST_INFO, BOOL);
typedef struct _FUNC_PARAM { char *lpszVal; ULONG_PTR dwVal; PLOOKUP pLookup;
} FUNC_PARAM, *PFUNC_PARAM;
typedef struct _FUNC_INFO { char *pszFuncName; DWORD bAsync; DWORD dwNumParams; PFUNC_PARAM aParams;
POSTPROCESSPROC pfnPostProcessProc; PASYNC_REQUEST_INFO pAsyncReqInfo; LONG lResult;
} FUNC_INFO, *PFUNC_INFO;
typedef struct _EVENT_PARAM { char far *szName;
DWORD dwType;
ULONG_PTR dwValue;
union { PLOOKUP pLookup;
char far *buf;
LPVOID ptr;
ULONG_PTR dwDefValue;
};
} EVENT_PARAM, far *PEVENT_PARAM;
typedef struct _EVENT_PARAM_HEADER { DWORD dwNumParams;
LPSTR pszDlgTitle;
DWORD dwEventType;
PEVENT_PARAM aParams;
} EVENT_PARAM_HEADER, far *PEVENT_PARAM_HEADER;
#if DBG
#define DBGOUT(arg) DbgPrt arg
VOID DbgPrt( IN DWORD dwDbgLevel, IN PUCHAR DbgMessage, IN ... );
DWORD gdwDebugLevel;
#else
#define DBGOUT(arg)
#endif
BOOL Prolog( PFUNC_INFO pInfo );
LONG Epilog( PFUNC_INFO pInfo );
void PASCAL DoCompletion( PASYNC_REQUEST_INFO pAsyncRequestInfo, BOOL bAsync );
LONG PASCAL SetCallState( PDRVCALL pCall, DWORD dwExpectedCallInstance, DWORD dwValidCurrentStates, DWORD dwNewCallState, ULONG_PTR dwNewCallStateMode, BOOL bSendStateMsgToExe );
void PASCAL WriteEventBuffer( ULONG_PTR Param1, ULONG_PTR Param2, ULONG_PTR Param3, ULONG_PTR Param4, ULONG_PTR Param5, ULONG_PTR Param6 );
LPVOID DrvAlloc( size_t numBytes );
void DrvFree( LPVOID p );
LONG PASCAL AllocCall( PDRVLINE pLine, HTAPICALL htCall, LPLINECALLPARAMS pCallParams, PDRVCALL *ppCall );
void PASCAL FreeCall( PDRVCALL pCall, DWORD dwExpectedCallInstance );
PDRVLINE PASCAL GetLineFromID( DWORD dwDeviceID );
PDRVPHONE PASCAL GetPhoneFromID( DWORD dwDeviceID );
BOOL WINAPI _CRT_INIT( HINSTANCE hDLL, DWORD dwReason, LPVOID lpReserved );
VOID ShowStr( BOOL bAlertApp, char *format, ... );
void PASCAL SendLineEvent( PDRVLINE pLine, PDRVCALL pCall, DWORD dwMsg, ULONG_PTR Param1, ULONG_PTR Param2, ULONG_PTR Param3 );
void PASCAL SendPhoneEvent( PDRVPHONE pPhone, DWORD dwMsg, ULONG_PTR Param1, ULONG_PTR Param2, ULONG_PTR Param3 );
|