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

254 lines
9.2 KiB
C++

// RefDial.h : Declaration of the CRefDial
#ifndef __REFDIAL_H_
#define __REFDIAL_H_
#include "rnaapi.h"
#include "import.h"
#include "inshdlr.h"
#include "obcomglb.h"
#include "ispcsv.h"
#include "ispdata.h"
// Defines used for Dialing
#define MAX_EXIT_RETRIES 10
#define MAX_RETIES 3
#define MAX_RASENTRYNAME 126
#define MAX_STRING 256 //used by ErrorMsg1 in mt.cpp
#define MAX_VERSION_LEN 40
#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 NULLSZ L""
typedef DWORD (WINAPI *PFNRASGETCONNECTSTATUS)(HRASCONN, LPRASCONNSTATUS);
static const WCHAR cszBrandingSection[] = L"Branding";
static const WCHAR cszBrandingFlags[] = L"Flags";
static const WCHAR cszSupportSection[] = L"Support";
static const WCHAR cszSupportNumber[] = L"SupportPhoneNumber";
static const WCHAR cszLoggingSection[] = L"Logging";
static const WCHAR cszStartURL[] = L"StartURL";
static const WCHAR cszEndURL[] = L"EndURL";
typedef struct ISPLIST
{
void* pElement;
int uElem;
ISPLIST* pNext;
} ISPLIST;
class RNAAPI;
class CISPImport;
class CObCommunicationManager;
/////////////////////////////////////////////////////////////////////////////
// CRefDial
class CRefDial
{
public:
CRefDial();
CRefDial::~CRefDial();
friend DWORD WINAPI DownloadThreadInit(LPVOID lpv);
public:
virtual HRESULT SetupForDialing(UINT nType, BSTR bstrISPFile, DWORD dwCountry, BSTR bstrAreaCode, DWORD dwFlag, DWORD dwAppMode, DWORD dwMigISPIdx, LPCWSTR szRasDeviceName);
virtual HRESULT DoConnect(BOOL *pbRetVal) ;
virtual HRESULT DoHangup() ;
virtual HRESULT GetDialPhoneNumber(BSTR *pVal);
virtual HRESULT PutDialPhoneNumber(BSTR newVal);
virtual HRESULT SetDialAlternative(BOOL bVal);
virtual HRESULT GetDialErrorMsg(BSTR *pVal);
virtual HRESULT GetSupportNumber(BSTR *pVal);
virtual HRESULT RemoveConnectoid(BOOL *pbRetVal);
virtual HRESULT ReadPhoneBook(LPGATHERINFO lpGatherInfo, PSUGGESTINFO pSuggestInfo);
virtual HRESULT get_SignupURL(BSTR * pVal);
virtual HRESULT get_ReconnectURL(BSTR * pVal);
virtual HRESULT CheckPhoneBook(BSTR bstrISPFile, DWORD dwCountry, BSTR bstrAreaCode, DWORD dwFlag, BOOL *pbRetVal);
virtual HRESULT GetConnectionType(DWORD * pdwVal);
virtual HRESULT DoOfferDownload(BOOL *pbRetVal);
virtual HRESULT FormReferralServerURL(BOOL * pbRetVal);
virtual HRESULT OnDownloadEvent(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL* bHandled);
virtual HRESULT GetISPList(BSTR* pbstrISPList);
virtual HRESULT Set_SelectISP(UINT nVal);
virtual HRESULT Set_ConnectionMode(UINT nVal);
virtual HRESULT Get_ConnectionMode(UINT *pnVal);
virtual HRESULT DownloadISPOffer(BOOL *pbVal, BSTR *pVal);
virtual HRESULT ProcessSignedPID(BOOL * pbRetVal);
virtual HRESULT get_SignedPID(BSTR * pVal);
virtual HRESULT get_ISDNAutoConfigURL(BSTR *pVal);
virtual HRESULT get_AutoConfigURL(BSTR *pVal);
virtual HRESULT get_ISPName(BSTR *pVal);
virtual HRESULT RemoveDownloadDir() ;
virtual HRESULT PostRegData(DWORD dwSrvType, LPWSTR szPath);
virtual HRESULT CheckStayConnected(BSTR bstrISPFile, BOOL *pbVal);
virtual HRESULT Connect(UINT nType, BSTR bstrISPFile, DWORD dwCountry, BSTR bstrAreaCode, DWORD dwFlag, DWORD dwAppMode);
virtual HRESULT CheckOnlineStatus(BOOL *pbVal);
virtual HRESULT GetPhoneBookNumber(BSTR *pVal);
BOOL CrackUrl(const WCHAR* lpszUrlIn, WCHAR* lpszHostOut, WCHAR* lpszActionOut, INTERNET_PORT* lpnHostPort, BOOL* lpfSecure);
BOOL ParseISPInfo(HWND hDlg, WCHAR *pszCSVFileName, BOOL bCheckDupe);
// Dialing service functions
HRESULT GetDisplayableNumber();
HRESULT Dial();
BOOL FShouldRetry(HRESULT hrErr);
DWORD ReadConnectionInformation(void);
DWORD FillGatherInfoStruct(LPGATHERINFO lpGatherInfo);
HRESULT CreateEntryFromDUNFile(LPWSTR pszDunFile);
HRESULT SetupForRASDialing(LPGATHERINFO lpGatherInfo,
HINSTANCE hPHBKDll,
LPDWORD lpdwPhoneBook,
PSUGGESTINFO pSuggestInfo,
WCHAR *pszConnectoid,
BOOL FAR *bConnectiodCreated);
HRESULT SetupConnectoid(PSUGGESTINFO pSuggestInfo, int irc,
WCHAR *pszConnectoid, DWORD dwSize, BOOL * pbSuccess);
HRESULT MyRasGetEntryProperties(LPWSTR lpszPhonebookFile,
LPWSTR lpszPhonebookEntry,
LPRASENTRY *lplpRasEntryBuff,
LPDWORD lpdwRasEntryBuffSize,
LPRASDEVINFO *lplpRasDevInfoBuff,
LPDWORD lpdwRasDevInfoBuffSize);
static void CALLBACK RasDialFunc( HRASCONN hRas, UINT unMsg,
RASCONNSTATE rasconnstate,
DWORD dwError,
DWORD dwErrorEx);
BOOL get_QueryString(WCHAR* szTemp, DWORD dwSize);
DWORD DialThreadInit(LPVOID pdata);
DWORD ConnectionMonitorThread(LPVOID pdata);
void TerminateConnMonitorThread();
HRESULT RasGetConnectStatus(BOOL *pVal);
void CleanISPList();
void DeleteDirectory(LPCWSTR szDirName);
HRESULT SetupForAutoDial(BOOL bEnabled, BSTR bstrUserSection);
// Dialing service members
UINT m_unRasDialMsg;
DWORD m_dwTapiDev;
HRASCONN m_hrasconn;
WCHAR m_szConnectoid[RAS_MaxEntryName+1];
DWORD m_dwThreadID;
HINSTANCE m_hRasDll;
FARPROC m_fpRasDial;
FARPROC m_fpRasGetEntryDialParams;
LPGATHERINFO m_pGI;
WCHAR m_szUrl[INTERNET_MAX_URL_LENGTH]; // Download thread
HANDLE m_hThread;
HANDLE m_hDialThread;
HANDLE m_hConnMonThread;
HANDLE m_hConnectionTerminate;
HANDLE m_hEventError;
DWORD_PTR m_dwDownLoad; // Download thread
HLINEAPP m_hLineApp;
DWORD m_dwAPIVersion;
LPWSTR m_pszDisplayable;
LPWSTR m_pszOriginalDisplayable;
RNAAPI *m_pcRNA;
WCHAR m_szPhoneNumber[256];
BOOL m_bDialAsIs;
BOOL m_bDialCustom;
UINT m_uiRetry;
WCHAR m_szISPFile[MAX_PATH];
WCHAR m_szCurrentDUNFile[MAX_PATH];
WCHAR m_szLastDUNFile[MAX_PATH];
WCHAR m_szEntryName[RAS_MaxEntryName+1];
WCHAR m_szISPSupportNumber[RAS_MaxAreaCode + RAS_MaxPhoneNumber +1];
BOOL m_bDownloadHasBeenCanceled;
BOOL m_bDisconnect;
BOOL m_bFromPhoneBook;
BOOL m_bDialAlternative;
LPGATHERINFO m_lpGatherInfo;
//
// Used for Phone book look-up
//
SUGGESTINFO m_SuggestInfo;
CISPImport m_ISPImport; // Import an ISP file
CINSHandler m_InsHandler;
int m_RasStatusID;
int m_DownloadStatusID;
WCHAR m_szRefServerURL[INTERNET_MAX_URL_LENGTH];
WCHAR m_szRegServerName[INTERNET_MAX_URL_LENGTH];
INTERNET_PORT m_nRegServerPort;
BOOL m_fSecureRegServer;
WCHAR m_szRegFormAction[INTERNET_MAX_URL_LENGTH];
LPRASENTRY m_reflpRasEntryBuff;
LPRASDEVINFO m_reflpRasDevInfoBuff;
DWORD m_dwRASErr;
DWORD m_dwCnType;
WCHAR* m_pszISPList;
DWORD m_dwNumOfAutoConfigOffers;
ISPLIST* m_pCSVList;
BOOL m_bUserInitiateHangup;
UINT m_unSelectedISP;
protected:
CRITICAL_SECTION m_csMyCriticalSection;
BOOL m_bTryAgain;
BOOL m_bQuitWizard;
BOOL m_bUserPickNumber;
BOOL m_bRedial;
HRESULT m_hrDisplayableNumber;
BSTR m_bstrPromoCode;
BSTR m_bstrProductCode;
WCHAR m_szOEM[MAX_OEMNAME];
BSTR m_bstrSignedPID;
BSTR m_bstrSupportNumber;
BSTR m_bstrLoggingStartUrl;
BSTR m_bstrLoggingEndUrl;
long m_lAllOffers;
DWORD m_dwCountryCode;
long m_lBrandingFlags;
long m_lCurrentModem;
// Version of the wizard HTML. Sent to RefServer
DWORD m_dwWizardVersion;
WCHAR m_szPID[(MAX_DIGITAL_PID * 2) + 1];
long m_PhoneNumberEnumidx;
private:
BOOL IsDBCSString( CHAR *sz );
void GetISPFileSettings(LPWSTR lpszFile);
void CleanupAutodial();
BOOL m_bModemOverride;
DWORD m_dwConnectionType;
DWORD m_dwAppMode;
DWORD m_bDial;
CISPCSV* m_pSelectedISPInfo;
CICWISPData* m_pISPData;
BOOL m_bAutodialModeSaved;
BOOL m_bCleanupAutodial;
DWORD m_dwOrigAutodialMode;
};
#endif //__REFDIAL_H_