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.
 
 
 
 
 
 

644 lines
25 KiB

//--------------------------------------------------------------------------------
// icwglob.h
// The information contained in this file is the sole property of Microsoft Corporation.
// Copywrite Microsoft 1998
//
// Created 1/7/98, DONALDM
//--------------------------------------------------------------------------------
//-----------------------------------------------------------------------------
// INCLUDES
#include <wininet.h>
#include "enumodem.h"
#include "..\inc\debug.h"
#include "..\inc\inetcfg.h"
#include "..\inc\ras2.h"
#include "..\icwphbk\phbk.h"
// #include "..\icwdl\mydefs.h"
#include <rnaapi.h>
//-----------------------------------------------------------------------------
// DEFINES
#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 TEXT("comm/datamodem")
//#define MsgBox(m,s) MessageBox(g_hwndBack,GetSz(m),GetSz(IDS_TITLE),s)
#if defined(WIN16)
#define MsgBox(m,s) MessageBox(g_hwndMessage,GetSz(m),GetSz(IDS_TITLE),s)
#endif
#define szLoginKey TEXT("Software\\Microsoft\\MOS\\Connection")
#define szCurrentComDev TEXT("CurrentCommDev")
#define szTollFree TEXT("OlRegPhone")
#define CCD_BUFFER_SIZE 255
#define szSignupConnectoidName TEXT("MSN Signup Connection")
#define szSignupDeviceKey TEXT("SignupCommDevice")
#define KEYVALUE_SIGNUPID TEXT("iSignUp")
#define RASENTRYVALUENAME TEXT("RasEntryName")
#define GATHERINFOVALUENAME TEXT("UserInfo")
#define INFFILE_USER_SECTION TEXT("User")
#define INFFILE_PASSWORD TEXT("Password")
#define NULLSZ TEXT("")
#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 PHONEBOOK_LIBRARY TEXT("icwphbk.DLL")
#ifdef WIN16
#define PHBK_LOADAPI "PhoneBookLoad"
#define PHBK_SUGGESTAPI "PhoneBookSuggestNumbers"
#define PHBK_DISPLAYAPI "PhoneBookDisplaySignUpNumbers"
#define PHBK_UNLOADAPI "PhoneBookUnload"
#define PHBK_GETCANONICAL "PhoneBookGetCanonical"
#else
#define PHBK_LOADAPI "PhoneBookLoad"
#define PHBK_SUGGESTAPI "PhoneBookSuggestNumbers"
#define PHBK_DISPLAYAPI "PhoneBookDisplaySignUpNumbers"
#define PHBK_UNLOADAPI "PhoneBookUnload"
#define PHBK_GETCANONICAL "PhoneBookGetCanonical"
#endif
#define NUM_PHBK_SUGGESTIONS 50
#define TYPE_SIGNUP_ANY 0x82
#define MASK_SIGNUP_ANY 0xB2
#define DOWNLOAD_LIBRARY TEXT("icwdl.dll")
#if defined(WIN16)
#define DOWNLOADINIT "DownLoadInit"
#define DOWNLOADEXECUTE "DownLoadExecute"
#define DOWNLOADCLOSE "DownLoadClose"
#define DOWNLOADSETSTATUS "DownLoadSetStatusCallback"
#define DOWNLOADPROCESS "DownLoadProcess"
#define DOWNLOADCANCEL "DownLoadCancel"
#else
#define DOWNLOADINIT "DownLoadInit"
#define DOWNLOADEXECUTE "DownLoadExecute"
#define DOWNLOADCLOSE "DownLoadClose"
#define DOWNLOADSETSTATUS "DownLoadSetStatusCallback"
#define DOWNLOADPROCESS "DownLoadProcess"
#define DOWNLOADCANCEL "DownLoadCancel"
#endif
#if defined(WIN16)
extern "C" void CALLBACK __export DialCallback(UINT uiMsg,
RASCONNSTATE rasState,
DWORD dwErr);
#endif
//#define RASENUMAPI "RasEnumConnectionsA"
//#define RASHANGUP "RasHangUpA"
#define INF_SUFFIX TEXT(".ISP")
#define INF_PHONE_BOOK TEXT("PhoneBookFile")
#define INF_DUN_FILE TEXT("DUNFile")
#define INF_REFERAL_URL TEXT("URLReferral")
#define INF_SIGNUPEXE TEXT("Sign_Up_EXE")
#define INF_SIGNUPPARAMS TEXT("Sign_Up_Params")
#define INF_WELCOME_LABEL TEXT("Welcome_Label")
#define INF_ISP_MSNSU TEXT("MSICW")
#define INF_SIGNUP_URL TEXT("Signup")
#define INF_AUTOCONFIG_URL TEXT("AutoConfig")
#define INF_ISDN_URL TEXT("ISDNSignup")
#define INF_ISDN_AUTOCONFIG_URL TEXT("ISDNAutoConfig")
#define INF_SECTION_URL TEXT("URL")
#define INF_SECTION_ISPINFO TEXT("ISP INFO")
#define DUN_NOPHONENUMBER TEXT("000000000000")
#define DUN_NOPHONENUMBER_A "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 TEXT("Software\\Microsoft\\User information")
#define REG_USER_NAME1 TEXT("Default First Name")
#define REG_USER_NAME2 TEXT("Default Last Name")
#define REG_USER_COMPANY TEXT("Default Company")
#define REG_USER_ADDRESS1 TEXT("Mailing Address")
#define REG_USER_ADDRESS2 TEXT("Additional Address")
#define REG_USER_CITY TEXT("City")
#define REG_USER_STATE TEXT("State")
#define REG_USER_ZIP TEXT("ZIP Code")
#define REG_USER_PHONE TEXT("Daytime Phone")
#define REG_USER_COUNTRY TEXT("Country")
#define SIGNUPKEY TEXT("SOFTWARE\\MICROSOFT\\GETCONN")
#define DEVICENAMEKEY TEXT("DeviceName") // used to store user's choice among multiple modems
#define DEVICETYPEKEY TEXT("DeviceType")
#define ICWSETTINGSPATH TEXT("Software\\Microsoft\\Internet Connection Wizard")
#define ICWBUSYMESSAGES TEXT("Software\\Microsoft\\Internet Connection Wizard\\Busy Messages")
#define RELEASEPRODUCTKEY TEXT("Release Product")
#define RELEASEVERSIONKEY TEXT("Release Product Version")
#define SETUPPATH_NONE TEXT("current")
#define SETUPPATH_MANUAL TEXT("manual")
#define SETUPPATH_AUTO TEXT("automatic")
#define MAX_SETUPPATH_TOKEN 200
// 12/3/96 jmazner superceded by definitions in ..\common\inc\semaphor.h
//#define SEMAPHORE_NAME "Internet Connection Wizard ICWCONN1.EXE"
//
// 5/24/97 ChrisK Olympus 4650
//
#define RASDEVICETYPE_VPN TEXT("VPN")
#define RASDEVICETYPE_MODEM TEXT("MODEM")
#define RASDEVICETYPE_ISDN TEXT("ISDN")
//--------------------------------------------------------------------------------
// Type declarations
// NOTE: due to code in connmain, the order of these IS IMPORTANT. They should be
// in the same order that they appear.
enum CState
{
STATE_WELCOME = 0,
STATE_INITIAL,
STATE_BEGINAUTO,
STATE_CONTEXT1,
STATE_NETWORK,
STATE_AUTORUNSIGNUPWIZARD,
STATE_GATHERINFO,
STATE_DOWNLOADISPLIST,
STATE_SHELLPARTTWO,
STATE_MAX
};
typedef HINTERNET (WINAPI* PFNINTERNETOPEN) (LPCTSTR lpszCallerName, DWORD dwAccessType, LPCTSTR lpszProxyName, INTERNET_PORT nProxyPort, DWORD dwFlags);
typedef HINTERNET (CALLBACK* PFNINTERNETOPENURL) (HINSTANCE hInternetSession,
LPCTSTR lpszUrl, LPCTSTR lpszHeaders,
DWORD dwHeadersLength, DWORD dwFlags,
DWORD dwContext);
typedef INTERNET_STATUS_CALLBACK (CALLBACK *PFNINTERNETSETSTATUSCALLBACK)(HINTERNET hInternet, INTERNET_STATUS_CALLBACK lpfnInternetCallback);
typedef BOOL (CALLBACK *PFNINTERNETCLOSEHANDLE)(HINTERNET hInet);
typedef HRESULT (CALLBACK* PFNPHONEBOOKLOAD)(LPCTSTR pszISPCode, DWORD_PTR *pdwPhoneID);
typedef HRESULT (CALLBACK* PFPHONEBOOKSUGGEST)(DWORD_PTR dwPhoneID, PSUGGESTINFO pSuggestInfo);
typedef HRESULT (CALLBACK* PFNPHONEDISPLAY)(DWORD_PTR dwPhoneID, LPTSTR *ppszPhoneNumbers,
LPTSTR *ppszDunFiles, WORD *pwPhoneNumbers,
DWORD *pdwCountry,WORD *pwRegion,BYTE fType,
BYTE bMask,HWND hwndParent,DWORD dwFlags);
typedef HRESULT (CALLBACK *PFNPHONEBOOKUNLOAD) (DWORD_PTR dwPhoneID);
typedef HRESULT (CALLBACK *PFNPHONEBOOKGETCANONICAL)(DWORD_PTR dwPhoneID, PACCESSENTRY pAE, TCHAR *psOut);
typedef HRESULT (CALLBACK *PFNCONFIGAPI)(HWND hwndParent,DWORD dwfOptions,LPBOOL lpfNeedsRestart);
typedef HRESULT (WINAPI *PFNINETCONFIGSYSTEM)(HWND,LPCTSTR,LPCTSTR,LPRASENTRY,LPCTSTR,LPCTSTR,LPCTSTR,LPVOID,DWORD,LPBOOL);
typedef HRESULT (WINAPI *PFINETSTARTSERVICES)(void);
typedef DWORD (WINAPI *PFNLAUNCHSIGNUPWIZARDEX)(LPTSTR,int, PBOOL);
typedef VOID (WINAPI *PFNFREESIGNUPWIZARD) (VOID);
typedef DWORD (WINAPI *PFNISSMARTSTART)(VOID);
typedef DWORD (WINAPI *PFNINETCONFIGCLIENT)(HWND hwndParent, LPCTSTR lpszPhoneBook,LPCTSTR lpszEntryName, LPRASENTRY lpRasEntry,LPCTSTR lpszUserName, LPCTSTR lpszPassword,LPCTSTR lpszProfile, LPINETCLIENTINFO lpClientInfo,DWORD dwfOptions, LPBOOL lpfNeedsRestart);
typedef DWORD (WINAPI *PFNINETGETAUTODIAL)(LPBOOL lpfEnable, LPCTSTR lpszEntryName, DWORD cbEntryNameSize);
typedef DWORD (WINAPI *PFNINETSETAUTODIAL)(BOOL fEnable, LPCTSTR lpszEntryName);
typedef DWORD (WINAPI *PFNINETGETCLIENTINFO)(LPCTSTR lpszProfile, LPINETCLIENTINFO lpClientInfo);
typedef DWORD (WINAPI *PFNINETSETCLIENTINFO)(LPCTSTR lpszProfile, LPINETCLIENTINFO lpClientInfo);
typedef DWORD (WINAPI *PFNINETGETPROXY)(LPBOOL lpfEnable, LPCTSTR lpszServer, DWORD cbServer,LPCTSTR lpszOverride, DWORD cbOverride);
typedef DWORD (WINAPI *PFNINETSETPROXY)(BOOL fEnable, LPCTSTR lpszServer, LPCTSTR lpszOverride);
typedef BOOL (WINAPI *PFNBRANDICW)(LPCSTR pszIns, LPCSTR pszPath, DWORD dwFlags, LPCSTR pszConnectoid);
typedef DWORD (WINAPI *PFNRASSETAUTODIALADDRESS)(LPTSTR lpszAddress,DWORD dwReserved,LPRASAUTODIALENTRY lpAutoDialEntries,DWORD dwcbAutoDialEntries,DWORD dwcAutoDialEntries);
typedef DWORD (WINAPI *PFNRASSETAUTODIALENABLE)(DWORD dwDialingLocation, BOOL fEnabled);
typedef HRESULT (CALLBACK *PFNDOWNLOADINIT)(LPTSTR pszURL, DWORD_PTR FAR *pdwCDialDlg, DWORD_PTR FAR *pdwDownLoad, HWND g_hWndMain);
typedef HRESULT (CALLBACK *PFNDOWNLOADGETSESSION)(DWORD_PTR dwDownLoad, HINTERNET *phInternet);
typedef HRESULT (CALLBACK *PFNDOWNLOADCANCEL)(DWORD_PTR dwDownLoad);
typedef HRESULT (CALLBACK *PFNDOWNLOADEXECUTE)(DWORD_PTR dwDownLoad);
typedef HRESULT (CALLBACK *PFNDOWNLOADCLOSE)(DWORD_PTR dwDownLoad);
typedef HRESULT (CALLBACK *PFNDOWNLOADSETSTATUS)(DWORD_PTR dwDownLoad, INTERNET_STATUS_CALLBACK lpfn);
typedef HRESULT (CALLBACK *PFNDOWNLOADPROCESS)(DWORD_PTR dwDownLoad);
typedef HRESULT (CALLBACK *PFNAUTODIALINIT)(LPTSTR lpszISPFile, BYTE fFlags, BYTE bMask, DWORD dwCountry, WORD wState);
typedef struct tagGatherInfo
{
LCID m_lcidUser;
LCID m_lcidSys;
LCID m_lcidApps;
DWORD m_dwOS;
DWORD m_dwMajorVersion;
DWORD m_dwMinorVersion;
WORD m_wArchitecture;
TCHAR m_szPromo[MAX_PROMO];
DWORD m_dwCountry;
TCHAR m_szAreaCode[MAX_AREACODE+1];
HWND m_hwnd;
LPLINECOUNTRYLIST m_pLineCountryList;
LPCNTRYNAMELOOKUPELEMENT m_rgNameLookUp;
TCHAR m_szSUVersion[MAX_VERSION_LEN];
WORD m_wState;
BYTE m_fType;
BYTE m_bMask;
TCHAR m_szISPFile[MAX_PATH+1];
TCHAR m_szAppDir[MAX_PATH+1];
TCHAR m_szRelProd[MAX_RELPROD + 1];
TCHAR m_szRelVer[MAX_RELVER + 1];
DWORD m_dwFlag;
} GATHERINFO, *LPGATHERINFO;
typedef struct tagRASDEVICE
{
LPRASDEVINFO lpRasDevInfo;
DWORD dwTapiDev;
} RASDEVICE, *PRASDEVICE;
//--------------------------------------------------------------------------------
// Prototypes
DWORD ConfigRasEntryDevice( LPRASENTRY lpRasEntry );
BOOL FInsureTCPIP();
LPTSTR GetSz(WORD wszID);
#ifdef UNICODE
LPSTR GetSzA(WORD wszID);
#endif
void SetStatusArrow(CState wState);
BOOL FInsureModemTAPI(HWND hwnd);
BOOL FGetModemSpeed(PDWORD pdwSpeed);
BOOL FGetDeviceID(HLINEAPP *phLineApp, PDWORD pdwAPI, PDWORD pdwDevice);
BOOL FDoModemWizard(HWND hWnd);
void CALLBACK LineCallback(DWORD hDevice, DWORD dwMessage, DWORD dwInstance, DWORD dwParam1, DWORD dwParam2, DWORD dwParam3);
BOOL FInsureNetwork(PBOOL pfNeedReboot);
BOOL TestInternetConnection();
inline DWORD Sz2Dw(LPCTSTR pSz);
inline DWORD Sz2DwFast(LPCTSTR pSz);
inline BOOL FSz2Dw(LPCTSTR pSz,LPDWORD dw);
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(LPTSTR pszISPCode, LPTSTR pszSection, LPTSTR pszDataName, LPTSTR pszOutput,
DWORD dwOutputLength);
HRESULT GetINTFromISPFile
(
LPTSTR pszISPCode,
LPTSTR pszSection,
LPTSTR pszDataName,
int far *lpData,
int iDefaultValue
);
HRESULT StoreInSignUpReg(LPBYTE lpbData, DWORD dwSize, DWORD dwType, LPCTSTR pszKey);
HRESULT ReadSignUpReg(LPBYTE lpbData, DWORD *pdwSize, DWORD dwType, LPCTSTR pszKey);
void CALLBACK LineCallback(DWORD hDevice,
DWORD dwMessage,
DWORD dwInstance,
DWORD dwParam1,
DWORD dwParam2,
DWORD dwParam3);
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 ShowPickANumberDlg(PSUGGESTINFO pSuggestInfo);
//HRESULT ShowDialingDialog(LPTSTR, LPGATHERINFO, LPTSTR);
DWORD RasErrorToIDS(DWORD dwErr);
HRESULT CreateEntryFromDUNFile(LPTSTR pszDunFile);
//HRESULT RestoreHappyWelcomeScreen();
HRESULT KillHappyWelcomeScreen();
HRESULT GetCurrentWebSettings();
LPTSTR LoadInfoFromWindowUser();
HRESULT GetTapiCountryID2(LPDWORD pdwCountryID);
HRESULT RestoreAutodialer();
//HRESULT FilterStringDigits(LPTSTR);
BOOL IsDigitString(LPTSTR szBuff);
BOOL WaitForAppExit(HINSTANCE hInstance);
VOID PrepareForRunOnceApp(VOID);
void MinimizeRNAWindow(LPTSTR pszConnectoidName, HINSTANCE hInst);
// 3/18/97 ChrisK Olympus 304
DWORD MyGetTempPath(UINT uiLength, LPTSTR szPath);
// 3/28/97 ChrisK Olympus 296
void StopRNAReestablishZapper(HANDLE hthread);
HANDLE LaunchRNAReestablishZapper(HINSTANCE hInst);
BOOL FGetSystemShutdownPrivledge();
BOOL LclSetEntryScriptPatch(LPTSTR lpszScript,LPTSTR lpszEntry);
BOOL IsScriptingInstalled();
void InstallScripter(void);
void DeleteStartUpCommand ();
extern BOOL IsNT (VOID);
extern BOOL IsNT4SP3Lower (VOID);
//
// ChrisK Olympus 6368 6/24/97
//
VOID Win95JMoveDlgItem( HWND hwndParent, HWND hwndItem, int iUp );
#if defined(DEBUG)
void LoadTestingLocaleOverride(LPDWORD lpdwCountryID, LCID FAR *lplcid);
BOOL FCampusNetOverride();
BOOL FRefURLOverride();
void TweakRefURL( TCHAR* szUrl,
LCID* lcid,
DWORD* dwOS,
DWORD* dwMajorVersion,
DWORD* dwMinorVersion,
WORD* wArchitecture,
TCHAR* szPromo,
TCHAR* szOEM,
TCHAR* szArea,
DWORD* dwCountry,
TCHAR* szSUVersion,//&m_lpGatherInfo->m_szSUVersion[0],
TCHAR* szProd,
DWORD* dwBuildNumber, //For this we really want to LOWORD
TCHAR* szRelProd,
TCHAR* szRelProdVer,
DWORD* dwCONNWIZVersion,
TCHAR* szPID,
long* lAllOffers);
#endif //DEBUG
//#ifdef __cplusplus
//extern "C" {
//#endif // __cplusplus
LPTSTR FileToPath(LPTSTR pszFile);
HRESULT ANSI2URLValue(TCHAR *s, TCHAR *buf, UINT uiLen);
BOOL BreakUpPhoneNumber(LPRASENTRY prasentry, LPTSTR pszPhone);
extern "C" int _cdecl _purecall(void);
// //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);
// Note that bryanst and marcl have confirmed that this key will be supported in IE 4
#define IE_PATHKEY TEXT("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)
HRESULT ClearProxySettings();
HRESULT RestoreProxySettings();
BOOL FShouldRetry2(HRESULT hrErr);
extern void ErrorMsg1(HWND hwnd, UINT uId, LPCTSTR lpszArg);
extern void InfoMsg1(HWND hwnd, UINT uId, LPCTSTR lpszArg);
VOID CALLBACK BusyMessagesTimerProc(HWND hwnd,
UINT uMsg,
UINT idEvent,
DWORD dwTime);
// 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
class CBusyMessages
{
friend VOID CALLBACK BusyMessagesTimerProc(HWND hwnd,
UINT uMsg,
UINT idEvent,
DWORD dwTime);
public:
CBusyMessages();
~CBusyMessages();
DWORD Start(HWND hwnd, INT iID, HRASCONN hrasconn);
DWORD Stop();
private:
// Private data members
HWND m_hwnd;
INT m_iStatusLabel;
CHAR m_szMessage[MAX_BUSY_MESSAGE];
DWORD m_dwCurIdx;
UINT m_uIDTimer;
HINSTANCE m_hInstance;
HRASCONN m_hrasconn;
RNAAPI* m_prna;
};
//
// defined in connmain.cpp
//
class RegEntry
{
public:
RegEntry(const TCHAR *pszSubKey, HKEY hkey = HKEY_CURRENT_USER);
~RegEntry();
long GetError() { return _error; }
long SetValue(const TCHAR *pszValue, const TCHAR *string);
// long SetValue(const TCHAR *pszValue, unsigned long dwNumber);
TCHAR * GetString(const TCHAR *pszValue, TCHAR *string, unsigned long length);
//long GetNumber(const TCHAR *pszValue, long dwDefault = 0);
long DeleteValue(const TCHAR *pszValue);
/**long FlushKey();
long MoveToSubKey(const TCHAR *pszSubKeyName);
HKEY GetKey() { return _hkey; } **/
private:
HKEY _hkey;
long _error;
BOOL bhkeyValid;
};
// Trace flags
#define TF_RNAAPI 0x00000010 // RNA Api stuff
#define TF_SMARTSTART 0x00000020 // Smart Start code
#define TF_SYSTEMCONFIG 0x00000040 // System Config
#define TF_TAPIINFO 0x00000080 // TAPI stuff
#define TF_INSHANDLER 0x00000100 // INS processing stuff
// Prototypes for stuff in MISC.CPP
int Sz2W (LPCTSTR szBuf);
int FIsDigit( int c );
LPBYTE MyMemSet(LPBYTE dest,int c, size_t count);
LPBYTE MyMemCpy(LPBYTE dest,const LPBYTE src, size_t count);
BOOL ShowControl(HWND hDlg,int idControl,BOOL fShow);
BOOL ConvertToLongFilename(LPTSTR szOut, LPTSTR szIn, DWORD dwSize);
//=--------------------------------------------------------------------------=
// allocates a temporary buffer that will disappear when it goes out of scope
// NOTE: be careful of that -- make sure you use the string in the same or
// nested scope in which you created this buffer. people should not use this
// class directly. use the macro(s) below.
//
class TempBuffer {
public:
TempBuffer(ULONG cBytes) {
m_pBuf = (cBytes <= 120) ? &m_szTmpBuf : malloc(cBytes);
m_fHeapAlloc = (cBytes > 120);
}
~TempBuffer() {
if (m_pBuf && m_fHeapAlloc) free(m_pBuf);
}
void *GetBuffer() {
return m_pBuf;
}
private:
void *m_pBuf;
// we'll use this temp buffer for small cases.
//
TCHAR m_szTmpBuf[120];
unsigned m_fHeapAlloc:1;
};
//=--------------------------------------------------------------------------=
// string helpers.
//
// given and ANSI String, copy it into a wide buffer.
// be careful about scoping when using this macro!
//
// how to use the below two macros:
//
// ...
// LPTSTR pszA;
// pszA = MyGetAnsiStringRoutine();
// MAKE_WIDEPTR_FROMANSI(pwsz, pszA);
// MyUseWideStringRoutine(pwsz);
// ...
//
// similarily for MAKE_ANSIPTR_FROMWIDE. note that the first param does not
// have to be declared, and no clean up must be done.
//
#define MAKE_WIDEPTR_FROMANSI(ptrname, ansistr) \
long __l##ptrname = (lstrlen(ansistr) + 1) * sizeof(WCHAR); \
TempBuffer __TempBuffer##ptrname(__l##ptrname); \
MultiByteToWideChar(CP_ACP, 0, ansistr, -1, (LPWSTR)__TempBuffer##ptrname.GetBuffer(), __l##ptrname); \
LPWSTR ptrname = (LPWSTR)__TempBuffer##ptrname.GetBuffer()
//
// Note: allocate lstrlenW(widestr) * 2 because its possible for a UNICODE
// character to map to 2 ansi characters this is a quick guarantee that enough
// space will be allocated.
//
#define MAKE_ANSIPTR_FROMWIDE(ptrname, widestr) \
long __l##ptrname = (lstrlenW(widestr) + 1) * 2 * sizeof(char); \
TempBuffer __TempBuffer##ptrname(__l##ptrname); \
WideCharToMultiByte(CP_ACP, 0, widestr, -1, (LPSTR)__TempBuffer##ptrname.GetBuffer(), __l##ptrname, NULL, NULL); \
LPSTR ptrname = (LPSTR)__TempBuffer##ptrname.GetBuffer()
#define STR_BSTR 0
#define STR_OLESTR 1
#define BSTRFROMANSI(x) (BSTR)MakeWideStrFromAnsi((LPSTR)(x), STR_BSTR)
#define OLESTRFROMANSI(x) (LPOLESTR)MakeWideStrFromAnsi((LPSTR)(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)
LPWSTR MakeWideStrFromAnsi(LPSTR, BYTE bType);
LPWSTR MakeWideStrFromResourceId(WORD, BYTE bType);
LPWSTR MakeWideStrFromWide(LPWSTR, BYTE bType);
typedef struct SERVER_TYPES_tag
{
TCHAR szType[6];
DWORD dwType;
DWORD dwfOptions;
} SERVER_TYPES;
#define NUM_SERVER_TYPES 4
// Default branding flags the we will support
#define BRAND_FAVORITES 1
#define BRAND_STARTSEARCH 2
#define BRAND_TITLE 4
#define BRAND_BITMAPS 8
#define BRAND_MAIL 16
#define BRAND_NEWS 32
#define BRAND_DEFAULT (BRAND_FAVORITES | BRAND_STARTSEARCH)