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

/*
* 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);
}