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.

182 lines
4.5 KiB

  1. /*
  2. * i n e t d e f . c p p
  3. *
  4. * Purpose:
  5. * Defered wininet.dll
  6. *
  7. * Owner:
  8. * brettm.
  9. *
  10. * Copyright (C) Microsoft Corp. 1993, 1994.
  11. */
  12. #include "pch.hxx"
  13. #include "strconst.h"
  14. #include "resource.h"
  15. #include "inetdef.h"
  16. ASSERTDATA
  17. /*
  18. * t y p e d e f s
  19. */
  20. typedef INTERNETAPI HINTERNET (WINAPI *PFNINTERNETOPEN)(
  21. IN LPCSTR lpszAgent,
  22. IN DWORD dwAccessType,
  23. IN LPCSTR lpszProxy OPTIONAL,
  24. IN LPCSTR lpszProxyBypass OPTIONAL,
  25. IN DWORD dwFlags
  26. );
  27. typedef BOOL (WINAPI *PFNINTERNETREADFILE)(
  28. IN HINTERNET hFile,
  29. IN LPVOID lpBuffer,
  30. IN DWORD dwNumberOfBytesToRead,
  31. OUT LPDWORD lpdwNumberOfBytesRead
  32. );
  33. typedef INTERNETAPI HINTERNET (WINAPI *PFNINTERNETOPENURL) (
  34. IN HINTERNET hInternet,
  35. IN LPCSTR lpszUrl,
  36. IN LPCSTR lpszHeaders OPTIONAL,
  37. IN DWORD dwHeadersLength,
  38. IN DWORD dwFlags,
  39. IN DWORD dwContext
  40. );
  41. typedef BOOL (WINAPI *PFNINTERNETCLOSEHANDLE) (
  42. IN HINTERNET hInternet
  43. );
  44. static PFNINTERNETOPEN s_pfnInternetOpen=NULL;
  45. static PFNINTERNETREADFILE s_pfnInternetReadFile=NULL;
  46. static PFNINTERNETOPENURL s_pfnInternetOpenUrl=NULL;
  47. static PFNINTERNETCLOSEHANDLE s_pfnInternetCloseHandle=NULL;
  48. static const TCHAR c_szAPIInternetOpen[] ="InternetOpenA",
  49. c_szAPIInternetOpenUrl[] ="InternetOpenUrlA",
  50. c_szAPIInternetReadFile[] ="InternetReadFile",
  51. c_szAPIInternetCloseHandle[]="InternetCloseHandle",
  52. c_szWinInet[] ="WININET.DLL";
  53. /*
  54. * s t a t i c s
  55. */
  56. static HINSTANCE s_hInstWinINet=0;
  57. /*
  58. * t y p e d e f s
  59. */
  60. HRESULT HrInit_WinInetDef(BOOL fInit)
  61. {
  62. static BOOL s_fInited=FALSE;
  63. if(fInit)
  64. {
  65. if (s_fInited)
  66. return NOERROR;
  67. if(!s_hInstWinINet)
  68. s_hInstWinINet=LoadLibrary(c_szWinInet);
  69. s_pfnInternetOpen = (PFNINTERNETOPEN)GetProcAddress(s_hInstWinINet, c_szAPIInternetOpen);
  70. s_pfnInternetOpenUrl = (PFNINTERNETOPENURL)GetProcAddress(s_hInstWinINet, c_szAPIInternetOpenUrl);
  71. s_pfnInternetReadFile = (PFNINTERNETREADFILE)GetProcAddress(s_hInstWinINet, c_szAPIInternetReadFile);
  72. s_pfnInternetCloseHandle = (PFNINTERNETCLOSEHANDLE)GetProcAddress(s_hInstWinINet, c_szAPIInternetCloseHandle);
  73. if(s_hInstWinINet==NULL ||
  74. s_pfnInternetOpenUrl==NULL ||
  75. s_pfnInternetOpen==NULL ||
  76. s_pfnInternetReadFile==NULL ||
  77. s_pfnInternetCloseHandle==NULL)
  78. {
  79. AthMessageBoxW(g_hwndInit, MAKEINTRESOURCEW(idsAthena), MAKEINTRESOURCEW(idsErrLoadWinInet), NULL, MB_OK);
  80. return E_FAIL;
  81. }
  82. s_fInited=TRUE;
  83. }
  84. else
  85. {
  86. if(s_hInstWinINet)
  87. {
  88. FreeLibrary(s_hInstWinINet);
  89. s_hInstWinINet=NULL;
  90. }
  91. s_fInited=FALSE;
  92. }
  93. return NOERROR;
  94. }
  95. HINTERNET Def_InternetOpen (
  96. IN LPCSTR lpszAgent,
  97. IN DWORD dwAccessType,
  98. IN LPCSTR lpszProxy OPTIONAL,
  99. IN LPCSTR lpszProxyBypass OPTIONAL,
  100. IN DWORD dwFlags
  101. )
  102. {
  103. HRESULT hr;
  104. hr=HrInit_WinInetDef(TRUE);
  105. if(FAILED(hr))
  106. return NULL;
  107. Assert(s_pfnInternetOpen);
  108. return s_pfnInternetOpen(lpszAgent, dwAccessType, lpszProxy, lpszProxyBypass, dwFlags);
  109. }
  110. BOOL Def_InternetReadFile (
  111. IN HINTERNET hFile,
  112. IN LPVOID lpBuffer,
  113. IN DWORD dwNumberOfBytesToRead,
  114. OUT LPDWORD lpdwNumberOfBytesRead
  115. )
  116. {
  117. HRESULT hr;
  118. hr=HrInit_WinInetDef(TRUE);
  119. if(FAILED(hr))
  120. return hr;
  121. Assert(s_pfnInternetReadFile);
  122. return s_pfnInternetReadFile(hFile, lpBuffer, dwNumberOfBytesToRead, lpdwNumberOfBytesRead);
  123. }
  124. HINTERNET Def_InternetOpenUrl (
  125. IN HINTERNET hInternet,
  126. IN LPCSTR lpszUrl,
  127. IN LPCSTR lpszHeaders OPTIONAL,
  128. IN DWORD dwHeadersLength,
  129. IN DWORD dwFlags,
  130. IN DWORD dwContext
  131. )
  132. {
  133. HRESULT hr;
  134. hr=HrInit_WinInetDef(TRUE);
  135. if(FAILED(hr))
  136. return NULL;
  137. Assert(s_pfnInternetOpenUrl);
  138. return s_pfnInternetOpenUrl(hInternet, lpszUrl, lpszHeaders, dwHeadersLength, dwFlags, dwContext);
  139. }
  140. BOOL Def_InternetCloseHandle(IN HINTERNET hInternet)
  141. {
  142. HRESULT hr;
  143. hr=HrInit_WinInetDef(TRUE);
  144. if(FAILED(hr))
  145. return NULL;
  146. Assert(s_pfnInternetCloseHandle);
  147. return s_pfnInternetCloseHandle(hInternet);
  148. }