windows-nt/Source/XPSP1/NT/shell/osshell/accesory/terminal/connect.h
2020-09-26 16:20:57 +08:00

428 lines
16 KiB
C

/* connect.h */
/*************************************************************************
* If defined, the following flags inhibit definition
* of the indicated items.
*
* JUST COPY AND PASTE THE DEFINES THAT YOU NEED
*************************************************************************
#define NOORDINALS TRUE
#define NOPROTOTYPES TRUE
#define NODLLPROTOTYPES TRUE
#define NODCPROTOTYPES TRUE
#define NOCONSTANTS TRUE
#define NOCONNECTORS TRUE
#define NOGLOBALS TRUE
#define NO TRUE
*************************************************************************
*/
#ifndef MINCONSTR /* seh nova 005 */
#define MINCONSTR 64 /* seh nova 005 */
#endif
#ifndef MINRESSTR
#define MINRESSTR 32 /* seh nova 005 this must match dynacomm.h */
#endif
#ifndef NOORDINALS
/* define ordinal values for all exported functions */
#define ORD_GETDLLTYPE 959
#define ORD_GETCONNECTCAPS 962
#define ORD_SETPARAMETERS 800
#define ORD_GETEXTENDEDINFO 801
#define ORD_RESETCONNECTOR 802
#define ORD_EXITCONNECTOR 803
#define ORD_CONNECTCONNECTOR 804
#define ORD_READCONNECTOR 805
#define ORD_WRITECONNECTOR 806
#define ORD_COMMANDCONNECTOR 807
#define ORD_DISCONNECTCONNECTOR 808
#define ORD_SETUPCONNECTOR 809
#endif /* NOORDINALS */
#ifndef NOCONSTANTS
/* constants defined here (listed by function that uses them */
/* GetDLLType */
#define GDT_SHOW_EGO TRUE
#define GDT_QUIET FALSE
#define DC_CONNECTOR 4257
/* GetConnectCaps, SetParameters */
#define SET_PARAMETERS 0x0001
#define SP_GETCAPS 0x0001
#define SP_QUIET 0x0000
#define SP_SHOW 0x0002
#define SP_GETDEFAULT 0x0004
#define SP_SETDEFAULT 0x0008
#ifdef ORGCODE
#define SP_PARITY 0x0001
#define SP_BAUD 0x0002
#define SP_DATABITS 0x0004
#define SP_STOPBITS 0x0008
#define SP_HANDSHAKING 0x0010
#define SP_PARITY_CHECK 0x0020
#define SP_CARRIER_DETECT 0x0040
#endif
/* available baud rates */
#define GP_AVAIL_BAUD 0x0002
/* values can be.... */
#ifdef ORGCODE
#define BAUD_075 0x0001
#define BAUD_110 0x0002
#define BAUD_300 0x0004
#define BAUD_600 0x0008
#define BAUD_120 0x0010
#define BAUD_240 0x0020
#define BAUD_480 0x0040
#define BAUD_960 0x0080
#define BAUD_192 0x0100
#else
#define BAUD_120 BAUD_1200
#define BAUD_240 BAUD_2400
#define BAUD_480 BAUD_4800
#define BAUD_960 BAUD_9600
#define BAUD_192 BAUD_19200
#endif
#ifdef ORGCODE
#define BAUD_USER 0x0200
#endif
#define BAUD_ALL (BAUD_075+BAUD_110+BAUD_300+BAUD_600+BAUD_120+BAUD_240+BAUD_480+BAUD_960+BAUD_192+BAUD_USER)
#define BAUD_OFFSET 0x1000 /* tge used for resources */
/* available data bits */
#define GP_AVAIL_DATABITS 0x0004
/* values can be.... */
#ifdef ORGCODE
#define DATABITS_5 0x0001
#define DATABITS_6 0x0002
#define DATABITS_7 0x0004
#define DATABITS_8 0x0008
#endif
#define DATABITS_ALL (DATABITS_5+DATABITS_6+DATABITS_7+DATABITS_8)
#define DATABITS_OFFSET 0x2000 /* tge used for resources */
/* available stops bits */
#define GP_AVAIL_STOPBITS 0x0008
/* values can be.... */
#ifdef ORGCODE
#define STOPBITS_10 0x0001
#define STOPBITS_15 0x0002
#define STOPBITS_20 0x0004
#endif
#define STOPBITS_ALL (STOPBITS_10+STOPBITS_15+STOPBITS_20)
#define STOPBITS_OFFSET 0x3000 /* tge used for resources */
/* available parity options */
#define GP_AVAIL_PARITY 0x0010
/* values can be ... */
#ifdef ORGCODE
#define PARITY_NONE 0x0001
#define PARITY_ODD 0x0002
#define PARITY_EVEN 0x0004
#define PARITY_MARK 0x0008
#define PARITY_SPACE 0x0010
#endif
#define PARITY_ALL (PARITY_NONE+PARITY_ODD+PARITY_EVEN+PARITY_MARK+PARITY_SPACE)
#define PARITY_OFFSET 0x4000 /* tge used for resources */
/* available handshaking */
#define GP_AVAIL_HANDSHAKE 0x0020
/* values can be...*/
#define HANDSHAKE_XONXOFF 0x0001
#define HANDSHAKE_HARDWARE 0x0002
#define HANDSHAKE_NONE 0x0004
#define HANDSHAKE_ETXFLOW 0x0008
#define HANDSHAKE_ALL (HANDSHAKE_XONXOFF+HANDSHAKE_HARDWARE+HANDSHAKE_NONE+HANDSHAKE_ETXFLOW)
#define HANDSHAKE_OFFSET 0x5000 /* tge used for resources */
/* misc. options */
#define GP_AVAIL_MISC 0x0040
/* values can be... */
#define MISC_CARRIER_DETECT 0x0001
#define MISC_PARITY_CHECK 0x0002
#define MISC_ALL (MISC_CARRIER_DETECT+MISC_PARITY_CHECK)
#define MISC_NONE 0x0000
#define MISC_OFFSET 0x6000 /* tge used for resources */
/* GetExtendedInfo */
#define GI_STRSIZE 80
/* if GetExtendedInfo does not have extended info for what we want,
it gives us this message */
#define GIN_NOINFO 0xffff
/* else, the following stuff is used */
/* we send GetExtendedInfo this in parameter one and error code in param 2 */
#define GI_ERROR 0x0000
/* and GetExtended info returns this ... */
#define GIN_ERRWARNING 0x0000
#define GIN_ERRDLLCRASH 0x0001
#define GIN_ERRAPPCRASH 0x0002
#define GIN_ERRSYSCRASH 0x0003
#define GIN_ERRFATAL 0x0004
/* we send GetExtendedInfo this is param 1 */
#define GI_IDENTIFY 0x0001
/* and one of these in param 2 */
#define GI_DLLFILENAME 0x0000 /* put dll file name is param 3 */
#define GI_DLLNAME 0x0001 /* put dll name is param 3 (used in listbox) */
#define GI_CLIENTNAME 0x0002 /* put client name is param 3 */
#define GI_SERVERNAME 0x0003 /* put server name is param 3 */
#define GI_DLLVERSION 0x0004 /* put version # in param 3 */
#define GI_DLLINIFILENAME 0x0005 /* put ini filename in param 3 */
#define GI_SETUPBOX 0x0006 /* return TRUE if setup button should be enabled */
/* and GetExtended info returns this ... */
#define GI_OK TRUE
/* connector read and write errors */
#define CONNECT_READ_ERROR 0xffff
#define CONNECT_WRITE_ERROR (CONNECT_READ_ERROR)
/* connector ini list error */
#define CONNECT_NO_CONNECTORS (-2)
/* CommandConnector */
#define DLL_CMD_BREAK 0x0001
/* ConnectConnector */
#define STAT_CONNECTED 1 /* slc nova xxx */
#define STAT_NOT_CONNECTED 2 /* slc nova xxx */
#define STAT_WAIT_CONNECT 3 /* bjw nova 002 */
#define STAT_ERROR 4 /* bjw nova 002 */
/* control block constants */
#define TYPE_MODEM 0x0001
#define TYPE_NETWORK 0x0002
#define TYPE_PHYSICAL 0x0003
#endif /* NOCONSTANTS */
#ifndef NOCONNECTORS
/* User Union (not to be mistaken with the AFL-CIO */
#define CCB_UNION_SIZE 512 /* seh/slc nova */
typedef union
{
BYTE Byte[CCB_UNION_SIZE];
WORD Word[CCB_UNION_SIZE / sizeof(WORD)];
LONG Long[CCB_UNION_SIZE / sizeof(LONG)];
PSTR Pstr[CCB_UNION_SIZE / sizeof(PSTR)];
LPSTR Lpstr[CCB_UNION_SIZE / sizeof(LPSTR)];
HANDLE Handle[CCB_UNION_SIZE / sizeof(HANDLE)];
} USER_UNION;
/* Connector Control Block */
typedef struct
{
WORD wVersion; /* version number (always equals 100) */
HANDLE hConnectorInst; /* instance handle of connector DLL */
WORD wType; /* Type of connection (network, physical, ect...) */
WORD wStatus; /* Status (connected, not connected, ect... */
WPARAM wParamFlags; /* flags returned by GetConnectCaps(SET_PARAMETERS) */
WORD wBaudFlags; /* flags returned by GetConnectCaps(GP_AVAIL_BAUD) */
WORD wDataBitFlags; /* flags returned by GetConnectCaps(GP_AVAIL_DATABITS) */
WORD wStopBitFlags; /* flags returned by GetConnectCaps(GP_AVAIL_STOPBITS) */
WORD wParityFlags; /* flags returned by GetConnectCaps(GP_AVAIL_PARITY) */
WORD wHandshakeFlags; /* flags returned by GetConnectCaps(GP_AVAIL_HANDSHAKE) */
WORD wMiscFlags; /* flags returned by GetConnectCaps(GP_AVAIL_MISC) */
WORD wSpeed; /* currently set baud rate (actual value) */ /* seh nova 005 */
WORD wBaudSet; /* currently set baud rate (control id) */
WORD wDataBitSet; /* currently set data bits (control id) */
WORD wStopBitSet; /* currently set stop bits (control id) */
WORD wParitySet; /* currently set parity (control id) */
WORD wHandshakeSet; /* currently set handshaking (control id) */
WORD wMiscSet; /* currently set misc (bit flags) */
BYTE szPhoneNumber[MINRESSTR]; /* Phone Number to Dial */
BYTE szDLLFileName[MINRESSTR]; /* DOS filename for DLL */
BYTE szDLLName[MINRESSTR]; /* Name used in connectors listbox */
BYTE szClient[16]; /* client name (for network DLL use) */
BYTE szServer[64]; /* server name (for network DLL use) */
WORD wNetBiosLNum; /* slc nova NetBIOS Local Session Number */
WORD wNetBiosRNum; /* slc nova NetBIOS Remote Session Number */
WORD byPadChar; /* char used for blank padding */
WORD wReadBufferSize; /* size of read transfer buffer */
WORD wReadBufferRead; /* actual bytes read */ /* bjw nova 002 */
LPSTR lpReadBuffer; /* address of read transfer buffer */
HANDLE hReadBuffer; /* handle to read transfer buffer */
WORD wWriteBufferSize; /* size of write transfer buffer */
WORD wWriteBufferUsed; /* size of write transfer buffer used */ /* seh nova 005 */
LPSTR lpWriteBuffer; /* address of write transfer buffer */
HANDLE hWriteBuffer; /* handle to write transfer buffer */
LPSTR lpNCB; /* address of NetBIOS Control Block */
HANDLE hNCB; /* handle to NetBIOS Control Block */
LPSTR lpNCBWrite; /* address of NetBIOS Control Block */
HANDLE hNCBWrite; /* handle to NetBIOS Control Block */
LPSTR lpNCBRead; /* address of NetBIOS Control Block */
HANDLE hNCBRead; /* handle to NetBIOS Control Block */
WORD wTimeRemain; /* NetBIOS Listen Timeout */
BYTE configBuffer[32]; /* Saved in DCS file (for DLL use) */
USER_UNION User; /* DLL's are free to use this space
in anyway that they would like to */
} CONNECTOR_CONTROL_BLOCK, *PCONNECTOR_CONTROL_BLOCK, FAR *LPCONNECTOR_CONTROL_BLOCK;
/* connector array structure */
typedef struct
{
WORD wNumOfChannels; /* number of opened channels */
WORD wTopChannel; /* if a session window is the top window, */
/* then this is it's index into CCB array */
HANDLE hCCBArray;
LPCONNECTOR_CONTROL_BLOCK lpCCB[1]; /* array of CCB's (dynamically allocated) */
} CONNECTORS, *PCONNECTORS, FAR *LPCONNECTORS;
#endif /* NOCONNECTORS */
#ifndef NOGLOBALS
HANDLE ghConnectors; /* global handle to connector data struct */
HANDLE ghCCB; /* global handle CONNECTOR_CONTROL_BLOCK */
LPCONNECTORS xglpConnectors; /* not used anymore - long pointer to connector data structure */
HANDLE ghWorkConnector; /* handle for temporary connector work (settings) */
BYTE gszWork[MINCONSTR]; /* slc nova xxx */
#endif /* NOGLOBALS */
#ifndef NOPROTOTYPES
/* exported functions prototypes */
#ifndef NODLLPROTOTYPES
/* Connect DLL's */
WORD APIENTRY GetDLLType(HWND, BOOL);
WORD APIENTRY GetConnectCaps(WORD);
WORD APIENTRY SetParameters(WORD, LPCONNECTOR_CONTROL_BLOCK);
WORD APIENTRY GetExtendedInfo(WORD, WORD, LPSTR);
WORD APIENTRY ResetConnector(HWND, LPCONNECTOR_CONTROL_BLOCK, BOOL);
WORD APIENTRY ExitConnector(HWND, LPCONNECTOR_CONTROL_BLOCK, BOOL);
WORD APIENTRY ConnectConnector(HWND, LPCONNECTOR_CONTROL_BLOCK, BOOL);
WORD APIENTRY ReadConnector(LPCONNECTOR_CONTROL_BLOCK);
WORD APIENTRY WriteConnector(LPCONNECTOR_CONTROL_BLOCK);
WORD APIENTRY CommandConnector(HWND, LPCONNECTOR_CONTROL_BLOCK, WORD, LONG);
WORD APIENTRY DisconnectConnector(HANDLE, LPCONNECTOR_CONTROL_BLOCK);
#endif /* NODLLPROTOTYPES */
#ifndef NODCPROTOTYPES
/* DynaComm */
BOOL initConnectors(BOOL);
VOID addConnectorList(HWND, WORD); /* slc nova 031 */
HANDLE loadConnector(HWND, HANDLE, LPSTR, BOOL); /* slc nova 031 */
WORD getConnectorCaps(LPCONNECTOR_CONTROL_BLOCK); /* slc nova 031 */
WORD setConnectorSettings(HWND, HANDLE, BOOL);
WORD getConnectorSettings(LPCONNECTOR_CONTROL_BLOCK, BOOL); /* slc nova 031 */
WORD DLL_ResetConnector(HANDLE, BOOL); /* slc nova 031 */
WORD DLL_SetupConnector(HANDLE, BOOL); /* slc nova 031 */
WORD DLL_ExitConnector(HANDLE, recTrmParams *);
WORD DLL_ConnectConnector(HANDLE, BOOL); /* slc nova 031 */
WORD DLL_ReadConnector(HANDLE); /* slc nova 031 */
WORD DLL_WriteConnector(HANDLE); /* slc nova 031 */
WORD DLL_CommandConnector(HANDLE, LPCONNECTOR_CONTROL_BLOCK, WORD, LONG);
WORD DLL_DisconnectConnector(HANDLE hCCB); /* slc nova 031 seh nova 005 */
WORD DLL_modemSendBreak(HANDLE, INT);
WORD DLL_ConnectBytes(HANDLE); /* slc nova 031 */
WORD getConnectType(HANDLE hConnector, HANDLE hCCB); /* seh nova 005 */
VOID ccbFromTrmParams(LPCONNECTOR_CONTROL_BLOCK, recTrmParams *);
VOID ccbToTrmParams(recTrmParams *, LPCONNECTOR_CONTROL_BLOCK);
BOOL DLL_HasSetupBox(HANDLE hConnector); /* seh nova 006 */
WORD putCCB_BAUDITM(WORD); /* slc nova xxx */
WORD putCCB_BAUD(WORD);
WORD putCCB_DATABITS(WORD);
WORD putCCB_PARITY(WORD);
WORD putCCB_STOPBITS(WORD);
WORD putCCB_FLOWCTRL(WORD);
WORD putCCB_MISCSET(WORD, WORD);
#endif /* NODCPROTOTYPES */
#endif /* NOPROTOTYPES */
/* taken from dcrc.h bjw nova 002 */
#ifdef NEED_DCRC
/* bjw gold 027 - the evil warning! */
/*****************************************************************************
* B I G - T I M E , W A R N I N G !, W A R N I N G !, W A R N I N G !
*
* WARNING! WARNING! WARNING! WARNING! WARNING! WARNING! WARNING!
*
* If any of the folling ID's change (and you better have a good reason!)
* make sure and change the corresponding ID's in any DLL that uses them and
* recompile DynaComm and ALL connector DLL's.
* If you really have to change one of these items, DynaComm will no longer
* be compatible with earlier settings files or connector DLL's.
* I WARNED YOU!
*
******************************************************************************/
#define ITMSETUP 3 /* seh nova 005 */
#define IDDBCOMM 7
#define ITMBD110 11
#define ITMBD300 12
#define ITMBD600 13 /* mbbx 2.00: support 600 baud */
#define ITMBD120 14
#define ITMBD240 15
#define ITMBD480 16
#define ITMBD960 17
#define ITMBD192 18
#define ITMDATA4 21 /* not used */
#define ITMDATA5 22
#define ITMDATA6 23
#define ITMDATA7 24
#define ITMDATA8 25
#define ITMSTOP1 31
#define ITMSTOP5 32
#define ITMSTOP2 33
#define ITMNOPARITY 41
#define ITMODDPARITY 42
#define ITMEVENPARITY 43
#define ITMMARKPARITY 44
#define ITMSPACEPARITY 45
#define ITMXONFLOW 51
#define ITMHARDFLOW 52
#define ITMNOFLOW 53
#define ITMETXFLOW 54 /* jtfx 2.01.75 ... */
#define ITMCONNECTOR 61
#define ITMPARITY 91
#define ITMCARRIER 92
#endif /* NEED_DCRC */
/* WINCIM typedef's */
typedef CONNECTOR_CONTROL_BLOCK CCB;
typedef CCB FAR * LPCCB;