//**************************************************************************** // // Microsoft NT Remote Access Service // // Copyright (C) 1992-93 Microsft Corporation. All rights reserved. // // Filename: mxspriv.h // // Revision History // // Jun 5, 1992 J. Perry Hannah Created // // // Description: This file contains structure and constant definitions // and API prototypes for RASMXS.DLL. This file is used // used only by RASMXS.DLL source files, and is not public // in any way. // //**************************************************************************** #ifndef _MXSPRIV_ #define _MXSPRIV_ //* Defines **************************************************************** // #define INITIAL_PARAMS 13 //Inital buffer size in params #define MAX_LEN_STR_FROM_NUMBER 10 #define MIN_LINK_SPEED 2400 #define LOOP_TXT "LOOP" #define SERIAL_DLL_FILENAME "RASSER.DLL" #define RAS_PATH "\\RAS\\" #define PAD_INF_FILENAME "PAD.INF" #define MODEM_INF_FILENAME "MODEM.INF" #define SWITCH_INF_FILENAME "SWITCH.INF" #define LOG_FILENAME "DEVICE.LOG" #define ALL_MACROS 0 //Used by MacroCount() #define BINARY_MACROS 1 //Used by MacroCount() #define ON_SUFFIX 1 #define OFF_SUFFIX 2 #define NOT_BINARY_MACRO FALSE #define WAITFORCOMPLETION TRUE #define INVALID_INDEX 0xffffffff #define MODEM_RETRIES 3 #define NO_RESPONSE_DELAY 2000 //Time to wait in mS //ReadFile time outs in mS #define TO_WRITE 2000 //Write timeout #define TO_ECHO 2000 //WaitForEcho #define TO_FIRSTCHARAFTERECHO 120000 //WaitForFirstChar following echo #define TO_FIRSTCHARNOECHO 10000 //WaitForFirstChar when no echo #define TO_PARTIALRESPONSE 25000 //WaitForFirstChar of 2nd part #define TO_RCV_INTERVAL 500 //ReceiveString #define TO_RCV_CONSTANT 3000 //ReceiveString #define MXS_COMPRESSION_OFF_KEY MXS_COMPRESSION_KEY##""##MXS_OFF_SUFX #define MXS_COMPRESSION_ON_KEY MXS_COMPRESSION_KEY##""##MXS_ON_SUFX #define MXS_HDWFLOWCONTROL_OFF_KEY MXS_HDWFLOWCONTROL_KEY##""##MXS_OFF_SUFX #define MXS_HDWFLOWCONTROL_ON_KEY MXS_HDWFLOWCONTROL_KEY##""##MXS_ON_SUFX #define MXS_PROTOCOL_OFF_KEY MXS_PROTOCOL_KEY##""##MXS_OFF_SUFX #define MXS_PROTOCOL_ON_KEY MXS_PROTOCOL_KEY##""##MXS_ON_SUFX #define MXS_SPEAKER_OFF_KEY MXS_SPEAKER_KEY##""##MXS_OFF_SUFX #define MXS_SPEAKER_ON_KEY MXS_SPEAKER_KEY##""##MXS_ON_SUFX #define MXS_AUTODIAL_OFF_KEY MXS_AUTODIAL_KEY##""##MXS_OFF_SUFX #define MXS_AUTODIAL_ON_KEY MXS_AUTODIAL_KEY##""##MXS_ON_SUFX #define RASMAN_REGISTRY_PATH "System\\CurrentControlSet\\Services\\Rasman\\Parameters" #define RASMAN_LOGGING_VALUE "Logging" //* Macros ***************************************************************** // #define ATTRIBCPY(DEST,SRC) (((ATTRIB_ENABLED)&(SRC))?\ ((DEST)|=(ATTRIB_ENABLED)):\ ((DEST)&=(~ATTRIB_ENABLED))) #define XOR(A,B) (((A)||(B))&&!((A)&&(B))) // Note: The following macro assumes that CreateAttributes() has already // been called to set attribute bits. #define ISUNARYMACRO(P) (!((ATTRIB_VARIABLE|ATTRIB_BINARYMACRO)&(P))) #define STRICMP _stricmp #ifdef DEBUG #define DebugPrintf(_args_) DbgPrntf _args_ #define DebugString(_args_) DbgStr _args_ #else #define DebugPrintf(_args_) #define DebugString(_args_) #endif #ifdef DBGCON #define ConsolePrintf(_args_) ConPrintf _args_ #else #define ConsolePrintf(_args_) #endif //* Data Structures ******************************************************** // typedef struct DEVICE_CB DEVICE_CB; struct DEVICE_CB // Device Control Block { DEVICE_CB *pNextDeviceCB; HANDLE hPort; TCHAR szDeviceName[MAX_DEVICE_NAME+1]; TCHAR szDeviceType[MAX_DEVICETYPE_NAME]; DEVICETYPE eDeviceType; RASMAN_DEVICEINFO *pInfoTable; MACROXLATIONTABLE *pMacros; HRASFILE hInfFile; TCHAR *pszResponseStart; // Start of response following echo DWORD cbRead; // Bytes read per FileRead DWORD cbTotal; // Cumulative bytes read & kept HANDLE hNotifier; // Event signaled when async I/O finished DWORD dCmdLen; // Indicates length of echo string BOOL bResponseExpected; // Some commands have no responses BOOL fPartialResponse; BOOL bErrorControlOn; DWORD dwRetries; // Num retries on modem hardware errors NEXTACTION eDevNextAction; // DeviceStateMachine() State CMDTYPE eCmdType; // Used by DeviceStateMachine() CMDTYPE eNextCmdType; // Used by DeviceStateMachine() BOOL fEndOfSection; // Used by DeviceStateMachine() RCVSTATE eRcvState; // ReceiveStateMachine() State RAS_OVERLAPPED Overlapped; // Struct used by Win32 async file I/O TCHAR szPortBps[MAX_LEN_STR_FROM_NUMBER]; TCHAR szCommand[MAX_CMD_BUF_LEN]; TCHAR szResponse[MAX_RCV_BUF_LEN]; TCHAR szPortName[MAX_PORT_NAME + 1]; }; typedef struct ERROR_ELEM ERROR_ELEM; struct ERROR_ELEM { TCHAR szKey[MAX_PARAM_KEY_SIZE]; DWORD dwErrorCode; }; typedef struct RESPSECTION RESPSECTION ; struct RESPSECTION { HRASFILE Handle ; WORD UseCount ; HANDLE Mutex ; } ; struct SavedSections { struct SavedSections* Next ; TCHAR FileName[MAX_PATH] ; TCHAR SectionName[MAX_DEVICE_NAME+1] ; HRASFILE hFile ; BOOL InUse ; } ; typedef struct SavedSections SavedSections ; //* Internal Prototypes **************************************************** // //* From mxsutils.c -------------------------------------------------------- // #ifdef DEBUG void DbgPrntf(const char * format, ...); void DbgStr(char Str[], DWORD StrLen); #endif #ifdef DBGCON VOID ConPrintf ( char *Format, ... ); #endif DWORD AddDeviceToList(DEVICE_CB **ppDeviceList, HANDLE hIOPort, LPTSTR lpDeviceType, LPTSTR lpDeviceName, DEVICE_CB **ppDevice); DWORD AddInternalMacros(DEVICE_CB *pDev, RASMAN_DEVICEINFO *pDI); WORD BinarySuffix(TCHAR *pch); DWORD BuildOutputTable(DEVICE_CB *pDevice, BYTE *pbInfo, DWORD *pdwSize); BOOL DeviceAttachedToPort(RASMAN_PORTINFO *pPortInfo, char *pszDeviceType, char *pszDeviceName); DWORD ReceiveStateMachine(DEVICE_CB *pDevice, HANDLE hIOPort); BOOL CheckForOverruns(HANDLE hIOPort); char* CmdTypeToStr(char *pszStr, CMDTYPE eCmdType); DWORD ConnectListen(HANDLE hIOPort, char *pszDeviceType, char *pszDeviceName, CMDTYPE eCmd); BOOL CoreMacroNameMatch(LPTSTR lpszShortName, LPTSTR lpszFullName); DWORD CreateAttributes(DEVICE_CB *pDevice); void CreateDefaultOffString(DEVICE_CB *pDev, char *pszDefaultOff); DWORD CreateInfoTable(DEVICE_CB *pDevice); DEVICETYPE DeviceTypeStrToEnum(LPTSTR lpszDeviceType); DEVICE_CB* FindDeviceInList(DEVICE_CB *pDev, HANDLE hIOPort, TCHAR *pszDeviceType, TCHAR *pszDeviceName); DEVICE_CB* FindPortInList(DEVICE_CB *pDeviceList, HANDLE hIOPort, DEVICE_CB **pPrevDev); DWORD GetCoreMacroName(LPTSTR lpszFullName, LPTSTR lpszCoreName); DWORD GetDeviceCB(HANDLE hIOPort, char *pszDeviceType, char *pszDeviceName, DEVICE_CB **ppDev); void GetInfFileName(LPTSTR pszDeviceType, LPTSTR pszFileName, DWORD dwFileNameLen); void GetMem(DWORD dSize, BYTE **ppMem); void GetNextParameter(TCHAR **ppch, TCHAR *pchEnd); BOOL GetPortDefaultOff(RASMAN_PORTINFO *pPortInfo, TCHAR **lpszValue); void GetPcbString(RASMAN_PORTINFO *pPortInfo, char *pszPcbKey, char *pszDest); void InitLog(void); void InitParameterStr(TCHAR *pch, TCHAR **ppchEnd); BOOL IsBinaryMacro(TCHAR *pch); BOOL IsLoggingOn(void); BOOL IsUnaryMacro(RAS_PARAMS Param); BOOL IsVariable(RAS_PARAMS Param); DWORD LoadRasserDll(PortGetInfo_t *pPortGetInfo, PortSetInfo_t *pPortSetInfo); void LogString(DEVICE_CB *pDev, TCHAR *pszLabel, TCHAR *psString, DWORD dwStringLen); WORD MacroCount(RASMAN_DEVICEINFO *pInfo, WORD wType); DWORD UpdateInfoTable(DEVICE_CB *pDevice, RASMAN_DEVICEINFO *pNewInfo); DWORD OpenResponseSection (PCHAR) ; // VOID CloseResponseSection () ; BOOL FindOpenDevSection (PTCH, PTCH, HRASFILE *) ; VOID AddOpenDevSection (PTCH, PTCH, HRASFILE) ; VOID CloseOpenDevSection (HRASFILE) ; //* From mxsstate.c -------------------------------------------------------- // DWORD BuildMacroXlationTable(DEVICE_CB *pDevice); DWORD CheckBpsMacros(DEVICE_CB *pDev); DWORD CheckResponse(DEVICE_CB *pDev, LPTSTR szKey); DWORD CommWait(DEVICE_CB *pDevice, HANDLE hIOPort, DWORD dwPause); DWORD DeviceStateMachine(DEVICE_CB *pDevice, HANDLE hIOPort); UINT FindTableEntry(RASMAN_DEVICEINFO *pTable, TCHAR *pszKey); DWORD MapKeyToErrorCode(TCHAR *pszKey); DWORD PortSetStringInfo(HANDLE hIOPort, char *pszKey, char *psStr, DWORD sStrLen); DWORD PutInMessage(DEVICE_CB *pDevice, LPTSTR lpszStr, DWORD dwStrLen); BOOL ReceiveString(DEVICE_CB *pDevice, HANDLE hIOPort); DWORD ResetBPS(DEVICE_CB *pDev); DWORD ModemResponseLen(DEVICE_CB *pDev); BOOL WaitForFirstChar(DEVICE_CB *pDevice, HANDLE hIOPort); BOOL WaitForEcho(DEVICE_CB *pDevice, HANDLE hIOPort, DWORD cbEcho); #endif // _MXSPRIV_