211 lines
5.6 KiB
C
211 lines
5.6 KiB
C
|
//****************************************************************************
|
||
|
//
|
||
|
// Microsoft NT Remote Access Service
|
||
|
//
|
||
|
// Copyright (C) 1994-95 Microsft Corporation. All rights reserved.
|
||
|
//
|
||
|
// Filename: rastapi.h
|
||
|
//
|
||
|
// Revision History
|
||
|
//
|
||
|
// Mar 28 1992 Gurdeep Singh Pall Created
|
||
|
//
|
||
|
//
|
||
|
// Description: This file contains all structs for TAPI.DLL
|
||
|
//
|
||
|
//****************************************************************************
|
||
|
|
||
|
#define DEVICETYPE_ISDN "ISDN"
|
||
|
#define DEVICETYPE_X25 "X25"
|
||
|
#define DEVICETYPE_UNIMODEM "MODEM"
|
||
|
// #define DEVICETYPE_UNIMODEM "MODEMS"
|
||
|
#define DEVICETYPE_PPTP "VPN"
|
||
|
#define REMOTEACCESS_APP "RemoteAccess"
|
||
|
|
||
|
#define CONTROLBLOCKSIGNATURE 0x06051932
|
||
|
|
||
|
#define CLIENT_USAGE "Client"
|
||
|
#define SERVER_USAGE "Server"
|
||
|
#define CLIENTANDSERVER_USAGE "ClientAndServer"
|
||
|
|
||
|
#define REGISTRY_RASMAN_TAPI_KEY "Software\\Microsoft\\RAS\\Tapi Devices"
|
||
|
#define REGISTRY_ADDRESS "Address"
|
||
|
#define REGISTRY_FRIENDLYNAME "Friendly Name"
|
||
|
#define REGISTRY_MEDIATYPE "Media Type"
|
||
|
#define REGISTRY_USAGE "Usage"
|
||
|
|
||
|
#define LOW_MAJOR_VERSION 0x0001
|
||
|
#define LOW_MINOR_VERSION 0x0003
|
||
|
#define HIGH_MAJOR_VERSION 0x0002
|
||
|
#define HIGH_MINOR_VERSION 0x0000
|
||
|
|
||
|
#define LOW_VERSION ((LOW_MAJOR_VERSION << 16) | LOW_MINOR_VERSION)
|
||
|
#define HIGH_VERSION ((HIGH_MAJOR_VERSION << 16) | HIGH_MINOR_VERSION)
|
||
|
|
||
|
#define LOW_EXT_MAJOR_VERSION 0x0000
|
||
|
#define LOW_EXT_MINOR_VERSION 0x0000
|
||
|
#define HIGH_EXT_MAJOR_VERSION 0x0000
|
||
|
#define HIGH_EXT_MINOR_VERSION 0x0000
|
||
|
|
||
|
#define LOW_EXT_VERSION ((LOW_EXT_MAJOR_VERSION << 16) | LOW_EXT_MINOR_VERSION)
|
||
|
#define HIGH_EXT_VERSION ((HIGH_EXT_MAJOR_VERSION << 16) | HIGH_EXT_MINOR_VERSION)
|
||
|
|
||
|
// Generic indexes
|
||
|
#define ADDRESS_INDEX 0
|
||
|
#define CONNECTBPS_INDEX 1
|
||
|
|
||
|
// ISDN param indexes
|
||
|
#define ISDN_ADDRESS_INDEX ADDRESS_INDEX
|
||
|
#define ISDN_CONNECTBPS_INDEX CONNECTBPS_INDEX
|
||
|
#define ISDN_LINETYPE_INDEX 2
|
||
|
#define ISDN_FALLBACK_INDEX 3
|
||
|
#define ISDN_COMPRESSION_INDEX 4
|
||
|
#define ISDN_CHANNEL_AGG_INDEX 5
|
||
|
|
||
|
// X25 indexes
|
||
|
#define X25_ADDRESS_INDEX ADDRESS_INDEX
|
||
|
#define X25_CONNECTBPS_INDEX CONNECTBPS_INDEX
|
||
|
#define X25_DIAGNOSTICS_INDEX 2
|
||
|
#define X25_USERDATA_INDEX 3
|
||
|
#define X25_FACILITIES_INDEX 4
|
||
|
|
||
|
enum PORT_STATE {
|
||
|
|
||
|
PS_CLOSED,
|
||
|
|
||
|
PS_OPEN,
|
||
|
|
||
|
PS_LISTENING,
|
||
|
|
||
|
PS_CONNECTED,
|
||
|
|
||
|
PS_CONNECTING,
|
||
|
|
||
|
PS_DISCONNECTING,
|
||
|
|
||
|
PS_UNINITIALIZED,
|
||
|
|
||
|
} ;
|
||
|
|
||
|
typedef enum PORT_STATE PORT_STATE ;
|
||
|
typedef enum PORT_STATE LINE_STATE ;
|
||
|
|
||
|
|
||
|
enum LISTEN_SUBSTATE {
|
||
|
|
||
|
LS_WAIT,
|
||
|
|
||
|
LS_RINGING,
|
||
|
|
||
|
LS_ACCEPT,
|
||
|
|
||
|
LS_ANSWER,
|
||
|
|
||
|
LS_COMPLETE,
|
||
|
|
||
|
LS_ERROR,
|
||
|
|
||
|
} ;
|
||
|
|
||
|
typedef enum LISTEN_SUBSTATE LISTEN_SUBSTATE ;
|
||
|
|
||
|
|
||
|
struct TapiLineInfo {
|
||
|
|
||
|
DWORD TLI_LineId ; // Returned by LineInitialize
|
||
|
|
||
|
HLINE TLI_LineHandle ; // Returned by LineOpen
|
||
|
|
||
|
#define MAX_PROVIDER_NAME 48
|
||
|
CHAR TLI_ProviderName[MAX_PROVIDER_NAME] ;
|
||
|
|
||
|
LINE_STATE TLI_LineState ; // open?, closed?, listen posted?.
|
||
|
|
||
|
DWORD TLI_OpenCount ;
|
||
|
|
||
|
DWORD NegotiatedApiVersion;
|
||
|
|
||
|
DWORD NegotiatedExtVersion;
|
||
|
|
||
|
DWORD IdleReceived;
|
||
|
|
||
|
} ;
|
||
|
|
||
|
typedef struct TapiLineInfo TapiLineInfo ;
|
||
|
|
||
|
struct TapiPortControlBlock {
|
||
|
|
||
|
DWORD TPCB_Signature ; // Unique signature for verifying block ptr.
|
||
|
|
||
|
HANDLE TPCB_Handle ; // Handle used to identify this port
|
||
|
|
||
|
CHAR TPCB_Name[MAX_PORT_NAME] ; // Friendly Name of the port
|
||
|
|
||
|
CHAR TPCB_Address[MAX_PORT_NAME] ;// Address
|
||
|
|
||
|
PORT_STATE TPCB_State ; // State of the port
|
||
|
|
||
|
LISTEN_SUBSTATE TPCB_ListenState ; // state of the listen
|
||
|
|
||
|
CHAR TPCB_DeviceType[MAX_DEVICETYPE_NAME] ; // ISDN, etc.
|
||
|
|
||
|
CHAR TPCB_DeviceName [MAX_DEVICE_NAME] ; // Digiboard etc.
|
||
|
|
||
|
RASMAN_USAGE TPCB_Usage ; // CALLIN, CALLOUT or BOTH
|
||
|
|
||
|
TapiLineInfo *TPCB_Line ; // Handle to the "line" this port belongs to
|
||
|
|
||
|
DWORD TPCB_AddressId ; // Address ID for this "port"
|
||
|
|
||
|
HCALL TPCB_CallHandle ; // When connected the call id
|
||
|
|
||
|
HANDLE TPCB_DiscNotificationHandle ; // passed in open
|
||
|
|
||
|
HANDLE TPCB_ReqNotificationHandle ; // passed in device listen and connect
|
||
|
|
||
|
DWORD TPCB_RequestId ; // id for async requests.
|
||
|
|
||
|
DWORD TPCB_AsyncErrorCode ; // used to store asycn returned code.
|
||
|
|
||
|
CHAR TPCB_Info[6][100] ; // port info associated with this connection
|
||
|
|
||
|
DWORD TPCB_Endpoint ; // used to store asyncmac context for unimodem ports
|
||
|
|
||
|
HANDLE TPCB_CommHandle ; // used to store comm port handle used in unimodem ports
|
||
|
|
||
|
OVERLAPPED TPCB_ReadOverlapped ; // used in read async ops.
|
||
|
|
||
|
OVERLAPPED TPCB_WriteOverlapped ; // used in write async ops.
|
||
|
|
||
|
DWORD TPCB_MediaMode ; // Media mode to use for lineopens.
|
||
|
|
||
|
PBYTE TPCB_DevConfig ; // Opaque blob of data used for configuring tapi devices - this is passed in to
|
||
|
// us using DeviceSetDevConfig() ;
|
||
|
|
||
|
DWORD TPCB_SizeOfDevConfig ; // Size of the above blob.
|
||
|
|
||
|
PBYTE TPCB_DefaultDevConfig ; // The current config for the device that is saved away before we write any changes
|
||
|
// to the device. This allows RAS to be a good citizen by not overwriting defauls.
|
||
|
|
||
|
DWORD TPCB_DefaultDevConfigSize ;
|
||
|
|
||
|
DWORD TPCB_DisconnectReason ; // Reason for disconnection.
|
||
|
|
||
|
DWORD TPCB_NumberOfRings ; // Number of rings received so far.
|
||
|
} ;
|
||
|
|
||
|
typedef struct TapiPortControlBlock TapiPortControlBlock ;
|
||
|
|
||
|
|
||
|
VOID FAR PASCAL RasTapiCallback (HANDLE, DWORD, DWORD, DWORD, DWORD, DWORD) ;
|
||
|
|
||
|
VOID SetIsdnParams (TapiPortControlBlock *, LINECALLPARAMS *) ;
|
||
|
|
||
|
VOID GetMutex (HANDLE, DWORD) ;
|
||
|
|
||
|
VOID FreeMutex (HANDLE) ;
|
||
|
|
||
|
DWORD EnumerateTapiPorts (HANDLE) ;
|
||
|
|
||
|
BOOL GetAssociatedPortName(char *szKeyName, CHAR *szPortName) ;
|