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.
 
 
 
 
 
 

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__