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.
261 lines
9.6 KiB
261 lines
9.6 KiB
/*----------------------------------------------------------------------------
|
|
moscl.h
|
|
|
|
Header for MOS client side API
|
|
|
|
Copyright (C) 1993 Microsoft Corporation
|
|
All rights reserved.
|
|
|
|
Authors:
|
|
Phillich Philippe Choquier
|
|
|
|
History:
|
|
08/12/93 Phillich Created.
|
|
--------------------------------------------------------------------------*/
|
|
|
|
#if !defined(_MOSCL_DEFINED)
|
|
|
|
#include <servdefs.h>
|
|
#include <mostpc.h>
|
|
|
|
#if defined(__cplusplus)
|
|
extern "C" {
|
|
#endif
|
|
|
|
#if !defined(MOSDllImport)
|
|
#if defined(WIN32)
|
|
#define MOSDllImport(a) __declspec( dllimport ) a
|
|
#define MOSDllExport(a) __declspec( dllexport ) a
|
|
#else
|
|
#define MOSDllExport(a) a __export
|
|
#define MOSDllImport(a) a __import
|
|
#endif
|
|
#endif
|
|
|
|
#if !defined(_MHANDLE_DEFINED)
|
|
typedef WORD MHANDLE;
|
|
typedef WORD HMCONNECT;
|
|
typedef HMCONNECT *PHMCONNECT;
|
|
typedef WORD HMSESSION;
|
|
typedef HMSESSION *PHMSESSION;
|
|
typedef WORD HMPIPE;
|
|
typedef HMPIPE *PHMPIPE;
|
|
#define _MHANDLE_DEFINED
|
|
#endif
|
|
|
|
#define INVALID_MOS_HANDLE_VALUE ((MHANDLE)0xffff)
|
|
#define MOS_IO_ERROR 0xffff
|
|
|
|
#define MOS_WRITE_PENDING 0xfffffffe
|
|
|
|
typedef struct _MC_CONNECT_CB {
|
|
WORD cSizeStructure;
|
|
WORD Type;
|
|
DWORD ComPort;
|
|
DWORD BaudRate;
|
|
DWORD dwOptions;
|
|
WORD SpeakerMode;
|
|
WORD wReserved;
|
|
} MC_CONNECT_CB;
|
|
|
|
// for dwOptions
|
|
|
|
#define MOS_CONNECT_DISABLE_DATA_COMPRESSION 1
|
|
#define MOS_CONNECT_DISABLE_ERROR_CORRECTION 2
|
|
#define MOS_CONNECT_LAUNCH_LIGHTS 4
|
|
#define MOS_DONT_SET_DCEDTE_SPEED 8
|
|
|
|
enum MOS_SPEAKERMODE { MOS_SPEAKERALWAYSOFF, MOS_SPEAKERONUNTILCONNECT, MOS_SPEAKERALWAYSON, MOS_SPEAKEROFFWHILEDIALING };
|
|
|
|
enum MOS_CONNECT_TYPE {
|
|
MOS_CONNECT_MODEM,
|
|
MOS_CONNECT_ISDN,
|
|
MOS_CONNECT_PIPE,
|
|
MOS_CONNECT_EICON,
|
|
MOS_CONNECT_EXISTING,
|
|
MOS_CONNECT_INVALID,
|
|
MOS_CONNECT_UDP,
|
|
MOS_CONNECT_TAPI,
|
|
MOS_CONNECT_TCP
|
|
} ;
|
|
|
|
enum MOS_EVENT {
|
|
EVENT_BUSY,
|
|
EVENT_NOCARRIER,
|
|
EVENT_CONNECTED,
|
|
EVENT_NODIALTONE,
|
|
EVENT_USER_CLOSED,
|
|
EVENT_START_RECEIVE_DATA,
|
|
EVENT_END_RECEIVE_DATA,
|
|
EVENT_START_XMIT_DATA,
|
|
EVENT_END_XMIT_DATA,
|
|
EVENT_CRC_ERROR,
|
|
EVENT_CONNECTION_DROPPED,
|
|
EVENT_WRITE_ERROR,
|
|
EVENT_NO_EVENT,
|
|
EVENT_DATALINK,
|
|
EVENT_SPEED_1200,
|
|
EVENT_SPEED_2400,
|
|
EVENT_SPEED_4800,
|
|
EVENT_SPEED_9600,
|
|
EVENT_SPEED_12000,
|
|
EVENT_SPEED_14400,
|
|
EVENT_SPEED_16800,
|
|
EVENT_SPEED_19200,
|
|
EVENT_SPEED_21600,
|
|
EVENT_SPEED_24400,
|
|
EVENT_SPEED_26400,
|
|
EVENT_SPEED_28800,
|
|
EVENT_SPEED_57600,
|
|
EVENT_OPEN_ERROR, // can't open communication device
|
|
EVENT_SPEED,
|
|
EVENT_UNREACHABLE_NETWORK_ADDRESS,
|
|
EVENT_ACTIVE,
|
|
EVENT_CAUSE_TOO_MANY_RCV_ERROR,
|
|
EVENT_CAUSE_TOO_MANY_XM_ERROR,
|
|
EVENT_PAD_DISCONNECT,
|
|
EVENT_CAUSE_UNAVAIL,
|
|
EVENT_SVCCONNECT_DONE,
|
|
EVENT_RAS_AUTH_START,
|
|
EVENT_RAS_AUTH_FAILED,
|
|
EVENT_RAS_ERROR,
|
|
EVENT_RAS_DIALSTART_PRIMARY,
|
|
EVENT_RAS_DIALSTART_BACKUP,
|
|
EVENT_TCPINSTALL_ERROR,
|
|
EVENT_TCPCONNECT_START,
|
|
EVENT_TCPCONNECT_RETRY,
|
|
EVENT_TCPCONNECT_FAILED,
|
|
EVENT_DNSLOOKUP,
|
|
EVENT_DNSLOOKUP_FAILED,
|
|
EVENT_LOCKEDACCOUNT,
|
|
EVENT_INVALIDPASSWORD,
|
|
EVENT_PPPRANDOMFAILURE,
|
|
EVENT_RAS_REMOTE_DISCONNECTION,
|
|
EVENT_RAS_NOCARRIER,
|
|
EVENT_RAS_BADTCPCONFIG,
|
|
EVENT_PROXYCONNECT_START,
|
|
EVENT_PROXYCONNECT_FAILED,
|
|
EVENT_PROXYAUTH_START,
|
|
EVENT_PROXYAUTH_FAILED,
|
|
EVENT_PROXY_DISCOVERY_START,
|
|
EVENT_PROXY_DISCOVERY_FAILED,
|
|
EVENT_PROXY_ALTCONNECT_START,
|
|
EVENT_PROXY_RESOURCE_FAILURE,
|
|
EVENT_PROXY_GENERIC_FAILURE,
|
|
EVENT_PROXY_PROTOCOL_MISMATCH,
|
|
EVENT_PROXY_BAD_SETTINGS,
|
|
EVENT_PROXY_BAD_VERSION,
|
|
EVENT_PPP_TIMEOUT,
|
|
} ;
|
|
|
|
#define SERVER_NAME_MAX_LEN (30)
|
|
#define SERVICE_NAME_MAX_LEN (256)
|
|
#define IPADDRESS_MAX_LEN (30)
|
|
#define MOSCL_ATTACH_TIMEOUT (15 * 1000)
|
|
|
|
#define MOSADDR_CANONIC 1
|
|
#define MOSADDR_DIALABLE 2
|
|
#define MOSADDR_WANADDR 3
|
|
#define MOSADDR_CARRIERID 4
|
|
#define MOSADDR_COUNTRYCODE 5
|
|
#define MOSADDR_AREACODE 6
|
|
#define MOSADDR_MODEMNAME 7
|
|
#define MOSADDR_CONNECTMODE 8
|
|
|
|
// Maximum Message Size
|
|
#define MSI_MAXMSGSIZE (12*1024)
|
|
|
|
#define GMS_MAXMSGSIZE 1
|
|
#define GMS_LEVEL2TIMEOUT 2
|
|
|
|
typedef void (CALLBACK *MC_CONNECT_NOTIFY)(LPVOID, HMCONNECT, WORD, DWORD);
|
|
typedef void (CALLBACK *MP_READ_NOTIFY)(LPVOID, HMPIPE, DWORD);
|
|
typedef void (CALLBACK *MP_WRITE_NOTIFY)(LPVOID, HMPIPE, LPVOID, DWORD);
|
|
typedef void (CALLBACK *MP_OPEN_NOTIFY)(LPVOID, HMPIPE, WORD );
|
|
|
|
#if defined(WIN32)
|
|
MOSDllExport(BOOL WINAPI) InitMOS( HINSTANCE, WORD );
|
|
#else
|
|
MOSDllExport(BOOL WINAPI) InitMOS( HINSTANCE );
|
|
#endif
|
|
MOSDllExport(BOOL WINAPI) TerminateMOS();
|
|
MOSDllExport(WORD WINAPI) GetMOSConnectionStatus(HMCONNECT);
|
|
MOSDllExport(HMCONNECT WINAPI) OpenMOSConnection(LPSTR,MC_CONNECT_NOTIFY,LPVOID,MC_CONNECT_CB FAR*);
|
|
MOSDllExport(BOOL WINAPI) CloseMOSConnection(HMCONNECT);
|
|
MOSDllExport(HMSESSION WINAPI) OpenMOSSession(HMCONNECT, LPSTR);
|
|
MOSDllExport(HMSESSION WINAPI) OpenMOSSessionEx(HMCONNECT, LPSTR, SERVICE_VERSION );
|
|
MOSDllExport(BOOL WINAPI) CloseMOSSession(HMSESSION);
|
|
MOSDllExport(HMPIPE WINAPI) OpenMOSPipe(HMSESSION, LPSTR);
|
|
MOSDllExport(HMPIPE WINAPI) OpenMOSPipeEx(HMSESSION, LPSTR, LPSTR);
|
|
MOSDllExport(BOOL WINAPI) CloseMOSPipe(HMPIPE);
|
|
MOSDllExport(DWORD WINAPI) ReadMOSPipe(HMPIPE, LPVOID, DWORD, WORD);
|
|
MOSDllExport(DWORD WINAPI) WriteMOSPipe(HMPIPE, LPVOID, LPVOID, DWORD, BOOL);
|
|
MOSDllExport(MP_READ_NOTIFY WINAPI) SetMOSPipeReadNotify(HMPIPE, MP_READ_NOTIFY, LPVOID);
|
|
MOSDllExport(MP_WRITE_NOTIFY WINAPI) SetMOSPipeWriteNotify(HMPIPE, MP_WRITE_NOTIFY);
|
|
MOSDllExport(WORD WINAPI) GetMOSLastError(HMCONNECT);
|
|
MOSDllExport(DWORD WINAPI) GetMOSPipeReadSize(HMPIPE hmp, WORD );
|
|
MOSDllExport(DWORD WINAPI) GetMOSSysInfo( HMCONNECT hmC, WORD wType );
|
|
MOSDllExport(HMPIPE WINAPI) OpenMOSPipeWithNotify(HMSESSION hms, LPSTR Name,
|
|
LPSTR Param, MP_READ_NOTIFY r, LPVOID u,
|
|
MP_WRITE_NOTIFY );
|
|
MOSDllExport(HMPIPE WINAPI) OpenMOSPipeWithNotifyEx(HMSESSION hms, LPSTR Name,
|
|
LPSTR Param, MP_READ_NOTIFY r, LPVOID u,
|
|
MP_WRITE_NOTIFY, SERVICE_VERSION sv );
|
|
MOSDllExport(HMPIPE WINAPI) OpenMOSPipeWithNotifyAndTimeoutEx(HMSESSION hms, LPSTR Name,
|
|
LPSTR Param, MP_READ_NOTIFY r, LPVOID u,
|
|
MP_WRITE_NOTIFY, SERVICE_VERSION sv, DWORD dwT, MP_OPEN_NOTIFY pON );
|
|
|
|
#define OpenMOSPipeWithReadNotify(a,b,c,d,e) OpenMOSPipeWithNotify(a,b,c,d,e,NULL)
|
|
#if defined(__cplusplus)
|
|
}
|
|
#endif
|
|
|
|
// MOS error values
|
|
#define MOSERROR_FAILED (-1) // operation failed (reason unknown).
|
|
#define MOSERROR_SUCCESS (0) // operation successful.
|
|
|
|
#define MOSERROR_TIMEOUT (1)
|
|
#define MOSERROR_IO_PENDING (2) // Overlapped IO operation in progress.
|
|
#define MOSERROR_IO_BUSY (3) // Synchronous operation in progress.
|
|
#define MOSERROR_INVALID_CONNECTION_HANDLE (4)
|
|
#define MOSERROR_INVALID_SESSION_HANDLE (5)
|
|
#define MOSERROR_INVALID_PIPE_HANDLE (6)
|
|
#define MOSERROR_PIPE_IS_CLOSING (7)
|
|
|
|
#define MOSERROR_OPENING_ARENA (8) // An error occured while trying to OpenSharedArena().
|
|
#define MOSERROR_ASYNC_WRITE_NO_CALLBACK (9) // Cannot perform async write without first defining a callback function.
|
|
#define MOSERROR_ARENA_NOTHING_DURING_READ (10) // A call to GetFirstFromList() returned ARENA_NOTHING.
|
|
#define MOSERROR_ADDTOLIST_RET_FALSE (11) // A call to AddToList() returned FALSE for some reason.
|
|
#define MOSERROR_PIPE_NOT_FOUND (12)
|
|
|
|
//#define MOSERROR_BUFFER_TOO_SMALL (13) // The specified buffer was too small for the data to be returned in.
|
|
//#define MOSERROR_SERVICE_NOT_FOUND (14) // The specified Service could not be found.
|
|
//#define MOSERROR_OVERLAPPED_BUFFERS (15) // One or more of the specified buffers are overlapped.
|
|
//#define MOSERROR_RPC_FAILED (16) // An RPC call failed.
|
|
|
|
//#define MOSERROR_BILLING_DOWNLOAD_ALREADY_ACTIVE (17) // Can't start download session event when existing session in progress.
|
|
//#define MOSERROR_BILLING_DOWNLOAD_NOT_ACTIVE (18) // Can't ask for next or prev event when no download in progress.
|
|
//#define MOSERROR_BILLING_DOWNLOAD_INVALID_HANDLE (19) // An invalid download session handle was specified.
|
|
//#define MOSERROR_BILLING_DOWNLOAD_INVALID_COMMAND (20) // An invalid download command was specified.
|
|
//#define MOSERROR_ERROR_ACCESSING_LOGFILE (21) // There was an error accessing the billing logfile.
|
|
#define MOSERROR_MSGSIZETOOBIG (22) // Message Size Too Big for WriteMOSPipe.
|
|
|
|
//#define MOSERROR_ERROR_SERIALIZING (23) // An error occurred while a C++ object attempted to serialize itself.
|
|
//#define MOSERROR_ERROR_DESERIALIZING (24) // An error occurred while a C++ object attempted to deserialize itself.
|
|
#define MOSERROR_INVALID_CONNECTION_TYPE (25) // InitMOS() & OpenMOSConnection mismatch
|
|
|
|
#define MOSERROR_MORE_DATA (26) // Fitting # of logs are returned in the buffer, but more data is available still.
|
|
#define MOSERROR_INVALID_PARAMETER (27)
|
|
#define MOSERROR_OUT_OF_RESOURCE (28)
|
|
#define MOSERROR_ATTACH_REJECT (29)
|
|
#define MOSERROR_NO_ACCESS (30)
|
|
#define MOSERROR_LOCATE_REJECT (31)
|
|
#define MOSERROR_SERVER_REJECT (32)
|
|
#define MOSERROR_SERVICE_VERSION_MISMATCH (33)
|
|
#define MOSERROR_TOO_MANY_PIPES (34)
|
|
#define MOSERROR_PIPE_IS_NOTOPENED (35)
|
|
#define MOSERROR_NO_ACCESS_ON_TOLL_FREE (36)
|
|
#define MOSERROR_GET_RIGHTS_TIMEOUT (37)
|
|
|
|
#define _MOSCL_DEFINED
|
|
#endif
|