windows-nt/Source/XPSP1/NT/base/ntsetup/oobe/msobcomm/obcomglb.h

852 lines
30 KiB
C
Raw Normal View History

2020-09-26 03:20:57 -05:00
#ifndef __OBCOMGLB_H_
#define __OBCOMGLB_H_
#include <windows.h>
#include <tchar.h>
#include <ras.h>
#include <raserror.h>
#include <tapi.h>
#include "wininet.h"
#include <mapidefs.h>
#include <assert.h>
#include "appdefs.h"
//--------------------------------------------------------------------------------
// obcomglb.h
// The information contained in this file is the sole property of Microsoft Corporation.
// Copywrite Microsoft 1999
//
// Created 2/7/99, vyung
//--------------------------------------------------------------------------------
//-----------------------------------------------------------------------------
// DEFINES
#undef DATASEG_PERINSTANCE
#define DATASEG_PERINSTANCE ".instance"
#define DATASEG_SHARED ".data"
#define DATASEG_DEFAULT DATASEG_SHARED
#undef DATASEG_READONLY
#define DATASEG_READONLY ".rdata"
#define ERROR_USERCANCEL 32767 // quit message value
#define ERROR_USERBACK 32766 // back message value
#define ERROR_USERNEXT 32765 // back message value
#define ERROR_DOWNLOADIDNT 32764 // Download failure
#define ERROR_READING_DUN 32768
#define ERROR_READING_ISP 32769
#define ERROR_PHBK_NOT_FOUND 32770
#define ERROR_DOWNLOAD_NOT_FOUND 32771
#define cMarvelBpsMin 2400 // minimum modem speed
#define INVALID_PORTID UINT_MAX
#define pcszDataModem L"comm/datamodem"
#define MAX_SECTIONS_BUFFER 1024
#define MAX_KEYS_BUFFER 1024
// install TCP (if needed)
#define ICFG_INSTALLTCP 0x00000001
// install RAS (if needed)
#define ICFG_INSTALLRAS 0x00000002
// install exchange and internet mail
#define ICFG_INSTALLMAIL 0x00000004
//
// ChrisK 5/8/97
// Note: the next three switches are only valid for IcfgNeedInetComponet
// check to see if a LAN adapter with TCP bound is installed
//
#define ICFG_INSTALLLAN 0x00000008
//
// Check to see if a DIALUP adapter with TCP bound is installed
//
#define ICFG_INSTALLDIALUP 0x00000010
//
// Check to see if TCP is installed
//
#define ICFG_INSTALLTCPONLY 0x00000020
#define szLoginKey L"Software\\Microsoft\\MOS\\Connection"
#define szCurrentComDev L"CurrentCommDev"
#define szTollFree L"OlRegPhone"
#define CCD_BUFFER_SIZE 255
#define szSignupConnectoidName L"MSN Signup Connection"
#define szSignupDeviceKey L"SignupCommDevice"
#define KEYVALUE_SIGNUPID L"iSignUp"
#define RASENTRYVALUENAME L"RasEntryName"
#define GATHERINFOVALUENAME L"UserInfo"
#define INFFILE_USER_SECTION L"User"
#define INFFILE_PASSWORD L"Password"
#define INFFILE_DOMAIN L"Domain"
#define DUN_SECTION L"DUN"
#define USERNAME L"Username"
#define INF_OEMREGPAGE L"OEMRegistrationPage"
#define NULLSZ L""
#define cchMoreSpace 22000 // bytes needed to hold results of lineGetCountry(0, ...).
// Currently this function returns about 16K, docs say 20K,
// this should be enough.
#define DwFromSz(sz) Sz2Dw(sz) //make it inline, so this is faster.
#define DwFromSzFast(sz) Sz2DwFast(sz)
#define CONNECT_SIGNUPFIRST 1 // phonenumber constant for determining the firstcall phonenumber TO DO
#define CONNECTFLAGS_MASK_TOLLFREE 0x01
#define CONNECTFLAGS_MASK_TCP 0x02
#define CONNECTFLAGS_MASK_ISDN 0x04
#define CONNECTFLAGS_MASK_DIRECT 0x08
#define CONNECTFLAGS_MASK_OTHERDIALUP 0x10
#define CONNECTFLAGS_MASK_PROXY 0x20
#define CONNECTFLAGS_MASK_FIRST CONNECTFLAGS_MASK_TCP
#define CONNECTFLAGS_MASK_LAST CONNECTFLAGS_MASK_ISDN
#define CONNECTMSNDIALUP(dw) ((dw & (CONNECTFLAGS_MASK_TOLLFREE|CONNECTFLAGS_M
#define LANORSHUTTLE(dw) ((dw)==10 || (dw)==34)
#define IS_SHUTTLE(dw) ((dw)==34)
#define IS_ISP(dw) ((dw)==18)
#define CONNECTPROTOCOL_MSNDIALUPX25 0
#define CONNECTPROTOCOL_MSNDIALUPTCP 2
#define CONNECTPROTOCOL_MSNDIALUPTCPISDN 6
#define CONNECTPROTOCOL_LANDIRECT 10
#define CONNECTPROTOCOL_ISPDIALUPTCP 18
#define CONNECTPROTOCOL_LANSHUTTLE 34
#define clineMaxATT 16 //for 950 MNEMONIC
#define NXXMin 200
#define NXXMax 999
#define cbgrbitNXX ((NXXMax + 1 - NXXMin) / 8)
#define crgnpab (NPAMax + 1 - NPAMin)
#define MAX_PROMO 64
#define MAX_OEMNAME 64
#define MAX_AREACODE RAS_MaxAreaCode
#define MAX_RELPROD 8
#define MAX_RELVER 30
#define MAX_STRING 256 //used by ErrorMsg1 in mt.cpp
#define NUM_PHBK_SUGGESTIONS 50
#define TYPE_SIGNUP_ANY 0x82
#define MASK_SIGNUP_ANY 0xB2
//#define RASENUMAPI "RasEnumConnectionsA"
//#define RASHANGUP "RasHangUpA"
#define INF_SUFFIX L".ISP"
#define INF_PHONE_BOOK L"PhoneBookFile"
#define INF_DUN_FILE L"DUNFile"
#define INF_REFERAL_URL L"URLReferral"
#define INF_SIGNUPEXE L"Sign_Up_EXE"
#define INF_SIGNUPPARAMS L"Sign_Up_Params"
#define INF_WELCOME_LABEL L"Welcome_Label"
#define INF_ISP_MSNSU L"MSICW"
#define INF_SIGNUP_URL L"Signup"
#define INF_AUTOCONFIG_URL L"AutoConfig"
#define INF_ISDN_URL L"ISDNSignup"
#define INF_ISDN_AUTOCONFIG_URL L"ISDNAutoConfig"
#define INF_SECTION_URL L"URL"
#define INF_SECTION_ISPINFO L"ISP INFO"
#define INF_RECONNECT_URL L"Reconnect"
#define INF_SECTION_CONNECTION L"Connection"
#define ISP_MSNSIGNUP L"MsnSignup"
#define QUERY_STRING_MSNSIGNUP L"&MSNSIGNUP=1"
#define DUN_NOPHONENUMBER L"000000000000"
#define MAX_VERSION_LEN 40
#define MB_MYERROR (MB_APPLMODAL | MB_ICONERROR | MB_SETFOREGROUND)
// 8/9/96 jmazner
// Added new macro to fix MOS Normandy Bug #4170
#define MB_MYINFORMATION (MB_APPLMODAL | MB_ICONINFORMATION | MB_SETFOREGROUND)
// 8/27/96 jmazner
#define MB_MYEXCLAMATION (MB_APPLMODAL | MB_ICONEXCLAMATION | MB_SETFOREGROUND)
#define WM_STATECHANGE WM_USER
#define WM_DIENOW WM_USER + 1
#define WM_DUMMY WM_USER + 2
#define WM_DOWNLOAD_DONE WM_USER + 3
#define WM_DOWNLOAD_PROGRESS WM_USER + 4
#define WM_MYINITDIALOG (WM_USER + 4)
#define MAX_REDIALS 2
#define REG_USER_INFO L"Software\\Microsoft\\User information"
#define REG_USER_NAME1 L"Default First Name"
#define REG_USER_NAME2 L"Default Last Name"
#define REG_USER_COMPANY L"Default Company"
#define REG_USER_ADDRESS1 L"Mailing Address"
#define REG_USER_ADDRESS2 L"Additional Address"
#define REG_USER_CITY L"City"
#define REG_USER_STATE L"State"
#define REG_USER_ZIP L"ZIP Code"
#define REG_USER_PHONE L"Daytime Phone"
#define REG_USER_COUNTRY L"Country"
#define SIGNUPKEY L"SOFTWARE\\MICROSOFT\\GETCONN"
#define DEVICENAMEKEY L"DeviceName" // used to store user's choice among multiple modems
#define DEVICETYPEKEY L"DeviceType"
#define ICWSETTINGSPATH L"Software\\Microsoft\\Internet Connection Wizard"
#define ICWBUSYMESSAGES L"Software\\Microsoft\\Internet Connection Wizard\\Busy Messages"
#define ICWCOMPLETEDKEY L"Completed"
#define OOBERUNONCE L"Software\\Microsoft\\Windows\\CurrentVersion\\RunOnce"
#define ICSSETTINGSPATH L"Software\\Microsoft\\Windows\\CurrentVersion\\ICS"
#define ICSCLIENT L"ICS Client"
#define RELEASEPRODUCTKEY L"Release Product"
#define RELEASEVERSIONKEY L"Release Product Version"
#define MAX_DIGITAL_PID 256
#define CONNECTOIDNAME L"Connectoid"
#define ACCESSINFO L"AccessInfo"
#define SETUPPATH_NONE L"current"
#define SETUPPATH_MANUAL L"manual"
#define SETUPPATH_AUTO L"automatic"
#define MAX_SETUPPATH_TOKEN 200
// Defines
#define MAX_ISP_NAME (RAS_MaxEntryName-1) // internet service provider name
#define MAX_ISP_USERNAME UNLEN // max length of login username
#define MAX_ISP_PASSWORD PWLEN // max length of login password
#define MAX_PORT_LEN 5 // max length of proxy port number (max # = 65535)
// constants for INETCLIENTINFO.dwFlags
#define INETC_LOGONMAIL 0x00000001
#define INETC_LOGONNEWS 0x00000002
#define INETC_LOGONDIRSERV 0x00000004
// Connection Type
#define CONNECTION_ICS_TYPE 0x00000001
#define ERROR_INETCFG_UNKNOWN 0x20000000L
#define MAX_EMAIL_NAME 64
#define MAX_EMAIL_ADDRESS 128
#define MAX_LOGON_NAME UNLEN
#define MAX_LOGON_PASSWORD PWLEN
#define MAX_SERVER_NAME 64 // max length of DNS name per RFC 1035 +1
// IE Auto proxy value in registry
#define AUTO_ONCE_EVER 0 // Auto proxy discovery
#define AUTO_DISABLED 1
#define AUTO_ONCE_PER_SESSION 2
#define AUTO_ALWAYS 3
// Flags for dwfOptions
// install Internet mail
#define INETCFG_INSTALLMAIL 0x00000001
// Invoke InstallModem wizard if NO MODEM IS INSTALLED
#define INETCFG_INSTALLMODEM 0x00000002
// install RNA (if needed)
#define INETCFG_INSTALLRNA 0x00000004
// install TCP (if needed)
#define INETCFG_INSTALLTCP 0x00000008
// connecting with LAN (vs modem)
#define INETCFG_CONNECTOVERLAN 0x00000010
// Set the phone book entry for autodial
#define INETCFG_SETASAUTODIAL 0x00000020
// Overwrite the phone book entry if it exists
// Note: if this flag is not set, and the entry exists, a unique name will
// be created for the entry.
#define INETCFG_OVERWRITEENTRY 0x00000040
// Do not show the dialog that tells the user that files are about to be installed,
// with OK/Cancel buttons.
#define INETCFG_SUPPRESSINSTALLUI 0x00000080
// Check if TCP/IP file sharing is turned on, and warn user to turn it off.
// Reboot is required if the user turns it off.
#define INETCFG_WARNIFSHARINGBOUND 0x00000100
// Check if TCP/IP file sharing is turned on, and force user to turn it off.
// If user does not want to turn it off, return will be ERROR_CANCELLED
// Reboot is required if the user turns it off.
#define INETCFG_REMOVEIFSHARINGBOUND 0x00000200
// Indicates that this is a temporary phone book entry
// In Win3.1 an icon will not be created
#define INETCFG_TEMPPHONEBOOKENTRY 0x00000400
// Show the busy dialog while checking system configuration
#define INETCFG_SHOWBUSYANIMATION 0x00000800
//
// Chrisk 5/8/97
// Note: the next three switches are only valid for InetNeedSystemComponents
// Check if LAN adapter is installed and bound to TCP
//
#define INETCFG_INSTALLLAN 0x00001000
//
// Check if DIALUP adapter is installed and bound to TCP
//
#define INETCFG_INSTALLDIALUP 0x00002000
//
// Check to see if TCP is installed requardless of binding
//
#define INETCFG_INSTALLTCPONLY 0x00004000
/*
#ifdef __cplusplus
extern "C"
{
#endif // __cplusplus
*/
// constants for INETCLIENTINFO.dwFlags
#define INETC_LOGONMAIL 0x00000001
#define INETC_LOGONNEWS 0x00000002
#define INETC_LOGONDIRSERV 0x00000004
#define NUM_SERVER_TYPES 4
#define STR_BSTR 0
#define STR_OLESTR 1
#define BSTRFROMANSI(x) (BSTR)MakeWideStrFromAnsi((LPWSTR)(x), STR_BSTR)
#define OLESTRFROMANSI(x) (LPOLESTR)MakeWideStrFromAnsi((LPWSTR)(x), STR_OLESTR)
#define BSTRFROMRESID(x) (BSTR)MakeWideStrFromResourceId(x, STR_BSTR)
#define OLESTRFROMRESID(x) (LPOLESTR)MakeWideStrFromResourceId(x, STR_OLESTR)
#define COPYOLESTR(x) (LPOLESTR)MakeWideStrFromWide(x, STR_OLESTR)
#define COPYBSTR(x) (BSTR)MakeWideStrFromWide(x, STR_BSTR)
// Note that bryanst and marcl have confirmed that this key will be supported in IE 4
#define IE_PATHKEY L"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\App Paths\\IEXPLORE.EXE"
// IE 4 has major.minor version 4.71
// IE 3 golden has major.minor.release.build version # > 4.70.0.1155
// IE 2 has major.minor of 4.40
#define IE4_MAJOR_VERSION (UINT) 4
#define IE4_MINOR_VERSION (UINT) 71
#define IE4_VERSIONMS (DWORD) ((IE4_MAJOR_VERSION << 16) | IE4_MINOR_VERSION)
// 4-30-97 ChrisK Olympus 2934
// While the ICW is trying to connect to the referral server, indicate something is
// working
#define MAX_BUSY_MESSAGE 255
#define MAX_VALUE_NAME 10
#define DEFAULT_IDEVENT 31
#define DEFAULT_UELAPSE 3000
#define cbAreaCode 6 // maximum number of characters in an area code, not including \0
#define cbCity 19 // maximum number of chars in city name, not including \0
#define cbAccessNumber 15 // maximum number of chars in phone number, not including \0
#define cbStateName 31 // maximum number of chars in state name, not including \0
#define cbBaudRate 6 // maximum number of chars in a baud rate, not including \0
#define cbDataCenter (MAX_PATH+1) // max length of data center string
#define MAX_EXIT_RETRIES 10
static const WCHAR szFmtAppendIntToString[] = L"%s %d";
static const WCHAR cszOobePhBkFile[] = L"Phone.obe";
static const WCHAR cszOobePhBkCountry[] = L"COUNTRY_CODE";
static const WCHAR cszOobePhBkCount[] = L"NUMBERS";
static const WCHAR cszOobePhBkNumber[] = L"NUMBER%d";
static const WCHAR cszOobePhBkDunFile[] = L"NUMBER%d_DUN";
static const WCHAR cszOobePhBkCity[] = L"NUMBER%d_CITY";
static const WCHAR cszOobePhBkAreaCode[] = L"NUMBER%d_ACODE";
static const WCHAR cszOobePhBkRandom[] = L"RANDOM";
static const WCHAR cszHTTPS[] = L"https:";
// code relies on these two being the same length
static const WCHAR cszHTTP[] = L"http:";
static const WCHAR cszFILE[] = L"file:";
static const WCHAR cszOEMBRND[] = L"oembrnd.ins";
static const WCHAR cszOEMCNFG[] = L"oemcnfg.ins";
static const WCHAR cszISPCNFG[] = L"ispcnfg.ins";
static const WCHAR cszOOBEINFOINI[] = L"oobeinfo.INI";
static const WCHAR cszSignup[] = L"Signup";
static const WCHAR cszOfferCode[] = L"OfferCode";
static const WCHAR cszISPSignup[] = L"ISPSignup";
static const WCHAR cszISPQuery[] = L"Query String";
static const WCHAR cszBranding[] = L"Branding";
static const WCHAR cszOEMName[] = L"OEMName";
static const WCHAR cszOptions[] = L"Options";
static const WCHAR cszBroadbandDeviceName[] = L"BroadbandDeviceName";
static const WCHAR cszBroadbandDevicePnpid[] = L"BroadbandDevicePnpid";
//--------------------------------------------------------------------------------
// Type declarations
// NOTE: due to code in connmain, the order of these IS IMPORTANT. They should be
// in the same order that they appear.
typedef HRESULT (WINAPI * ICFGNEEDSYSCOMPONENTS) (DWORD dwfOptions, LPBOOL lpfNeedComponents);
typedef struct tagGatherInfo
{
LCID m_lcidUser;
LCID m_lcidSys;
LCID m_lcidApps;
DWORD m_dwOS;
DWORD m_dwMajorVersion;
DWORD m_dwMinorVersion;
WORD m_wArchitecture;
WCHAR m_szPromo[MAX_PROMO];
DWORD m_dwCountryID;
DWORD m_dwCountryCode;
WCHAR m_szAreaCode[MAX_AREACODE+1];
HWND m_hwnd;
LPLINECOUNTRYLIST m_pLineCountryList;
BOOL m_bUsePhbk;
//LPCNTRYNAMELOOKUPELEMENT m_rgNameLookUp;
WCHAR m_szSUVersion[MAX_VERSION_LEN];
WORD m_wState;
BYTE m_fType;
BYTE m_bMask;
WCHAR m_szISPFile[MAX_PATH+1];
WCHAR m_szAppDir[MAX_PATH+1];
WCHAR m_szRelProd[MAX_RELPROD + 1];
WCHAR m_szRelVer[MAX_RELVER + 1];
DWORD m_dwFlag;
} GATHERINFO, *LPGATHERINFO;
typedef struct tagRASDEVICE
{
LPRASDEVINFO lpRasDevInfo;
DWORD dwTapiDev;
} RASDEVICE, *PRASDEVICE;
HRESULT GetINTFromISPFile
(
LPWSTR pszISPCode,
LPWSTR pszSection,
LPWSTR pszDataName,
int far *lpData,
int iDefaultValue
);
typedef struct tagINETCLIENTINFO
{
DWORD dwSize;
DWORD dwFlags;
WCHAR szEMailName[MAX_EMAIL_NAME + 1];
WCHAR szEMailAddress[MAX_EMAIL_ADDRESS + 1];
WCHAR szPOPLogonName[MAX_LOGON_NAME + 1];
WCHAR szPOPLogonPassword[MAX_LOGON_PASSWORD + 1];
WCHAR szPOPServer[MAX_SERVER_NAME + 1];
WCHAR szSMTPServer[MAX_SERVER_NAME + 1];
WCHAR szNNTPLogonName[MAX_LOGON_NAME + 1];
WCHAR szNNTPLogonPassword[MAX_LOGON_PASSWORD + 1];
WCHAR szNNTPServer[MAX_SERVER_NAME + 1];
// end of version 1.0 structure;
// extended 1.1 structure includes the following fields:
WCHAR szNNTPName[MAX_EMAIL_NAME + 1];
WCHAR szNNTPAddress[MAX_EMAIL_ADDRESS + 1];
int iIncomingProtocol;
WCHAR szIncomingMailLogonName[MAX_LOGON_NAME + 1];
WCHAR szIncomingMailLogonPassword[MAX_LOGON_PASSWORD + 1];
WCHAR szIncomingMailServer[MAX_SERVER_NAME + 1];
BOOL fMailLogonSPA;
BOOL fNewsLogonSPA;
WCHAR szLDAPLogonName[MAX_LOGON_NAME + 1];
WCHAR szLDAPLogonPassword[MAX_LOGON_PASSWORD + 1];
WCHAR szLDAPServer[MAX_SERVER_NAME + 1];
BOOL fLDAPLogonSPA;
BOOL fLDAPResolve;
} INETCLIENTINFO, *PINETCLIENTINFO, FAR *LPINETCLIENTINFO;
typedef struct SERVER_TYPES_tag
{
WCHAR szType[6];
DWORD dwType;
DWORD dwfOptions;
} SERVER_TYPES;
typedef struct
{
DWORD dwIndex; // index number
BYTE bFlipFactor; // for auto-pick
DWORD fType; // phone number type
WORD wStateID; // state ID
DWORD dwCountryID; // TAPI country ID
DWORD dwCountryCode; // TAPI country code
DWORD dwAreaCode; // area code or NO_AREA_CODE if none
DWORD dwConnectSpeedMin; // minimum baud rate
DWORD dwConnectSpeedMax; // maximum baud rate
WCHAR szCity[MAX_PATH]; // city name
WCHAR szAccessNumber[MAX_PATH]; // access number
WCHAR szDataCenter[MAX_PATH]; // data center access string
WCHAR szAreaCode[MAX_PATH]; //Keep the actual area code string around.
} ACCESSENTRY, far *PACCESSENTRY; // ae
typedef struct tagSUGGESTIONINFO
{
DWORD dwCountryID;
DWORD dwCountryCode;
DWORD dwAreaCode;
DWORD dwPick;
WORD wNumber;
//DWORD fType; // 9/6/96 jmazner Normandy
//DWORD bMask; // make this struct look like the one in %msnroot%\core\client\phbk\phbk.h
ACCESSENTRY AccessEntry;
} SUGGESTINFO, far *PSUGGESTINFO;
// structure used to pass information to mail profile config APIs.
// Most likely the pointers point into a USERINFO struct,
typedef struct MAILCONFIGINFO {
WCHAR * pszEmailAddress; // user's email address
WCHAR * pszEmailServer; // user's email server path
WCHAR * pszEmailDisplayName; // user's name
WCHAR * pszEmailAccountName; // account name
WCHAR * pszEmailAccountPwd; // account password
WCHAR * pszProfileName; // name of profile to use
// (create or use default if NULL)
BOOL fSetProfileAsDefault; // set profile as default profile
WCHAR * pszConnectoidName; // name of connectoid to dial
BOOL fRememberPassword; // password cached if TRUE
} MAILCONFIGINFO;
// structure to pass data back from IDD_CHOOSEPROFILENAME handler
typedef struct tagCHOOSEPROFILEDLGINFO
{
WCHAR szProfileName[cchProfileNameMax+1];
BOOL fSetProfileAsDefault;
} CHOOSEPROFILEDLGINFO, * PCHOOSEPROFILEDLGINFO;
// structure for getting proc addresses of api functions
typedef struct APIFCN {
PVOID * ppFcnPtr;
LPCSTR pszName;
} APIFCN;
// The following are the names for the name/value pairs that will be passed as a query string to the
// ISP signup server
const WCHAR csz_USER_FIRSTNAME[] = L"USER_FIRSTNAME";
const WCHAR csz_USER_LASTNAME[] = L"USER_LASTNAME";
const WCHAR csz_USER_ADDRESS[] = L"USER_ADDRESS";
const WCHAR csz_USER_MOREADDRESS[] = L"USER_MOREADDRESS";
const WCHAR csz_USER_CITY[] = L"USER_CITY";
const WCHAR csz_USER_STATE[] = L"USER_STATE";
const WCHAR csz_USER_ZIP[] = L"USER_ZIP";
const WCHAR csz_USER_PHONE[] = L"USER_PHONE";
const WCHAR csz_AREACODE[] = L"AREACODE";
const WCHAR csz_COUNTRYCODE[] = L"COUNTRYCODE";
const WCHAR csz_USER_FE_NAME[] = L"USER_FE_NAME";
const WCHAR csz_PAYMENT_TYPE[] = L"PAYMENT_TYPE";
const WCHAR csz_PAYMENT_BILLNAME[] = L"PAYMENT_BILLNAME";
const WCHAR csz_PAYMENT_BILLADDRESS[] = L"PAYMENT_BILLADDRESS";
const WCHAR csz_PAYMENT_BILLEXADDRESS[] = L"PAYMENT_BILLEXADDRESS";
const WCHAR csz_PAYMENT_BILLCITY[] = L"PAYMENT_BILLCITY";
const WCHAR csz_PAYMENT_BILLSTATE[] = L"PAYMENT_BILLSTATE";
const WCHAR csz_PAYMENT_BILLZIP[] = L"PAYMENT_BILLZIP";
const WCHAR csz_PAYMENT_BILLPHONE[] = L"PAYMENT_BILLPHONE";
const WCHAR csz_PAYMENT_DISPLAYNAME[] = L"PAYMENT_DISPLAYNAME";
const WCHAR csz_PAYMENT_CARDNUMBER[] = L"PAYMENT_CARDNUMBER";
const WCHAR csz_PAYMENT_EXMONTH[] = L"PAYMENT_EXMONTH";
const WCHAR csz_PAYMENT_EXYEAR[] = L"PAYMENT_EXYEAR";
const WCHAR csz_PAYMENT_CARDHOLDER[] = L"PAYMENT_CARDHOLDER";
const WCHAR csz_SIGNED_PID[] = L"SIGNED_PID";
const WCHAR csz_GUID[] = L"GUID";
const WCHAR csz_OFFERID[] = L"OFFERID";
const WCHAR csz_USER_COMPANYNAME[] = L"USER_COMPANYNAME";
const WCHAR csz_ICW_VERSION[] = L"ICW_Version";
//Info required flags
// 1 -- required
// 0 -- optional
//User Info
#define REQUIRE_FE_NAME 0x00000001
#define REQUIRE_FIRSTNAME 0x00000002
#define REQUIRE_LASTNAME 0x00000004
#define REQUIRE_ADDRESS 0x00000008
#define REQUIRE_MOREADDRESS 0x00000010
#define REQUIRE_CITY 0x00000020
#define REQUIRE_STATE 0x00000040
#define REQUIRE_ZIP 0x00000080
#define REQUIRE_PHONE 0x00000100
#define REQUIRE_COMPANYNAME 0x00000200
//Credit Card
#define REQUIRE_CCNAME 0x00000400
#define REQUIRE_CCADDRESS 0x00000800
#define REQUIRE_CCNUMBER 0x00001000
#define REQUIRE_CCZIP REQUIRE_ZIP
//Invoice
#define REQUIRE_IVADDRESS1 REQUIRE_ADDRESS
#define REQUIRE_IVADDRESS2 REQUIRE_MOREADDRESS
#define REQUIRE_IVCITY REQUIRE_CITY
#define REQUIRE_IVSTATE REQUIRE_STATE
#define REQUIRE_IVZIP REQUIRE_ZIP
//Phone
#define REQUIRE_PHONEIV_BILLNAME 0x00002000
#define REQUIRE_PHONEIV_ACCNUM REQUIRE_PHONE
//Htm pagetype flags
#define PAGETYPE_UNDEFINED E_FAIL
#define PAGETYPE_NOOFFERS 0x00000001
#define PAGETYPE_MARKETING 0x00000002
#define PAGETYPE_BRANDED 0x00000004
#define PAGETYPE_BILLING 0x00000008
#define PAGETYPE_CUSTOMPAY 0x00000010
#define PAGETYPE_ISP_NORMAL 0x00000020
#define PAGETYPE_ISP_TOS 0x00000040
#define PAGETYPE_ISP_FINISH 0x00000080
#define PAGETYPE_ISP_CUSTOMFINISH 0x00000100
#define PAGETYPE_OLS_FINISH 0x00000200
typedef BOOL (* VALIDATECONTENT) (LPCWSTR lpData);
enum IPSDataContentValidators
{
ValidateCCNumber = 0,
ValidateCCExpire
};
typedef struct tag_ISPDATAELEMENT
{
LPCWSTR lpQueryElementName; // Static name to put in query string
LPWSTR lpQueryElementValue; // data for element
WORD idContentValidator; // id of content validator
WORD wValidateNameID; // validation element name string ID
DWORD dwValidateFlag; // validation bit flag for this element
}ISPDATAELEMENT, *LPISPDATAELEMENT;
enum IPSDataElements
{
ISPDATA_USER_FIRSTNAME = 0,
ISPDATA_USER_LASTNAME,
ISPDATA_USER_ADDRESS,
ISPDATA_USER_MOREADDRESS,
ISPDATA_USER_CITY,
ISPDATA_USER_STATE,
ISPDATA_USER_ZIP,
ISPDATA_USER_PHONE,
ISPDATA_AREACODE,
ISPDATA_COUNTRYCODE,
ISPDATA_USER_FE_NAME,
ISPDATA_PAYMENT_TYPE,
ISPDATA_PAYMENT_BILLNAME,
ISPDATA_PAYMENT_BILLADDRESS,
ISPDATA_PAYMENT_BILLEXADDRESS,
ISPDATA_PAYMENT_BILLCITY,
ISPDATA_PAYMENT_BILLSTATE,
ISPDATA_PAYMENT_BILLZIP,
ISPDATA_PAYMENT_BILLPHONE,
ISPDATA_PAYMENT_DISPLAYNAME,
ISPDATA_PAYMENT_CARDNUMBER,
ISPDATA_PAYMENT_EXMONTH,
ISPDATA_PAYMENT_EXYEAR,
ISPDATA_PAYMENT_CARDHOLDER,
ISPDATA_SIGNED_PID,
ISPDATA_GUID,
ISPDATA_OFFERID,
ISPDATA_BILLING_OPTION,
ISPDATA_PAYMENT_CUSTOMDATA,
ISPDATA_USER_COMPANYNAME,
ISPDATA_ICW_VERSION
};
enum ISPDATAValidateLevels
{
ISPDATA_Validate_None = 0,
ISPDATA_Validate_DataPresent,
ISPDATA_Validate_Content
};
//--------------------------------------------------------------------------------
// Prototypes
// functions in MAPICALL.C
BOOL InitMAPI(HWND hWnd);
VOID DeInitMAPI(VOID);
HRESULT SetMailProfileInformation(MAILCONFIGINFO * pMailConfigInfo);
BOOL FindInternetMailService(WCHAR * pszEmailAddress, DWORD cbEmailAddress,
WCHAR * pszEmailServer, DWORD cbEmailServer);
DWORD ConfigRasEntryDevice( LPRASENTRY lpRasEntry );
BOOL FInsureTCPIP();
LPWSTR GetSz(DWORD dwszID);
//void SetStatusArrow(CState wState);
BOOL FInsureModemTAPI(HWND hwnd);
BOOL FGetModemSpeed(PDWORD pdwSpeed);
BOOL FGetDeviceID(HLINEAPP *phLineApp, PDWORD pdwAPI, PDWORD pdwDevice);
BOOL FDoModemWizard(HWND hWnd);
BOOL FInsureNetwork(PBOOL pfNeedReboot);
BOOL TestInternetConnection();
WORD Sz2W (LPCWSTR szBuf);
DWORD Sz2Dw(LPCWSTR pSz);
DWORD Sz2DwFast(LPCWSTR pSz);
BOOL FSz2Dw(LPCWSTR pSz, LPDWORD dw);
BOOL FSz2DwEx(LPCWSTR pSz, DWORD far *dw);
BOOL FSz2WEx(LPCWSTR pSz, WORD far *w);
BOOL FSz2W(LPCWSTR pSz, WORD far *w);
BOOL FSz2B(LPCWSTR pSz, BYTE far *pb);
BOOL FSz2W(LPCWSTR pSz, WORD far *w);
BOOL FSz2BOOL(LPCWSTR pSz, BOOL far *pbool);
BOOL FSz2SPECIAL(LPCWSTR pSz, BOOL far *pbool, BOOL far *pbIsSpecial, int far *pInt);
BOOL FSz2B(LPCWSTR pSz, BYTE far *pb);
int __cdecl CompareCountryNames(const void *pv1, const void *pv2);
DWORD GetCurrentTapiCountryID(void);
int __cdecl CompareNPAEntry(const void *pv1, const void *pv2);
//HRESULT GatherInformation(LPGATHERINFO pGatheredInfo, HWND hwndParent);
HRESULT DownLoadISPInfo(GATHERINFO *pGI);
HRESULT GetDataFromISPFile(LPWSTR pszISPCode, LPWSTR pszSection, LPWSTR pszDataName, LPWSTR pszOutput,
DWORD dwOutputLength);
HRESULT StoreInSignUpReg(LPBYTE lpbData, DWORD dwSize, DWORD dwType, LPCWSTR pszKey);
extern HRESULT ReadSignUpReg(LPBYTE lpbData, DWORD *pdwSize, DWORD dwType, LPCWSTR pszKey);
extern HRESULT DeleteSignUpReg(LPCWSTR pszKey);
VOID WINAPI MyProgressCallBack(
HINTERNET hInternet,
DWORD dwContext,
DWORD dwInternetStatus,
LPVOID lpvStatusInformation,
DWORD dwStatusInformationLength
);
HRESULT ReleaseBold(HWND hwnd);
HRESULT MakeBold (HWND hwnd, BOOL fSize, LONG lfWeight);
//HRESULT ShowDialingDialog(LPWSTR, LPGATHERINFO, LPWSTR);
DWORD RasErrorToIDS(DWORD dwErr);
HRESULT CreateEntryFromDUNFile(LPWSTR pszDunFile);
//HRESULT RestoreHappyWelcomeScreen();
HRESULT KillHappyWelcomeScreen();
HRESULT GetCurrentWebSettings();
LPWSTR LoadInfoFromWindowUser();
HRESULT GetTapiCountryID2(LPDWORD pdwCountryID);
HRESULT RestoreAutodialer();
//HRESULT FilterStringDigits(LPWSTR);
BOOL IsDigitString(LPWSTR szBuff);
BOOL WaitForAppExit(HINSTANCE hInstance);
VOID PrepareForRunOnceApp(VOID);
void MinimizeRNAWindow(LPWSTR pszConnectoidName, HINSTANCE hInst);
// 3/28/97 ChrisK Olympus 296
void StopRNAReestablishZapper(HANDLE hthread);
HANDLE LaunchRNAReestablishZapper(HINSTANCE hInst);
BOOL FGetSystemShutdownPrivledge();
BOOL LclSetEntryScriptPatch(LPWSTR lpszScript, LPCWSTR lpszEntry);
BOOL IsScriptingInstalled();
void InstallScripter(void);
void DeleteStartUpCommand ();
extern BOOL IsNT (VOID);
extern BOOL IsNT4SP3Lower (VOID);
HRESULT GetCommonAppDataDirectory(LPWSTR szDirectory, DWORD cchDirectory);
HRESULT GetDefaultPhoneBook(LPWSTR szPhoneBook, DWORD cchPhoneBook);
BOOL INetNToW(struct in_addr inaddr, LPWSTR szAddr);
typedef enum tagAUTODIAL_TYPE
{
AutodialTypeNever = 1,
AutodialTypeNoNet,
AutodialTypeAlways
} AUTODIAL_TYPE, *PAUTODIAL_TYPE;
LONG
SetAutodial(
IN HKEY hUserRoot,
IN AUTODIAL_TYPE eType,
IN LPCWSTR szConnectoidName,
IN BOOL bSetICWCompleted
);
BOOL
SetMultiUserAutodial(
IN AUTODIAL_TYPE eType,
IN LPCWSTR szConnectoidName,
IN BOOL bSetICWCompleted
);
BOOL SetDefaultConnectoid(AUTODIAL_TYPE eType, LPCWSTR szConnectoidName);
//
// ChrisK Olympus 6368 6/24/97
//
#if defined(PRERELEASE)
BOOL FCampusNetOverride();
#endif //PRERELEASE
//*******************************************************************
//
// FUNCTION: InetGetClientInfo
//
// PURPOSE: This function will get the internet client params
// from the registry
//
// PARAMETERS: lpClientInfo - on return, this structure will contain
// the internet client params as set in the registry.
// lpszProfileName - Name of client info profile to
// retrieve. If this is NULL, the default profile is used.
//
// RETURNS: HRESULT code, ERROR_SUCCESS if no errors occurred
//
//*******************************************************************
HRESULT WINAPI InetGetClientInfo(
LPCWSTR lpszProfileName,
LPINETCLIENTINFO lpClientInfo);
//*******************************************************************
//
// FUNCTION: InetSetClientInfo
//
// PURPOSE: This function will set the internet client params
//
// PARAMETERS: lpClientInfo - pointer to struct with info to set
// in the registry.
// lpszProfileName - Name of client info profile to
// modify. If this is NULL, the default profile is used.
//
// RETURNS: HRESULT code, ERROR_SUCCESS if no errors occurred
//
//*******************************************************************
HRESULT WINAPI InetSetClientInfo(
LPCWSTR lpszProfileName,
LPINETCLIENTINFO lpClientInfo);
//#ifdef __cplusplus
//extern "C" {
//#endif // __cplusplus
// //10/24/96 jmazner Normandy 6968
// //No longer neccessary thanks to Valdon's hooks for invoking ICW.
// 11/21/96 jmazner Normandy 11812
// oops, it _is_ neccessary, since if user downgrades from IE 4 to IE 3,
// ICW 1.1 needs to morph the IE 3 icon.
HRESULT GetDeskTopInternetCommand();
HRESULT RestoreDeskTopInternetCommand();
//
// 7/24/97 ChrisK Olympus 1923
//
BOOL WaitForConnectionTermination(HRASCONN);
// 11/21/96 jmazner Normandy #11812
BOOL GetIEVersion(PDWORD pdwVerNumMS, PDWORD pdwVerNumLS);
HRESULT ClearProxySettings();
HRESULT RestoreProxySettings();
BOOL FShouldRetry2(HRESULT hrErr);
LPBYTE MyMemCpy(LPBYTE dest, const LPBYTE src, size_t count);
#endif