Leaked source code of windows server 2003
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

192 lines
6.9 KiB

/* File: D:\WACKER\cncttapi\cncttapi.hh (Created: 10-Feb-1994)
*
* Copyright 1994 by Hilgraeve Inc. -- Monroe, MI
* All rights reserved
*
* $Revision: 13 $
* $Date: 5/15/02 4:24p $
*/
#include <unimodem.h>
typedef struct stCnctDrvPrivate *HHDRIVER;
/* --- Macros --- */
#define TAPI_VER (MAKELONG(4,1))
// Required in lineGetDevConfig calls
//
#if !defined(szUMDEVCLASS_COMM_DATAMODEM)
//
// The following define is from unimodem.h
//
#define szUMDEVCLASS_COMM_DATAMODEM TEXT("comm/datamodem")
#endif // !defined(szUMDEVCLASS_COMM_DATAMODEM)
#define DEVCLASS szUMDEVCLASS_COMM_DATAMODEM
#define REDIAL_MAX 40
// Essentially, I picked what I hope is a permanent line ID a TAPI
// service provider would never use. My odds are pretty good since
// UNIMODEM numbers them from 1. - mrw
//
#define DIRECT_COM1 0x5A2175D1
#define DIRECT_COM2 (DIRECT_COM1+1)
#define DIRECT_COM3 (DIRECT_COM1+2)
#define DIRECT_COM4 (DIRECT_COM1+3)
#define DIRECT_COMWINSOCK (DIRECT_COM1+4)
#define DIRECT_COM_DEVICE (DIRECT_COM1 - 1)
#if defined(INCL_WINSOCK)
#define MAX_IP_ADDR_LEN 128
#endif
// Trap is similar to assert except it displays the error return code.
//
#if defined(NDEBUG)
#define TRAP(x) x
#else
#define TRAP(x) tapiTrap(x, __FILE__, __LINE__)
#endif
// Connection driver handle
struct stCnctDrvPrivate
{
HCNCT hCnct; // public connection handle passed to create func
HSESSION hSession; // public session handle passed to create func
CRITICAL_SECTION cs; // critical section semaphore
int iStatus; // connection status
HLINEAPP hLineApp; // returned for lineInitialize(), main TAPI handle
HLINE hLine; // handle to line we're using from lineOpen()
HCALL hCall; // handle returned by lineMakeCall()
LONG lMakeCallId; // ID returned by lineMakeCall() used in callback
DWORD dwLineCnt; // number of available lines from lineInitialize
DWORD dwLine; // current line we're using
DWORD dwAPIVersion; // current api version
DWORD dwCountryID; // internal TAPI ID for selected country
DWORD dwCountryCode; // set in TranslateAddress()
DWORD dwPermanentLineId; // identifies the modem as saved
BOOL fMatchedPermanentLineID,
fHotPhone; // TAPI for is it Direct Connect
TCHAR achDest[(TAPIMAXDESTADDRESSSIZE/2)+1], // local portion of phone num.
achAreaCode[10],
achDefaultAreaCode[10],// As reported from TAPI
achDialableDest[TAPIMAXDESTADDRESSSIZE+1],
achDisplayableDest[TAPIMAXDESTADDRESSSIZE+1],
achCanonicalDest[TAPIMAXDESTADDRESSSIZE+1];
TCHAR achLineName[100]; // used in dialing dialog
TCHAR achComDeviceName[256]; // used with enumerated ports.
HWND hwndCnctDlg; // connection dialog handle
HWND hwndTAPIWindow; // TAPI reinit
HWND hwndPCMCIA; // valid only when PCMCIA dialog showing.
LINECALLPARAMS stCallPar; // Call params used for lineMakeCall()
BOOL fUseCCAC; // Use country code & area code flag.
unsigned int uDiscnctFlags; // Used for asychronous disconnects.
int iRedialCnt; // Counter for redials.
int fRedialOnBusy; // TRUE, we redial
int iRedialSecsRemaining; // seconds remaining to redial
#if defined(INCL_WINSOCK)
int iPort;
TCHAR achDestAddr[MAX_IP_ADDR_LEN];
#endif
#ifdef INCL_CALL_ANSWERING
int fAnswering; // Are we answering?
int fRestoreSettings; // Do we need to restore our ASCII settings?
int nSendCRLF; // Temporary storage for ASCII setting.
int nLocalEcho; // Temporary storage for ASCII setting.
int nAddLF; // Temporary storage for ASCII setting.
int nEchoplex; // Temporary storage for ASCII setting.
void *pvUnregister; // Un-registration data for CLoop callback.
#endif
BOOL fCarrierDetect; // Are we detecting loss of carrier?
};
/* --- Line id struct used to store info in combo boxes --- */
struct _stLineIds
{
DWORD dwLineId;
DWORD dwPermanentLineId;
};
typedef struct _stLineIds * PSTLINEIDS;
/* --- Function Prototypes --- */
void cnctdrvLock(const HHDRIVER hhDriver);
void cnctdrvUnlock(const HHDRIVER hhDriver);
INT_PTR CALLBACK ConfirmDlg(HWND hwnd, UINT uMsg, WPARAM wPar, LPARAM lPar);
int CplConfigDlg(const HWND hwnd, const int ordinal);
int EnumerateCountryCodes(const HHDRIVER hhDriver, const HWND hwndCB);
int EnumerateAreaCodes(const HHDRIVER hhDriver, const HWND hwndCB);
int EnumerateLines(const HHDRIVER hhDriver, const HWND hwndCB);
int EnumerateLinesNT(const HHDRIVER hhDriver, const HWND hwndCB);
long TranslateAddress(const HHDRIVER hhDriver);
INT_PTR CALLBACK DialingDlg(HWND hwnd, UINT uMsg, WPARAM wPar, LPARAM lPar);
void DialingMessage(const HHDRIVER hhDriver, const int resID);
void CALLBACK lineCallbackFunc(DWORD hDevice, DWORD dwMsg, DWORD_PTR dwCallback,
DWORD_PTR dwParm1, DWORD_PTR dwParm2, DWORD_PTR dwParm3);
void PostDisconnect(const HHDRIVER hhDriver, const unsigned int uFlags);
int Handoff(const HHDRIVER hhDriver);
void SetStatus(const HHDRIVER hhDriver, const int iStatus);
int DoLineGetCountry(const DWORD dwCountryID, const DWORD dwAPIVersion,
LPLINECOUNTRYLIST *ppcl);
int EnumerateTapiLocations(const HHDRIVER hhDriver, const HWND hwndCB,
const HWND hwndTB);
int CheckHotPhone(const HHDRIVER hhDriver, const DWORD dwLine, int *pfHotPhone);
DWORD tapiTrap(const DWORD dw, const TCHAR *file, const int line);
void EnableDialNow(const HWND hwndDlg, const int fEnable);
#if defined(DEADWOOD)
int fCountryUsesAreaCode(const DWORD dwCountryId, const DWORD dwAPIVersion);
#endif // defined(DEADWOOD)
INT_PTR CALLBACK PCMCIADlg(HWND hwnd, UINT uMsg, WPARAM wPar, LPARAM lPar);
int fIsStringEmpty(LPTSTR ach);
void EnableDial(const HWND hwndDlg, const BOOL fEnable);
int cncttapiGetCOMSettings( const DWORD dwLineId, LPTSTR pachStr, const size_t cb );
int cncttapiGetLineConfig( const DWORD dwLineId, VOID** ppvs );
int cncttapiSetLineConfig( const DWORD dwLineId, const HCOM hCom );
#if defined(INCL_WINSOCK)
BOOL CALLBACK cnctwsNewPhoneDlg(HWND hwnd, UINT uMsg, WPARAM wPar, LPARAM lPar);
#endif
/* --- Driver entry points --- */
HDRIVER WINAPI cnctdrvCreate(const HCNCT hCnct, const HSESSION hSession);
int WINAPI cnctdrvDestroy(const HHDRIVER hhDriver);
int WINAPI cnctdrvInit(const HHDRIVER hhDriver);
int WINAPI cnctdrvLoad(const HHDRIVER hhDriver);
int WINAPI cnctdrvSave(const HHDRIVER hhDriver);
int WINAPI cnctdrvSetDestination(const HHDRIVER hhDriver, TCHAR * const ach,
const size_t cb);
int WINAPI cnctdrvQueryStatus(const HHDRIVER hhDriver);
int WINAPI cnctdrvConnect(const HHDRIVER hhDriver, const unsigned int uFlags);
int WINAPI cnctdrvDisconnect(const HHDRIVER hhDriver, const unsigned int uFlags);
int WINAPI cnctdrvComEvent(const HHDRIVER hhDriver, const enum COM_EVENTS event);
int cnctdrvGetComSettingsString(const HHDRIVER hhDriver, LPTSTR pachStr,
const size_t cb);