/*++ 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 #include //------------------------------------------------------------------ // 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_