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.

325 lines
9.3 KiB

  1. /*-----------------------------------------------------------------------------
  2. globals.h
  3. contains general declarations for ICWDIAL
  4. Copyright (C) 1996 Microsoft Corporation
  5. All rights reserved.
  6. Authors:
  7. ChrisK ChrisKauffman
  8. History:
  9. 7/22/96 ChrisK Cleaned and formatted
  10. -----------------------------------------------------------------------------*/
  11. #include <ras.h>
  12. #include <raserror.h>
  13. #include <tapi.h>
  14. #include <wininet.h>
  15. #include "debug.h"
  16. #include "icwdial.h"
  17. #include "icwdl.h"
  18. #include "rnaapi.h"
  19. #include "dlapi.h"
  20. #include "helpids.h"
  21. #include "dialutil.h"
  22. // ############################################################################
  23. #define NUMRETRIES 3
  24. #define MAXHANGUPDELAY 20
  25. #define ONE_SECOND 1000
  26. #define TIMER_ID 0
  27. #define SMALLBUFLEN 80
  28. #define ERROR_USERCANCEL 32767 // quit message value
  29. #define ERROR_USERBACK 32766 // back message value
  30. #define ERROR_USERNEXT 32765 // back message value
  31. #define ERROR_DOWNLOADIDNT 32764 // Download failure
  32. #define ERROR_READING_DUN 32768
  33. #define ERROR_READING_ISP 32769
  34. #define ERROR_PHBK_NOT_FOUND 32770
  35. #define ERROR_DOWNLOAD_NOT_FOUND 32771
  36. #define SIGNUPKEY TEXT("Software\\Microsoft\\iSignUp")
  37. #define GATHERINFOVALUENAME TEXT("UserInfo")
  38. #define MAX_PROMO 64
  39. #define MAX_OEMNAME 64
  40. #define MAX_AREACODE RAS_MaxAreaCode
  41. #define MAX_EXCHANGE 8
  42. #define MAX_VERSION_LEN 40
  43. #define MAX_CANONICAL_NUMBER 40
  44. #define INSFILE_APPNAME TEXT("ClientSetup")
  45. #define INFFILE_SETUP_CLIENT_URL TEXT("Client_Setup_Url")
  46. #define INFFILE_SETUP_NEW_CALL TEXT("Client_Setup_New_Call")
  47. #define INFFILE_DONE_MESSAGE TEXT("Done_Message")
  48. #define INFFILE_EXPLORE_CMD TEXT("Explore_Command")
  49. #define INFFILE_ENTRYSECTION TEXT("Entry")
  50. #define INFFILE_ENTRY_NAME TEXT("Entry_Name")
  51. #define INFFILE_USER_SECTION TEXT("User")
  52. #define INFFILE_PASSWORD TEXT("Password")
  53. #define NULLSZ TEXT("")
  54. #define MB_MYERROR (MB_APPLMODAL | MB_ICONERROR | MB_SETFOREGROUND)
  55. #define MsgBox(x,y) MessageBox(NULL,GetSz(x),GetSz(IDS_TITLE),y)
  56. #define DUNFILEVALUENAME TEXT("DUNFilePath")
  57. #define RASENTRYVALUENAME TEXT("RasEntryName")
  58. #define DllExport extern "C" __declspec(dllexport)
  59. #define WM_DOWNLOAD_DONE WM_USER + 4
  60. #define HINTERNET DWORD
  61. #define AUTODIAL_HELPFILE TEXT("connect.hlp>proc4")
  62. #define IF_NTONLY if(VER_PLATFORM_WIN32_NT == GetPlatform()) {
  63. #define ENDIF_NTONLY }
  64. #define IF_WIN95ONLY if(VER_PLATFORM_WIN32_WINDOWS == GetPlatform()) {
  65. #define ENDIF_WIN95ONLY }
  66. #define SIZEOF_TCHAR_BUFFER(buf) ((sizeof(buf) / sizeof(TCHAR)))
  67. // ############################################################################
  68. typedef struct tagGATHEREDINFO
  69. {
  70. LCID lcid;
  71. DWORD dwOS;
  72. DWORD dwMajorVersion;
  73. DWORD dwMinorVersion;
  74. WORD wArchitecture;
  75. TCHAR szPromo[MAX_PROMO];
  76. TCHAR szOEM[MAX_OEMNAME];
  77. TCHAR szAreaCode[MAX_AREACODE+1];
  78. TCHAR szExchange[MAX_EXCHANGE+1];
  79. DWORD dwCountry;
  80. TCHAR szSUVersion[MAX_VERSION_LEN];
  81. WORD wState;
  82. BYTE fType;
  83. BYTE bMask;
  84. TCHAR szISPFile[MAX_PATH+1];
  85. TCHAR szAppDir[MAX_PATH+1];
  86. } GATHEREDINFO, *PGATHEREDINFO;
  87. // ############################################################################
  88. class CDialog
  89. {
  90. public:
  91. BOOL m_bShouldAsk;
  92. CDialog() {m_bShouldAsk=TRUE;};
  93. ~CDialog() {};
  94. virtual LRESULT DlgProc(HWND, UINT, WPARAM, LPARAM, LRESULT)=0;
  95. };
  96. class CDialingDlg : public CDialog
  97. {
  98. public:
  99. HRASCONN m_hrasconn;
  100. LPTSTR m_pszConnectoid;
  101. HANDLE m_hThread;
  102. DWORD m_dwThreadID;
  103. HWND m_hwnd;
  104. LPTSTR m_pszUrl;
  105. LPTSTR m_pszDisplayable;
  106. DWORD_PTR m_dwDownLoad;
  107. LPTSTR m_pszPhoneNumber;
  108. LPTSTR m_pszMessage;
  109. PFNSTATUSCALLBACK m_pfnStatusCallback;
  110. HINSTANCE m_hInst;
  111. UINT m_unRasEvent;
  112. LPTSTR m_pszDunFile;
  113. HLINEAPP m_hLineApp;
  114. DWORD m_dwNumDev;
  115. DWORD m_dwTapiDev;
  116. DWORD m_dwAPIVersion;
  117. RNAAPI *m_pcRNA;
  118. BYTE m_bProgressShowing;
  119. DWORD m_dwLastStatus;
  120. CDownLoadAPI *m_pcDLAPI;
  121. BOOL m_bSkipDial;
  122. RASDIALFUNC1 m_pfnRasDialFunc1;
  123. //
  124. // ChrisK 5240 Olympus
  125. // Only the thread that creates the dwDownload should invalidate it
  126. // so we need another method to track if the cancel button has been
  127. // pressed.
  128. //
  129. BOOL m_fDownloadHasBeenCanceled;
  130. CDialingDlg();
  131. ~CDialingDlg();
  132. HRESULT GetDisplayableNumberDialDlg();
  133. LRESULT DlgProc(HWND, UINT, WPARAM, LPARAM, LRESULT);
  134. HRESULT DialDlg();
  135. HRESULT Init();
  136. VOID CDialingDlg::ProgressCallBack(HINTERNET hInternet,DWORD_PTR dwContext,
  137. DWORD dwInternetStatus,
  138. LPVOID lpvStatusInformation,
  139. DWORD dwStatusInformationLength);
  140. };
  141. class CDialingErrorDlg : public CDialog
  142. {
  143. public:
  144. HINSTANCE m_hInst;
  145. HWND m_hwnd;
  146. LPTSTR m_pszConnectoid;
  147. LPTSTR m_pszDisplayable;
  148. LPTSTR m_pszPhoneNumber;
  149. LPTSTR m_pszMessage;
  150. LPTSTR m_pszDunFile;
  151. DWORD_PTR m_dwPhoneBook;
  152. HLINEAPP m_hLineApp;
  153. DWORD m_dwTapiDev;
  154. DWORD m_dwAPIVersion;
  155. RNAAPI *m_pcRNA;
  156. DWORD m_dwNumDev;
  157. LPRASDEVINFO m_lpRasDevInfo;
  158. DWORD m_dwCountryID;
  159. WORD m_wState;
  160. BYTE m_bType;
  161. BYTE m_bMask;
  162. LPTSTR m_pszHelpFile;
  163. DWORD m_dwHelpID;
  164. CDialingErrorDlg();
  165. ~CDialingErrorDlg();
  166. HRESULT Init();
  167. LRESULT DlgProc(HWND, UINT, WPARAM, LPARAM, LRESULT);
  168. HRESULT GetDisplayableNumber();
  169. HRESULT FillModems();
  170. HRESULT CreateDialAsIsConnectoid(LPCTSTR lpszDialNumber);
  171. };
  172. /**
  173. typedef struct tagDialErr
  174. {
  175. LPTSTR m_pszConnectoid;
  176. HRESULT m_hrError;
  177. PGATHEREDINFO m_pGI;
  178. HWND m_hwnd;
  179. HLINEAPP m_hLineApp;
  180. DWORD m_dwAPIVersion;
  181. char m_szPhoneNumber[256];
  182. LPTSTR m_pszDisplayable;
  183. HINSTANCE m_hInst;
  184. LPRASDEVINFO m_lprasdevinfo;
  185. } DIALERR, *PDIALERR;
  186. **/
  187. typedef struct tagDEVICE
  188. {
  189. DWORD dwTapiDev;
  190. RASDEVINFO RasDevInfo;
  191. } MYDEVICE, *PMYDEVICE;
  192. // ############################################################################
  193. extern HRASCONN g_hRasConn;
  194. extern UINT g_cDialAttempts;
  195. extern UINT g_cHangupDelay;
  196. extern TCHAR g_szPassword[PWLEN + 1];
  197. extern TCHAR g_szEntryName[RAS_MaxEntryName + 1];
  198. extern HINSTANCE g_hInstance;
  199. extern LPRASDIALPARAMS lpDialParams;
  200. DWORD GetPlatform();
  201. LPCTSTR GetISPFile();
  202. void SetCurrentDUNFile(LPCTSTR szDUNFile);
  203. LPCTSTR GIGetAppDir();
  204. extern const TCHAR szBrowserClass1[];
  205. extern const TCHAR szBrowserClass2[];
  206. extern const TCHAR szBrowserClass3[];
  207. // 3/28/97 ChrisK Olympus 296
  208. extern HANDLE g_hRNAZapperThread;
  209. //
  210. // 6/3/97 jmazner Olympus #4851
  211. //
  212. #ifdef WIN16
  213. #define g_iMyMaxPhone 36
  214. #else
  215. // allocated in dialerr.cpp
  216. extern int g_iMyMaxPhone;
  217. #define MAXPHONE_NT 80
  218. #define MAXPHONE_95 36
  219. #endif
  220. // ############################################################################
  221. DWORD AutoDialConnect(HWND hDlg, LPRASDIALPARAMS lpDialParams);
  222. BOOL AutoDialEvent(HWND hDlg, RASCONNSTATE state, LPDWORD lpdwError);
  223. VOID SetDialogTitle(HWND hDlg, LPCTSTR pszConnectoidName);
  224. HWND FindBrowser(void);
  225. UINT RetryMessage(HWND hDlg, DWORD dwError);
  226. HRESULT ReadSignUpReg(LPBYTE lpbData, DWORD *pdwSize, DWORD dwType, LPCTSTR pszKey);
  227. HRESULT StoreInSignUpReg(LPBYTE lpbData, DWORD dwSize, DWORD dwType, LPCTSTR pszKey);
  228. INT_PTR CALLBACK AutoDialDlgProc(HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM Param);
  229. INT_PTR CALLBACK PhoneNumberDlgProc(HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM Param);
  230. INT_PTR CALLBACK RetryDlgProc(HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM Param);
  231. void CALLBACK LineCallback(DWORD hDevice,DWORD dwMessage,DWORD dwInstance,
  232. DWORD dwParam1,DWORD dwParam2,DWORD dwParam3);
  233. HRESULT ShowDialErrDialog(HRESULT hrErr, LPTSTR pszConnectoid, HINSTANCE hInst, HWND hwnd);
  234. LRESULT DialErrDlgProc(HWND hwnd, UINT uMsg, WPARAM wparam, LPARAM lparam);
  235. HRESULT FillModems();
  236. HRESULT DialErrGetDisplayableNumber();
  237. WORD RasErrorToIDS(DWORD dwErr);
  238. HRESULT LoadInitSettingFromRegistry();
  239. PTSTR GetSz(WORD wszID);
  240. HRESULT ImportConnection (LPCTSTR szFileName, LPTSTR pszEntryName, LPTSTR pszUserName, LPTSTR pszPassword);
  241. HRESULT CreateEntryFromDUNFile(PTSTR pszDunFile);
  242. BOOL FSz2Dw(PCTSTR pSz,DWORD *dw);
  243. BOOL BreakUpPhoneNumber(RASENTRY *prasentry, LPTSTR pszPhone);
  244. int Sz2W (LPCTSTR szBuf);
  245. int FIsDigit( int c );
  246. void *MyMemCpy(void *dest,const void *src, size_t count);
  247. PTSTR GetNextNumericChunk(PTSTR psz, PTSTR pszLim, PTSTR* ppszNext);
  248. HRESULT DialDlg();
  249. BOOL FShouldRetry(HRESULT hrErr);
  250. HRESULT MakeBold (HWND hwnd, BOOL fSize, LONG lfWeight);
  251. DWORD WINAPI DownloadThreadInit(CDialingDlg *pcPDlg);
  252. VOID WINAPI ProgressCallBack(DWORD hInternet,DWORD_PTR dwContext,DWORD dwInternetStatus,
  253. LPVOID lpvStatusInformation,DWORD dwStatusInformationLength);
  254. HRESULT WINAPI StatusMessageCallback(DWORD dwStatus, LPTSTR pszBuffer, DWORD dwBufferSize);
  255. HRESULT ReleaseBold(HWND hwnd);
  256. void MinimizeRNAWindow(LPTSTR pszConnectoidName, HINSTANCE hInst);
  257. #if !defined(WIN16) && defined(DEBUG)
  258. BOOL FCampusNetOverride();
  259. #endif //!WIN && DEBUG
  260. #if !defined(WIN16)
  261. BOOL WINAPI RasSetEntryPropertiesScriptPatch(LPTSTR lpszScript, LPTSTR lpszEntry);
  262. // 4/2/97 ChrisK Olympus 296
  263. void StopRNAReestablishZapper(HANDLE hthread);
  264. HANDLE LaunchRNAReestablishZapper(HINSTANCE hInst);
  265. #endif //!WIN16
  266. inline BOOL IsNT(void)
  267. {
  268. OSVERSIONINFO OsVersionInfo;
  269. ZeroMemory(&OsVersionInfo, sizeof(OSVERSIONINFO));
  270. OsVersionInfo.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);
  271. GetVersionEx(&OsVersionInfo);
  272. return (VER_PLATFORM_WIN32_NT == OsVersionInfo.dwPlatformId);
  273. }