/* * i n e t d e f . c p p * * Purpose: * Defered wininet.dll * * Owner: * brettm. * * Copyright (C) Microsoft Corp. 1993, 1994. */ #include "pch.hxx" #include "strconst.h" #include "resource.h" #include "inetdef.h" ASSERTDATA /* * t y p e d e f s */ typedef INTERNETAPI HINTERNET (WINAPI *PFNINTERNETOPEN)( IN LPCSTR lpszAgent, IN DWORD dwAccessType, IN LPCSTR lpszProxy OPTIONAL, IN LPCSTR lpszProxyBypass OPTIONAL, IN DWORD dwFlags ); typedef BOOL (WINAPI *PFNINTERNETREADFILE)( IN HINTERNET hFile, IN LPVOID lpBuffer, IN DWORD dwNumberOfBytesToRead, OUT LPDWORD lpdwNumberOfBytesRead ); typedef INTERNETAPI HINTERNET (WINAPI *PFNINTERNETOPENURL) ( IN HINTERNET hInternet, IN LPCSTR lpszUrl, IN LPCSTR lpszHeaders OPTIONAL, IN DWORD dwHeadersLength, IN DWORD dwFlags, IN DWORD dwContext ); typedef BOOL (WINAPI *PFNINTERNETCLOSEHANDLE) ( IN HINTERNET hInternet ); static PFNINTERNETOPEN s_pfnInternetOpen=NULL; static PFNINTERNETREADFILE s_pfnInternetReadFile=NULL; static PFNINTERNETOPENURL s_pfnInternetOpenUrl=NULL; static PFNINTERNETCLOSEHANDLE s_pfnInternetCloseHandle=NULL; static const TCHAR c_szAPIInternetOpen[] ="InternetOpenA", c_szAPIInternetOpenUrl[] ="InternetOpenUrlA", c_szAPIInternetReadFile[] ="InternetReadFile", c_szAPIInternetCloseHandle[]="InternetCloseHandle", c_szWinInet[] ="WININET.DLL"; /* * s t a t i c s */ static HINSTANCE s_hInstWinINet=0; /* * t y p e d e f s */ HRESULT HrInit_WinInetDef(BOOL fInit) { static BOOL s_fInited=FALSE; if(fInit) { if (s_fInited) return NOERROR; if(!s_hInstWinINet) s_hInstWinINet=LoadLibrary(c_szWinInet); s_pfnInternetOpen = (PFNINTERNETOPEN)GetProcAddress(s_hInstWinINet, c_szAPIInternetOpen); s_pfnInternetOpenUrl = (PFNINTERNETOPENURL)GetProcAddress(s_hInstWinINet, c_szAPIInternetOpenUrl); s_pfnInternetReadFile = (PFNINTERNETREADFILE)GetProcAddress(s_hInstWinINet, c_szAPIInternetReadFile); s_pfnInternetCloseHandle = (PFNINTERNETCLOSEHANDLE)GetProcAddress(s_hInstWinINet, c_szAPIInternetCloseHandle); if(s_hInstWinINet==NULL || s_pfnInternetOpenUrl==NULL || s_pfnInternetOpen==NULL || s_pfnInternetReadFile==NULL || s_pfnInternetCloseHandle==NULL) { AthMessageBoxW(g_hwndInit, MAKEINTRESOURCEW(idsAthena), MAKEINTRESOURCEW(idsErrLoadWinInet), NULL, MB_OK); return E_FAIL; } s_fInited=TRUE; } else { if(s_hInstWinINet) { FreeLibrary(s_hInstWinINet); s_hInstWinINet=NULL; } s_fInited=FALSE; } return NOERROR; } HINTERNET Def_InternetOpen ( IN LPCSTR lpszAgent, IN DWORD dwAccessType, IN LPCSTR lpszProxy OPTIONAL, IN LPCSTR lpszProxyBypass OPTIONAL, IN DWORD dwFlags ) { HRESULT hr; hr=HrInit_WinInetDef(TRUE); if(FAILED(hr)) return NULL; Assert(s_pfnInternetOpen); return s_pfnInternetOpen(lpszAgent, dwAccessType, lpszProxy, lpszProxyBypass, dwFlags); } BOOL Def_InternetReadFile ( IN HINTERNET hFile, IN LPVOID lpBuffer, IN DWORD dwNumberOfBytesToRead, OUT LPDWORD lpdwNumberOfBytesRead ) { HRESULT hr; hr=HrInit_WinInetDef(TRUE); if(FAILED(hr)) return hr; Assert(s_pfnInternetReadFile); return s_pfnInternetReadFile(hFile, lpBuffer, dwNumberOfBytesToRead, lpdwNumberOfBytesRead); } HINTERNET Def_InternetOpenUrl ( IN HINTERNET hInternet, IN LPCSTR lpszUrl, IN LPCSTR lpszHeaders OPTIONAL, IN DWORD dwHeadersLength, IN DWORD dwFlags, IN DWORD dwContext ) { HRESULT hr; hr=HrInit_WinInetDef(TRUE); if(FAILED(hr)) return NULL; Assert(s_pfnInternetOpenUrl); return s_pfnInternetOpenUrl(hInternet, lpszUrl, lpszHeaders, dwHeadersLength, dwFlags, dwContext); } BOOL Def_InternetCloseHandle(IN HINTERNET hInternet) { HRESULT hr; hr=HrInit_WinInetDef(TRUE); if(FAILED(hr)) return NULL; Assert(s_pfnInternetCloseHandle); return s_pfnInternetCloseHandle(hInternet); }