windows-nt/Source/XPSP1/NT/base/ntsetup/oobe/msobcomm/wancfg.h
2020-09-26 16:20:57 +08:00

362 lines
14 KiB
C

//****************************************************************************
//
// File: wancfg.h
// Content: This file contains the general WAN-device related declaration
//
// Copyright (c) 1992-1995, Microsoft Corporation, all rights reserved
//
// History:
// Tues 8-15-95 ScottH Created
//
//****************************************************************************
#ifndef _WANCFG_H_
#define _WANCFG_H_
//
// Device types known to the WAN.TSP
//
#define WAN_DEVICETYPE_ISDN 0
#define WAN_DEVICETYPE_PPTP 1
#define WAN_DEVICETYPE_ATM 2
#define MAX_DEVICETYPE 32
#define MAX_DEVICEDESC 260
typedef struct tagWANCONFIG {
DWORD cbSize; /* size of structure */
DWORD cbTotalSize; /* Total mem used by struct & var data */
TCHAR szDeviceType[MAX_DEVICETYPE]; /* device type */
TCHAR szDeviceDesc[MAX_DEVICEDESC]; /* device description */
DWORD dwDeviceOffset; /* offset of device specific data in
bytes from the start */
DWORD cbDeviceSize; /* size of the device specific data
field */
WCHAR wcData[1]; /* device specific data */
} WANCONFIG, FAR * LPWANCONFIG;
// WAN Device Types
#define SZ_WANTYPE_ISDN "ISDN"
#define SZ_WANTYPE_X25 "X.25"
#define SZ_WANTYPE_PPTP "PPTP"
#define SZ_WANTYPE_ATM "ATM"
//
// WAN Phone book data. This data is stored on a per connection basis
// and the device info used for TAPI get and set dev config.
//
typedef struct tagWANPBCONFIG {
DWORD cbSize; /* size of structure */
DWORD cbTotalSize; /* Total size used by struct & var data */
TCHAR szDeviceType[MAX_DEVICETYPE]; /* device type */
DWORD dwDeviceOffset; /* offset of device specific data in
bytes from the start */
DWORD cbDeviceSize; /* size of the device specific data
field */
DWORD dwVendorOffset; /* offset of vendor specific data in
bytes from the start */
DWORD cbVendorSize; /* size of the vendor specific data
field */
DWORD dwReservedOffset; /* offset of reserved data in bytes
from the start */
DWORD cbReservedSize; /* size of the reserved data field */
WCHAR wcData[1]; /* variable data */
} WANPBCONFIG, FAR * LPWANPBCONFIG;
//
// ISDN Phone book data. This data is stored on a per connection basis
// and is the structure returned for get and set dev config.
//
typedef struct tagISDNPBCONFIG {
DWORD dwFlags; /* flags for the line (ISDN_CHAN_*) */
DWORD dwOptions; /* options for the line (ISDN_CHANOPT_) */
DWORD dwSpeedType; /* channel speed and type */
DWORD dwInactivityTimeout; /* disconnect time in seconds */
} ISDNPBCONFIG, FAR * LPISDNPBCONFIG;
typedef struct tagISDNDEVCAPS {
DWORD cbSize; /* size of structure */
DWORD dwFlags; /* flags for the device (ISDN_*) */
DWORD nSubType; /* device subtype (ISDN_SUBTYPE_*) */
DWORD cLinesMax; /* number of physical lines supported */
DWORD cActiveLines; /* number of active physical lines */
} ISDNDEVCAPS, FAR * LPISDNDEVCAPS;
// Flags for ISDNDEVCAPS
#define ISDN_DEFAULT 0x00000000L
#define ISDN_NO_RESTART 0x00000001L
#define ISDN_VENDOR_CONFIG 0x00000002L
// Subtype ordinals
#define ISDN_SUBTYPE_INTERNAL 0L
#define ISDN_SUBTYPE_PCMCIA 1L
#define ISDN_SUBTYPE_PPTP 2L
typedef struct tagISDNLINECAPS {
DWORD cbSize; /* size of structure */
DWORD dwFlags; /* flags for the line (ISDN_LINE_*) */
DWORD dwChannelFlags; /* flags for the channels (ISDN_CHAN_*) */
DWORD dwSwitchType; /* switches supported */
DWORD dwSpeedType; /* speed type */
DWORD cChannelsMax; /* number of B-channels per line supported */
DWORD cActiveChannels; /* number of active channels */
} ISDNLINECAPS, FAR * LPISDNLINECAPS;
// Flags for ISDNLINECAPS
#define ISDN_LINE_DEFAULT 0x00000000L
#define ISDN_LINE_INACTIVE 0x00000001L
// Channel flags for ISDNLINECAPS
#define ISDN_CHAN_DEFAULT 0x00000000L
#define ISDN_CHAN_INACTIVE 0x00000001L
#define ISDN_CHAN_SPEED_ADJUST 0x00000002L
// Switch type
//#define ISDN_SWITCH_NONE 0x00000000L
#define ISDN_SWITCH_AUTO 0x00000001L
#define ISDN_SWITCH_ATT 0x00000002L
#define ISDN_SWITCH_NI1 0x00000004L
#define ISDN_SWITCH_NTI 0x00000008L
#define ISDN_SWITCH_INS64 0x00000010L
#define ISDN_SWITCH_1TR6 0x00000020L
#define ISDN_SWITCH_VN3 0x00000040L /* retained for compatibility, use VN4*/
#define ISDN_SWITCH_NET3 0x00000080L /* retained for compatibility, use DSS1*/
#define ISDN_SWITCH_DSS1 0x00000080L
#define ISDN_SWITCH_AUS 0x00000100L
#define ISDN_SWITCH_BEL 0x00000200L
#define ISDN_SWITCH_VN4 0x00000400L
#define ISDN_SWITCH_NI2 0x00000800L
#define MAX_SWITCH 12 /* Needs to be updated with above list */
// Speed type
#define ISDN_SPEED_64K_DATA 0x00000001L
#define ISDN_SPEED_56K_DATA 0x00000002L
#define ISDN_SPEED_56K_VOICE 0x00000004L
#define ISDN_SPEED_128K_DATA 0x00000008L
typedef struct tagISDNCONFIG {
DWORD cbSize; /* size of structure */
DWORD cbTotalSize; /* Total mem used by struct & var data */
DWORD dwFlags; /* flags for the device (ISDN_*) */
ISDNDEVCAPS idc; /* device capabilities */
DWORD cLines; /* number of physical lines in the
line specific data block */
HKEY hkeyDriver; /* handle to driver registry key */
DWORD dwVendorOffset; /* offset of vendor specific data in
bytes from the start */
DWORD cbVendorSize; /* size of the vendor specific data
field */
DWORD dwReservedOffset; /* offset of reserved data in bytes
from the start */
DWORD cbReservedSize; /* size of the reserved data field */
DWORD dwLineOffset; /* offset of line specific data
in bytes from the start */
DWORD cbLineSize; /* size of the line specific data */
WORD padding; /* padding for dword alignment */
WCHAR wcData[1]; /* variable data */
} ISDNCONFIG, FAR * LPISDNCONFIG;
typedef struct tagISDNLINE {
DWORD cbSize; /* size of structure */
DWORD cbTotalSize; /* Total mem used by struct & var data */
DWORD dwLineID; /* unique line ID */
DWORD dwFlags; /* flags for the line (ISDN_LINE_*) */
DWORD dwOptions; /* options for the line (ISDN_LINEOPT_) */
DWORD dwSwitchType; /* switch type */
DWORD dwUseChannel; /* specific channel to use or number
of channels to use */
ISDNLINECAPS ilc; /* line capabilities */
DWORD cChannels; /* number of channels in the channel
specific data block */
HKEY hkeyLine; /* handle to line registry key */
DWORD dwVendorOffset; /* offset of vendor specific data in
bytes from the start */
DWORD cbVendorSize; /* size of the vendor specific data
field */
DWORD dwReservedOffset; /* offset of reserved data in bytes
from the start */
DWORD cbReservedSize; /* size of the reserved data field */
DWORD dwChannelOffset; /* offset of channel specific data
in bytes from the start */
DWORD cbChannelSize; /* size of the channel specific data */
WORD padding; /* padding for dword alignment */
WCHAR wcData[1]; /* variable data */
} ISDNLINE, FAR * LPISDNLINE;
// Options for line
#define ISDN_LINEOPT_DEFAULT 0x00000000L
#define ISDN_LINEOPT_CHANNELID 0x00000001L
#define ISDN_LINEOPT_FIXEDCOUNT 0x00000002L
#define MAX_PHONE 32
#define MAX_SPID 32
typedef struct tagISDNCHANNEL {
DWORD cbSize; /* size of structure */
DWORD cbTotalSize; /* Total mem used by struct & var data */
DWORD dwChannelID; /* unique channel ID */
DWORD dwFlags; /* flags for the line (ISDN_CHAN_*) */
DWORD dwOptions; /* options for the line (ISDN_CHANOPT_) */
DWORD dwSpeedType; /* channel speed and type */
DWORD dwInactivityTimeout; /* disconnect time in seconds */
TCHAR szPhone[MAX_PHONE]; /* phone number */
TCHAR szSPID[MAX_SPID]; /* SPID */
HKEY hkeyChannel; /* handle to channel registry key */
DWORD dwVendorOffset; /* offset of vendor specific data in
bytes from the start */
DWORD cbVendorSize; /* size of the vendor specific data
field */
DWORD dwReservedOffset; /* offset of reserved data in bytes
from the start */
DWORD cbReservedSize; /* size of the reserved data field */
WORD padding; /* padding for dword alignment */
WCHAR wcData[1]; /* variable data */
} ISDNCHANNEL, FAR * LPISDNCHANNEL;
// Options for channel
#define ISDN_CHANOPT_DEFAULT 0x00000000L
#define ISDN_CHANOPT_SHOW_STATUS 0x00000001L
#define ISDN_CHANOPT_ENABLE_LOG 0x00000002L
#define ISDN_CHANOPT_INACTIVE_TIMEOUT 0x00000004L
//
// ATM Configuration info
//
typedef struct tagATMCONFIG {
DWORD cbSize; /* size of structure */
DWORD cbTotalSize; /* Total mem used by struct & var data */
DWORD dwFlags; /* flags for the device */
DWORD dwCircuitFlags; /* flags for the circuit */
HKEY hkeyDriver; /* handle to driver registry key */
DWORD dwVendorOffset; /* offset of vendor specific data in
bytes from the start */
DWORD cbVendorSize; /* size of the vendor specific data
field */
DWORD dwReservedOffset; /* offset of reserved data in bytes
from the start */
DWORD cbReservedSize; /* size of the reserved data field */
WCHAR wcData[1]; /* variable data */
} ATMCONFIG, FAR * LPATMCONFIG;
//
// ATM Phone book data. This data is stored on a per connection basis
// and is the structure returned for get and set dev config.
//
typedef struct tagATMPBCONFIG {
DWORD dwGeneralOpt; /* General options */
DWORD dwCircuitOpt; /* Circuit options */
DWORD dwCircuitSpeed; /* Circuit Speed */
WORD wPvcVpi; /* PVC: VPI */
WORD wPvcVci; /* PVC: VCI */
} ATMPBCONFIG, FAR * LPATMPBCONFIG;
//
// Flags for ATM Phone Book entry
//
//
// ATM General Options
//
#define ATM_GENERAL_OPT_VENDOR_CONFIG 0x00000001L
#define ATM_GENERAL_OPT_SHOW_STATUS 0x00000002L
#define ATM_GENERAL_OPT_ENABLE_LOG 0x00000004L
#define ATM_GENERAL_OPT_MASK 0x0000000FL
#define ATM_GENERAL_OPT_DEFAULT 0x00000000L
//
// ATM Circuit Options
//
#define ATM_CIRCUIT_OPT_QOS_ADJUST 0x00000010L
#define ATM_CIRCUIT_OPT_SPEED_ADJUST 0x00000020L
#define ATM_CIRCUIT_OPT_SVC 0x00000040L
#define ATM_CIRCUIT_OPT_PVC 0x00000080L
#define ATM_CIRCUIT_OPT_MASK 0x000000F0L
#define ATM_CIRCUIT_OPT_DEFAULT (ATM_CIRCUIT_OPT_SVC | ATM_CIRCUIT_OPT_QOS_ADJUST | ATM_CIRCUIT_OPT_SPEED_ADJUST)
//
// ATM QOS Flags
//
#define ATM_CIRCUIT_QOS_VBR 0x00000100L
#define ATM_CIRCUIT_QOS_CBR 0x00000200L
#define ATM_CIRCUIT_QOS_ABR 0x00000400L
#define ATM_CIRCUIT_QOS_UBR 0x00000800L
#define ATM_CIRCUIT_QOS_MASK 0x00000F00L
#define ATM_CIRCUIT_QOS_DEFAULT (ATM_CIRCUIT_QOS_UBR)
//
// ATM Speed Flags
//
#define ATM_CIRCUIT_SPEED_LINE_RATE 0x00001000L
#define ATM_CIRCUIT_SPEED_USER_SPEC 0x00002000L
#define ATM_CIRCUIT_SPEED_512KB 0x00004000L
#define ATM_CIRCUIT_SPEED_1536KB 0x00008000L
#define ATM_CIRCUIT_SPEED_25MB 0x00010000L
#define ATM_CIRCUIT_SPEED_155MB 0x00020000L
#define ATM_CIRCUIT_SPEED_MASK 0x000FF000L
#define ATM_CIRCUIT_SPEED_DEFAULT (ATM_CIRCUIT_SPEED_LINE_RATE)
//
// ATM Encapsulation Flags
//
#define ATM_CIRCUIT_ENCAP_NULL 0x00100000L
#define ATM_CIRCUIT_ENCAP_LLC 0x00200000L
#define ATM_CIRCUIT_ENCAP_MASK 0x00F00000L
#define ATM_CIRCUIT_ENCAP_DEFAULT (ATM_CIRCUIT_ENCAP_NULL)
//
// WAN Handler binding
//
DWORD WINAPI WanBind_Get(LPCTSTR pszDeviceType);
DWORD WINAPI WanBind_Release(LPCTSTR pszDeviceType);
HICON WINAPI WanBind_GetIcon(LPCTSTR pszDeviceType);
DWORD WINAPI WanBind_ConfigDialog(LPCTSTR pszDeviceType, LPCTSTR pszFriendlyName, HWND hwndOwner, LPWANCONFIG pwc, LPWANPBCONFIG pwpbc);
DWORD WINAPI WanBind_QueryConfigData(LPCTSTR pszDeviceType, HKEY hkey, DWORD dwLineID, LPVOID pvData, LPDWORD pcbData);
//
// Exports by the handler
//
DWORD WINAPI WanQueryConfigData(HKEY hkey, DWORD dwLineID, LPVOID pvData, LPDWORD pcbData);
DWORD WINAPI WanConfigDialog(LPCTSTR pszFriendlyName, HWND hwndOwner, LPWANCONFIG lpwanconfig, LPWANPBCONFIG pwpbc);
#endif //_WANCFG_H_