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
182 lines
4.5 KiB
/*
|
|
* 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);
|
|
}
|