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.
303 lines
8.4 KiB
303 lines
8.4 KiB
/*==========================================================================
|
|
*
|
|
* Copyright (C) 1998-2000 Microsoft Corporation. All Rights Reserved.
|
|
*
|
|
* File: Locals.h
|
|
* Content: Global information for the DNSerial service provider
|
|
*
|
|
*
|
|
* History:
|
|
* Date By Reason
|
|
* ==== == ======
|
|
* 11/25/98 jtk Created
|
|
***************************************************************************/
|
|
|
|
#ifndef __LOCALS_H__
|
|
#define __LOCALS_H__
|
|
|
|
#undef DPF_SUBCOMP
|
|
#define DPF_SUBCOMP DN_SUBCOMP_MODEM
|
|
|
|
|
|
//**********************************************************************
|
|
// Constant definitions
|
|
//**********************************************************************
|
|
|
|
//
|
|
// max 32-bit value
|
|
//
|
|
#define UINT32_MAX ((DWORD) 0xFFFFFFFF)
|
|
#define WORD_MAX ((WORD) 0xFFFF)
|
|
|
|
//
|
|
// invalid port ID
|
|
//
|
|
#define INVALID_DEVICE_ID -1
|
|
|
|
//
|
|
// string for name of a com port
|
|
//
|
|
#define COM_PORT_STRING "COM"
|
|
#define COM_PORT_TEMPLATE "COM%d"
|
|
#define COM_PORT_STRING_LENGTH 7
|
|
|
|
//
|
|
// no error code from TAPI
|
|
//
|
|
#define LINEERR_NONE 0
|
|
|
|
//
|
|
// event indicies for all threads
|
|
//
|
|
#define SP_CLOSING_EVENT_INDEX 0
|
|
#define USER_CANCEL_EVENT_INDEX 1
|
|
|
|
#define MAX_ACTIVE_WIN9X_ENDPOINTS 25
|
|
|
|
#define MAX_PHONE_NUMBER_LENGTH 200
|
|
|
|
//
|
|
// enumeration of flow control
|
|
//
|
|
typedef enum
|
|
{
|
|
FLOW_NONE, // no flow control
|
|
FLOW_XONXOFF, // XON/XOFF flow control
|
|
FLOW_RTS, // RTS
|
|
FLOW_DTR, // DTR
|
|
FLOW_RTSDTR // RTS/DTR
|
|
} SP_FLOW_CONTROL;
|
|
|
|
// definitions of communication types
|
|
typedef DWORD SP_BAUD_RATE;
|
|
typedef DWORD SP_STOP_BITS;
|
|
typedef DWORD SP_PARITY_TYPE; // SP_PARITY is reserved in WINBASE.H
|
|
|
|
// buffer limits for XON/XOFF flow control
|
|
#define XON_LIMIT 100
|
|
#define XOFF_LIMIT 100
|
|
|
|
// XON/XOFF flow control characters
|
|
#define ASCII_XON 0x11
|
|
#define ASCII_XOFF 0x13
|
|
|
|
// timeout intervals (milliseconds)
|
|
#define WRITE_TIMEOUT_MS 5000
|
|
#define READ_TIMEOUT_MS 500
|
|
|
|
// maximum user data allowed in a message
|
|
#define MAX_MESSAGE_SIZE 1500
|
|
#define MAX_USER_PAYLOAD ( MAX_MESSAGE_SIZE - sizeof( _MESSAGE_HEADER ) )
|
|
|
|
//
|
|
// Message start tokens (make non-ascii to reduce chance of being user data)
|
|
// The tokens need to be arranged such that all messages start with the INITIAL_DATA_SUB_TOKEN
|
|
// Note that enums use the bottom 2 bits of the 'command' token for RTT.
|
|
// The high-bit of the 'command' token is reserved.
|
|
//
|
|
#define SERIAL_HEADER_START 0xCC
|
|
#define SERIAL_DATA_USER_DATA 0x40
|
|
#define SERIAL_DATA_ENUM_QUERY 0x60
|
|
#define SERIAL_DATA_ENUM_RESPONSE 0x20
|
|
#define ENUM_RTT_MASK 0x03
|
|
|
|
//
|
|
// enumerated constants for IO completion returns
|
|
//
|
|
typedef enum _IO_COMPLETION_KEY
|
|
{
|
|
IO_COMPLETION_KEY_UNKNONW = 0, // invalid value
|
|
IO_COMPLETION_KEY_SP_CLOSE, // SP is closing, bail on completion threads
|
|
IO_COMPLETION_KEY_TAPI_MESSAGE, // TAPI sent a message
|
|
IO_COMPLETION_KEY_IO_COMPLETE, // IO operation complete
|
|
IO_COMPLETION_KEY_NEW_JOB, // new job notification
|
|
} IO_COMPLETION_KEY;
|
|
|
|
//
|
|
// enumerated values indicating how to open provider
|
|
//
|
|
typedef enum _LINK_DIRECTION
|
|
{
|
|
LINK_DIRECTION_UNKNOWN = 0, // unknown state
|
|
LINK_DIRECTION_INCOMING, // incoming state
|
|
LINK_DIRECTION_OUTGOING // outgoing state
|
|
} LINK_DIRECTION;
|
|
|
|
//
|
|
// initialization states of address components
|
|
//
|
|
typedef enum _SP_ADDRESS_COMPONENT_STATE
|
|
{
|
|
SP_ADDRESS_COMPONENT_UNINITIALIZED = 0,
|
|
SP_ADDRESS_COMPONENT_INITIALIZATION_FAILED,
|
|
SP_ADDRESS_COMPONENT_INITIALIZED
|
|
} SP_ADDRESS_COMPONENT_STATE;
|
|
|
|
typedef enum _ADDRESS_TYPE
|
|
{
|
|
ADDRESS_TYPE_UNKNOWN = 0,
|
|
ADDRESS_TYPE_REMOTE_HOST,
|
|
ADDRESS_TYPE_LOCAL_ADAPTER,
|
|
ADDRESS_TYPE_LOCAL_ADAPTER_HOST_FORMAT
|
|
} ADDRESS_TYPE;
|
|
|
|
//
|
|
// default enum retries for serial SP and retry time (milliseconds)
|
|
//
|
|
#define DEFAULT_ENUM_RETRY_COUNT 5
|
|
#define DEFAULT_ENUM_RETRY_INTERVAL 1500
|
|
#define DEFAULT_ENUM_TIMEOUT 1500
|
|
|
|
//**********************************************************************
|
|
// Macro definitions
|
|
//**********************************************************************
|
|
|
|
//**********************************************************************
|
|
// Structure definitions
|
|
//**********************************************************************
|
|
|
|
//
|
|
// structure for all TAPI information
|
|
//
|
|
typedef struct _TAPI_INFO
|
|
{
|
|
HLINEAPP hApplicationInstance; // from lineInitializeEx()
|
|
DWORD dwVersion; // negotiated version
|
|
DWORD dwLinesAvailable; // number of TAPI lines available
|
|
} TAPI_INFO;
|
|
|
|
//**********************************************************************
|
|
// Variable definitions
|
|
//**********************************************************************
|
|
|
|
// DLL instance
|
|
extern HINSTANCE g_hModemDLLInstance;
|
|
|
|
#ifndef DPNBUILD_LIBINTERFACE
|
|
//
|
|
// count of outstanding COM interfaces
|
|
//
|
|
extern volatile LONG g_lModemOutstandingInterfaceCount;
|
|
#endif // ! DPNBUILD_LIBINTERFACE
|
|
|
|
extern const TCHAR g_NullToken;
|
|
|
|
//
|
|
// thread count
|
|
//
|
|
extern INT g_iThreadCount;
|
|
|
|
//
|
|
// GUIDs for munging device IDs
|
|
//
|
|
extern GUID g_ModemSPEncryptionGuid;
|
|
extern GUID g_SerialSPEncryptionGuid;
|
|
|
|
#ifdef DBG
|
|
extern CBilink g_blDPNModemCritSecsHeld;
|
|
#endif // DBG
|
|
|
|
|
|
|
|
//**********************************************************************
|
|
// TAPI Function prototypes
|
|
//**********************************************************************
|
|
|
|
//
|
|
// TAPI interface functions
|
|
//
|
|
#ifdef UNICODE
|
|
#define TAPI_APPEND_LETTER "W"
|
|
#else
|
|
#define TAPI_APPEND_LETTER "A"
|
|
#endif // UNICODE
|
|
|
|
// UNICODE and ANSI versions same
|
|
typedef LONG WINAPI TAPI_lineClose( HLINE hLine );
|
|
|
|
typedef LONG WINAPI TAPI_lineDeallocateCall( HCALL hCall );
|
|
|
|
typedef LONG WINAPI TAPI_lineGetMessage( HLINEAPP hLineApp,
|
|
LPLINEMESSAGE lpMessage,
|
|
DWORD dwTimeout );
|
|
|
|
typedef LONG WINAPI TAPI_lineShutdown( HLINEAPP hLineApp );
|
|
|
|
typedef LONG WINAPI TAPI_lineAnswer( HCALL hCall,
|
|
LPCSTR lpsUserUserInfo,
|
|
DWORD dwSize );
|
|
|
|
typedef LONG WINAPI TAPI_lineDrop( HCALL hCall,
|
|
LPCSTR lpsUserUserInfo,
|
|
DWORD dwSize );
|
|
|
|
typedef LONG WINAPI TAPI_lineNegotiateAPIVersion( HLINEAPP hLineApp,
|
|
DWORD dwDeviceID,
|
|
DWORD dwAPILowVersion,
|
|
DWORD dwAPIHighVersion,
|
|
LPDWORD lpdwAPIVersion,
|
|
LPLINEEXTENSIONID lpExtensionID );
|
|
|
|
|
|
// Unicode vs. ANSI
|
|
|
|
typedef LONG WINAPI TAPI_lineConfigDialog( DWORD dwDeviceID,
|
|
HWND hwndOwner,
|
|
LPCTSTR lpszDeviceClass );
|
|
|
|
typedef LONG WINAPI TAPI_lineGetDevCaps( HLINEAPP hLineApp,
|
|
DWORD dwDeviceID,
|
|
DWORD dwAPIVersion,
|
|
DWORD dwExtVersion,
|
|
LPLINEDEVCAPS lpLineDevCaps );
|
|
|
|
typedef LONG WINAPI TAPI_lineGetID( HLINE hLine,
|
|
DWORD dwAddressID,
|
|
HCALL hCall,
|
|
DWORD dwSelect,
|
|
LPVARSTRING lpDeviceID,
|
|
LPCTSTR lpszDeviceClass );
|
|
|
|
typedef LONG WINAPI TAPI_lineInitializeEx( LPHLINEAPP lphLineApp,
|
|
HINSTANCE hInstance,
|
|
LINECALLBACK lpfnCallback,
|
|
LPCTSTR lpszFriendlyAppName,
|
|
LPDWORD lpdwNumDevs,
|
|
LPDWORD lpdwAPIVersion,
|
|
LPLINEINITIALIZEEXPARAMS lpLineInitializeExParams );
|
|
|
|
typedef LONG WINAPI TAPI_lineMakeCall( HLINEAPP hLineApp,
|
|
LPHCALL lphCall,
|
|
LPCTSTR lpszDestAddress,
|
|
DWORD dwCountryCode,
|
|
LPLINECALLPARAMS const lpCallParams );
|
|
|
|
typedef LONG WINAPI TAPI_lineOpen( HLINEAPP hLineApp,
|
|
DWORD dwDeviceID,
|
|
LPHLINE lphLine,
|
|
DWORD dwAPIVersion,
|
|
DWORD dwExtVersion,
|
|
DWORD_PTR dwCallbackInstance,
|
|
DWORD dwPrivileges,
|
|
DWORD dwMediaModes,
|
|
LPLINECALLPARAMS const lpCallParams );
|
|
|
|
extern TAPI_lineAnswer* p_lineAnswer;
|
|
extern TAPI_lineClose* p_lineClose;
|
|
extern TAPI_lineConfigDialog* p_lineConfigDialog;
|
|
extern TAPI_lineDeallocateCall* p_lineDeallocateCall;
|
|
extern TAPI_lineDrop* p_lineDrop;
|
|
extern TAPI_lineGetDevCaps* p_lineGetDevCaps;
|
|
extern TAPI_lineGetID* p_lineGetID;
|
|
extern TAPI_lineGetMessage* p_lineGetMessage;
|
|
extern TAPI_lineInitializeEx* p_lineInitializeEx;
|
|
extern TAPI_lineMakeCall* p_lineMakeCall;
|
|
extern TAPI_lineNegotiateAPIVersion* p_lineNegotiateAPIVersion;
|
|
extern TAPI_lineOpen* p_lineOpen;
|
|
extern TAPI_lineShutdown* p_lineShutdown;
|
|
|
|
//**********************************************************************
|
|
// Function definitions
|
|
//**********************************************************************
|
|
|
|
#endif // __LOCALS_H__
|