windows-nt/Source/XPSP1/NT/inetsrv/iis/ui/itools/linkchk/inetapi.h
2020-09-26 16:20:57 +08:00

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_