233 lines
4.4 KiB
C++
233 lines
4.4 KiB
C++
/*++
|
|
|
|
Copyright (c) 1996 Microsoft Corporation
|
|
|
|
Module Name :
|
|
|
|
inetapi.h
|
|
|
|
Abstract:
|
|
|
|
wininet.dll wrapper class declaration.
|
|
|
|
Author:
|
|
|
|
Michael Cheuk (mcheuk)
|
|
|
|
Project:
|
|
|
|
Link Checker
|
|
|
|
Revision History:
|
|
|
|
--*/
|
|
|
|
#ifndef _INETAPI_H_
|
|
#define _INETAPI_H_
|
|
|
|
#include <windows.h>
|
|
#include <wininet.h>
|
|
|
|
//------------------------------------------------------------------
|
|
// wininet.dll entry points definitons
|
|
typedef
|
|
INTERNETAPI
|
|
HINTERNET
|
|
(WINAPI *
|
|
pfnInternetOpenA)(
|
|
IN LPCSTR lpszAgent,
|
|
IN DWORD dwAccessType,
|
|
IN LPCSTR lpszProxy OPTIONAL,
|
|
IN LPCSTR lpszProxyBypass OPTIONAL,
|
|
IN DWORD dwFlags
|
|
);
|
|
|
|
typedef
|
|
INTERNETAPI
|
|
INTERNET_STATUS_CALLBACK
|
|
(WINAPI *
|
|
pfnInternetSetStatusCallback)(
|
|
IN HINTERNET hInternet,
|
|
IN INTERNET_STATUS_CALLBACK lpfnInternetCallback
|
|
);
|
|
|
|
typedef
|
|
INTERNETAPI
|
|
HINTERNET
|
|
(WINAPI *
|
|
pfnInternetConnectA)(
|
|
IN HINTERNET hInternet,
|
|
IN LPCSTR lpszServerName,
|
|
IN INTERNET_PORT nServerPort,
|
|
IN LPCSTR lpszUserName OPTIONAL,
|
|
IN LPCSTR lpszPassword OPTIONAL,
|
|
IN DWORD dwService,
|
|
IN DWORD dwFlags,
|
|
IN DWORD dwContext
|
|
);
|
|
|
|
typedef
|
|
INTERNETAPI
|
|
HINTERNET
|
|
(WINAPI *
|
|
pfnHttpOpenRequestA)(
|
|
IN HINTERNET hConnect,
|
|
IN LPCSTR lpszVerb,
|
|
IN LPCSTR lpszObjectName,
|
|
IN LPCSTR lpszVersion,
|
|
IN LPCSTR lpszReferrer OPTIONAL,
|
|
IN LPCSTR FAR * lplpszAcceptTypes OPTIONAL,
|
|
IN DWORD dwFlags,
|
|
IN DWORD dwContext
|
|
);
|
|
|
|
typedef
|
|
INTERNETAPI
|
|
BOOL
|
|
(WINAPI *
|
|
pfnHttpAddRequestHeadersA)(
|
|
IN HINTERNET hRequest,
|
|
IN LPCSTR lpszHeaders,
|
|
IN DWORD dwHeadersLength,
|
|
IN DWORD dwModifiers
|
|
);
|
|
|
|
typedef
|
|
INTERNETAPI
|
|
BOOL
|
|
(WINAPI *
|
|
pfnHttpSendRequestA)(
|
|
IN HINTERNET hRequest,
|
|
IN LPCSTR lpszHeaders OPTIONAL,
|
|
IN DWORD dwHeadersLength,
|
|
IN LPVOID lpOptional OPTIONAL,
|
|
IN DWORD dwOptionalLength
|
|
);
|
|
|
|
typedef
|
|
INTERNETAPI
|
|
BOOL
|
|
(WINAPI *
|
|
pfnHttpQueryInfoA)(
|
|
IN HINTERNET hRequest,
|
|
IN DWORD dwInfoLevel,
|
|
IN OUT LPVOID lpBuffer OPTIONAL,
|
|
IN OUT LPDWORD lpdwBufferLength,
|
|
IN OUT LPDWORD lpdwIndex OPTIONAL
|
|
);
|
|
|
|
typedef
|
|
INTERNETAPI
|
|
BOOL
|
|
(WINAPI *
|
|
pfnInternetCloseHandle)(
|
|
IN HINTERNET hInternet
|
|
);
|
|
|
|
typedef
|
|
INTERNETAPI
|
|
BOOL
|
|
(WINAPI *
|
|
pfnInternetReadFile)(
|
|
IN HINTERNET hFile,
|
|
IN LPVOID lpBuffer,
|
|
IN DWORD dwNumberOfBytesToRead,
|
|
OUT LPDWORD lpdwNumberOfBytesRead
|
|
);
|
|
|
|
typedef
|
|
INTERNETAPI
|
|
BOOL
|
|
(WINAPI *
|
|
pfnInternetCrackUrlA)(
|
|
IN LPCSTR lpszUrl,
|
|
IN DWORD dwUrlLength,
|
|
IN DWORD dwFlags,
|
|
IN OUT LPURL_COMPONENTS lpUrlComponents
|
|
);
|
|
|
|
typedef
|
|
INTERNETAPI
|
|
BOOL
|
|
(WINAPI *
|
|
pfnInternetCombineUrlA)(
|
|
IN LPCSTR lpszBaseUrl,
|
|
IN LPCSTR lpszRelativeUrl,
|
|
OUT LPSTR lpszBuffer,
|
|
IN OUT LPDWORD lpdwBufferLength,
|
|
IN DWORD dwFlags
|
|
);
|
|
|
|
typedef
|
|
INTERNETAPI
|
|
HINTERNET
|
|
(WINAPI *
|
|
pfnInternetOpenUrlA)(
|
|
IN HINTERNET hInternet,
|
|
IN LPCSTR lpszUrl,
|
|
IN LPCSTR lpszHeaders OPTIONAL,
|
|
IN DWORD dwHeadersLength,
|
|
IN DWORD dwFlags,
|
|
IN DWORD dwContext
|
|
);
|
|
|
|
#define LOAD_ENTRY( hMod, Name ) \
|
|
(##Name = (pfn##Name) GetProcAddress( (hMod), #Name ))
|
|
|
|
//------------------------------------------------------------------
|
|
// wininet.dll wrapper class
|
|
class CWininet
|
|
{
|
|
|
|
// Public funtions
|
|
public:
|
|
|
|
// Constructor
|
|
~CWininet();
|
|
|
|
// Destructor
|
|
CWininet();
|
|
|
|
// Load wininet.dll
|
|
BOOL Load();
|
|
|
|
// Is wininet.dll loaded in memory?
|
|
static BOOL IsLoaded()
|
|
{
|
|
return (sm_hWininet != NULL);
|
|
}
|
|
|
|
// Get the wininet.dll static HMODULE
|
|
static HMODULE GetWininetModule()
|
|
{
|
|
return sm_hWininet;
|
|
}
|
|
|
|
// Static wininet.dll API
|
|
static pfnInternetOpenA InternetOpenA;
|
|
static pfnInternetSetStatusCallback InternetSetStatusCallback;
|
|
static pfnInternetConnectA InternetConnectA;
|
|
static pfnHttpOpenRequestA HttpOpenRequestA;
|
|
static pfnHttpAddRequestHeadersA HttpAddRequestHeadersA;
|
|
static pfnHttpSendRequestA HttpSendRequestA;
|
|
static pfnHttpQueryInfoA HttpQueryInfoA;
|
|
static pfnInternetCloseHandle InternetCloseHandle;
|
|
static pfnInternetReadFile InternetReadFile;
|
|
static pfnInternetCrackUrlA InternetCrackUrlA;
|
|
static pfnInternetCombineUrlA InternetCombineUrlA;
|
|
static pfnInternetOpenUrlA InternetOpenUrlA;
|
|
|
|
|
|
// Protected members
|
|
protected:
|
|
|
|
// Static wininet.dll HMODULE
|
|
static HMODULE sm_hWininet;
|
|
|
|
// Static instance count
|
|
static int sm_iInstanceCount;
|
|
|
|
}; // class CWininet
|
|
|
|
#endif // _INETAPI_H_
|