kernelsmith
10/17/2013 - 6:24 AM

rip_msd_to_ralgun using meterp extension formatted output on the wininet.dll

rip_msd_to_ralgun using meterp extension formatted output on the wininet.dll

// Minimum supported client:Windows 2000 Professional
// Minimum supported server:Windows 2000 Server
// Header:Wininet.h
// Library:Wininet.lib
// DLL:Wininet.dll
// Unicode and ANSI names:HttpSendRequestW (Unicode) and HttpSendRequestA (ANSI)
// http://msdn.microsoft.com/en-us/library/windows/desktop/aa384247(v=vs.85).aspx
typedef BOOL (WINAPI * PHTTPSENDREQUESTA)(
    HINTERNET hRequest,
	LPCSTR lpszHeaders,
	DWORD dwHeadersLength,
	LPVOID lpOptional,
	DWORD dwOptionalLength
);

// Minimum supported client:Windows 2000 Professional
// Minimum supported server:Windows 2000 Server
// Header:Wininet.h
// Library:Wininet.lib
// DLL:Wininet.dll
// Unicode and ANSI names:HttpSendRequestExW (Unicode) and HttpSendRequestExA (ANSI)
// http://msdn.microsoft.com/en-us/library/windows/desktop/aa384318(v=vs.85).aspx
typedef BOOL (WINAPI * PHTTPSENDREQUESTEXA)(
	HINTERNET hRequest,
	LPINTERNET_BUFFERS lpBuffersIn,
	LPINTERNET_BUFFERS lpBuffersOut,
	DWORD dwFlags,
	DWORD_PTR dwContext
);

// Minimum supported client:Windows 2000 Professional
// Minimum supported server:Windows 2000 Server
// Header:Wininet.h
// Library:Wininet.lib
// DLL:Wininet.dll
// http://msdn.microsoft.com/en-us/library/windows/desktop/aa384331(v=vs.85).aspx
typedef DWORD (WINAPI * PINTERNETATTEMPTCONNECT)(
	DWORD dwReserved
);

// Minimum supported client:Windows 2000 Professional
// Minimum supported server:Windows 2000 Server
// Header:Wininet.h
// Library:Wininet.lib
// DLL:Wininet.dll
// http://msdn.microsoft.com/en-us/library/windows/desktop/aa384336(v=vs.85).aspx
typedef BOOL (WINAPI * PINTERNETAUTODIAL)(
	DWORD dwFlags,
	HWND hwndParent
);

// Minimum supported client:Windows 2000 Professional
// Minimum supported server:Windows 2000 Server
// Header:Wininet.h
// Library:Wininet.lib
// DLL:Wininet.dll
// http://msdn.microsoft.com/en-us/library/windows/desktop/aa384340(v=vs.85).aspx
typedef BOOL (WINAPI * PINTERNETAUTODIALHANGUP)(
	DWORD dwReserved
);

// Minimum supported client:Windows 2000 Professional
// Minimum supported server:Windows 2000 Server
// Header:Wininet.h
// Library:Wininet.lib
// DLL:Wininet.dll
// Unicode and ANSI names:InternetCanonicalizeUrlW (Unicode) and InternetCanonicalizeUrlA (ANSI)
// http://msdn.microsoft.com/en-us/library/windows/desktop/aa384342(v=vs.85).aspx
typedef BOOL (WINAPI * PINTERNETCANONICALIZEURLA)(
	LPCSTR lpszUrl,
	LPSTR lpszBuffer,
	LPDWORD lpdwBufferLength,
	DWORD dwFlags
);

// Minimum supported client:Windows 2000 Professional
// Minimum supported server:Windows 2000 Server
// Header:Wininet.h
// Library:Wininet.lib
// DLL:Wininet.dll
// Unicode and ANSI names:InternetCheckConnectionW (Unicode) and InternetCheckConnectionA (ANSI)
// http://msdn.microsoft.com/en-us/library/windows/desktop/aa384346(v=vs.85).aspx
typedef BOOL (WINAPI * PINTERNETCHECKCONNECTIONA)(
	LPCSTR lpszUrl,
	DWORD dwFlags,
	DWORD dwReserved
);

// Minimum supported client:Windows 2000 Professional
// Minimum supported server:Windows 2000 Server
// Header:Wininet.h
// Library:Wininet.lib
// DLL:Wininet.dll
// http://msdn.microsoft.com/en-us/library/windows/desktop/aa384348(v=vs.85).aspx
typedef BOOL (WINAPI * PINTERNETCLEARALLPERSITECOOKIEDECISIONS)(

);

// Minimum supported client:Windows 2000 Professional
// Minimum supported server:Windows 2000 Server
// Header:Wininet.h
// Library:Wininet.lib
// DLL:Wininet.dll
// http://msdn.microsoft.com/en-us/library/windows/desktop/aa384350(v=vs.85).aspx
typedef BOOL (WINAPI * PINTERNETCLOSEHANDLE)(
	HINTERNET hInternet
);

// Minimum supported client:Windows 2000 Professional
// Minimum supported server:Windows 2000 Server
// Header:Wininet.h
// Library:Wininet.lib
// DLL:Wininet.dll
// Unicode and ANSI names:InternetCombineUrlW (Unicode) and InternetCombineUrlA (ANSI)
// http://msdn.microsoft.com/en-us/library/windows/desktop/aa384355(v=vs.85).aspx
typedef BOOL (WINAPI * PINTERNETCOMBINEURLA)(
	LPCSTR lpszBaseUrl,
	LPCSTR lpszRelativeUrl,
	LPSTR lpszBuffer,
	LPDWORD lpdwBufferLength,
	DWORD dwFlags
);

// Minimum supported client:Windows 2000 Professional
// Minimum supported server:Windows 2000 Server
// Header:Wininet.h
// Library:Wininet.lib
// DLL:Wininet.dll
// Unicode and ANSI names:InternetConfirmZoneCrossingW (Unicode) and InternetConfirmZoneCrossingA (ANSI)
// http://msdn.microsoft.com/en-us/library/windows/desktop/aa384358(v=vs.85).aspx
typedef DWORD (WINAPI * PINTERNETCONFIRMZONECROSSINGA)(
	HWND hWnd,
	LPSTR szUrlPrev,
	LPSTR szUrlNew,
	BOOL bPost
);

// Minimum supported client:Windows 2000 Professional
// Minimum supported server:Windows 2000 Server
// Header:Wininet.h
// Library:Wininet.lib
// DLL:Wininet.dll
// Unicode and ANSI names:InternetConnectW (Unicode) and InternetConnectA (ANSI)
// http://msdn.microsoft.com/en-us/library/windows/desktop/aa384363(v=vs.85).aspx
typedef HANDLE (WINAPI * PINTERNETCONNECTA)(
	HINTERNET hInternet,
	LPCSTR lpszServerName,
	INTERNET_PORT nServerPort,
	LPCSTR lpszUsername,
	LPCSTR lpszPassword,
	DWORD dwService,
	DWORD dwFlags,
	DWORD_PTR dwContext
);

// Minimum supported client:Windows 2000 Professional
// Minimum supported server:Windows 2000 Server
// Header:Wininet.h
// Library:Wininet.lib
// DLL:Wininet.dll
// Unicode and ANSI names:InternetCrackUrlW (Unicode) and InternetCrackUrlA (ANSI)
// http://msdn.microsoft.com/en-us/library/windows/desktop/aa384376(v=vs.85).aspx
typedef BOOL (WINAPI * PINTERNETCRACKURLA)(
	LPCSTR lpszUrl,
	DWORD dwUrlLength,
	DWORD dwFlags,
	LPURL_COMPONENTS lpUrlComponents
);

// Minimum supported client:Windows 2000 Professional
// Minimum supported server:Windows 2000 Server
// Header:Wininet.h
// Library:Wininet.lib
// DLL:Wininet.dll
// Unicode and ANSI names:InternetCreateUrlW (Unicode) and InternetCreateUrlA (ANSI)
// http://msdn.microsoft.com/en-us/library/windows/desktop/aa384473(v=vs.85).aspx
typedef BOOL (WINAPI * PINTERNETCREATEURLA)(
	LPURL_COMPONENTS lpUrlComponents,
	DWORD dwFlags,
	LPSTR lpszUrl,
	LPDWORD lpdwUrlLength
);

// Minimum supported client:Windows 2000 Professional
// Minimum supported server:Windows 2000 Server
// Header:Wininet.h
// DLL:JSProxy.dll
// http://msdn.microsoft.com/en-us/library/windows/desktop/aa384580(v=vs.85).aspx
typedef BOOL (WINAPI * PINTERNETDEINITIALIZEAUTOPROXYDLL)(
	LPSTR lpszMime,
	DWORD dwReserved
);

// Minimum supported client:Windows 2000 Professional
// Minimum supported server:Windows 2000 Server
// Header:Wininet.h
// Library:Wininet.lib
// DLL:Wininet.dll
// Unicode and ANSI names:InternetDialW (Unicode) and InternetDialA (ANSI)
// http://msdn.microsoft.com/en-us/library/windows/desktop/aa384587(v=vs.85).aspx
typedef DWORD (WINAPI * PINTERNETDIALA)(
	HWND hwndParent,
	LPSTR pszEntryName,
	DWORD dwFlags,
	DWORD_PTR *lpdwConnection,
	DWORD dwReserved
);

// Minimum supported client:Windows 2000 Professional
// Minimum supported server:Windows 2000 Server
// Header:Wininet.h
// Library:Wininet.lib
// DLL:Wininet.dll
// Unicode and ANSI names:InternetEnumPerSiteCookieDecisionW (Unicode) and InternetEnumPerSiteCookieDecisionA (ANSI)
// http://msdn.microsoft.com/en-us/library/windows/desktop/aa384688(v=vs.85).aspx
typedef BOOL (WINAPI * PINTERNETENUMPERSITECOOKIEDECISIONA)(
	LPSTR pszSiteName,
	unsigned long,
	unsigned long,
	unsigned long
);

// Minimum supported client:Windows 2000 Professional
// Minimum supported server:Windows 2000 Server
// Header:Wininet.h
// Library:Wininet.lib
// DLL:Wininet.dll
// http://msdn.microsoft.com/en-us/library/windows/desktop/aa384694(v=vs.85).aspx
typedef DWORD (WINAPI * PINTERNETERRORDLG)(
	HWND hWnd,
	HINTERNET hRequest,
	DWORD dwError,
	DWORD dwFlags,
	LPVOID *lppvData
);

// Minimum supported client:Windows 2000 Professional
// Minimum supported server:Windows 2000 Server
// Header:Wininet.h
// Library:Wininet.lib
// DLL:Wininet.dll
// Unicode and ANSI names:InternetFindNextFileW (Unicode) and InternetFindNextFileA (ANSI)
// http://msdn.microsoft.com/en-us/library/windows/desktop/aa384698(v=vs.85).aspx
typedef BOOL (WINAPI * PINTERNETFINDNEXTFILEA)(
	HINTERNET hFind,
	LPVOID lpvFindData
);

// Minimum supported client:Windows 2000 Professional
// Minimum supported server:Windows 2000 Server
// Header:Wininet.h
// Library:Wininet.lib
// DLL:Wininet.dll
// http://msdn.microsoft.com/en-us/library/windows/desktop/aa384702(v=vs.85).aspx
typedef BOOL (WINAPI * PINTERNETGETCONNECTEDSTATE)(
	LPDWORD lpdwFlags,
	DWORD dwReserved
);

// Minimum supported client:Windows 2000 Professional
// Minimum supported server:Windows 2000 Server
// Header:Wininet.h
// Library:Wininet.lib
// DLL:Wininet.dll
// Unicode and ANSI names:InternetGetConnectedStateExW (Unicode) and InternetGetConnectedStateExA (ANSI)
// http://msdn.microsoft.com/en-us/library/windows/desktop/aa384705(v=vs.85).aspx
typedef BOOL (WINAPI * PINTERNETGETCONNECTEDSTATEEXA)(
	LPDWORD lpdwFlags,
	LPSTR lpszConnectionName,
	DWORD dwNameLen,
	DWORD dwReserved
);

// Minimum supported client:Windows 2000 Professional
// Minimum supported server:Windows 2000 Server
// Header:Wininet.h
// Library:Wininet.lib
// DLL:Wininet.dll
// Unicode and ANSI names:InternetGetCookieW (Unicode) and InternetGetCookieA (ANSI)
// http://msdn.microsoft.com/en-us/library/windows/desktop/aa384710(v=vs.85).aspx
typedef BOOL (WINAPI * PINTERNETGETCOOKIEA)(
	LPCSTR lpszUrl,
	LPCSTR lpszCookieName,
	LPSTR lpszCookieData,
	LPDWORD lpdwSize
);

// Minimum supported client:Windows XP
// Minimum supported server:Windows Server 2003
// Header:Wininet.h
// Library:Wininet.lib
// DLL:Wininet.dll
// Unicode and ANSI names:InternetGetCookieExW (Unicode) and InternetGetCookieExA (ANSI)
// http://msdn.microsoft.com/en-us/library/windows/desktop/aa384714(v=vs.85).aspx
typedef BOOL (WINAPI * PINTERNETGETCOOKIEEXA)(
	LPCSTR lpszURL,
	LPCSTR lpszCookieName,
	LPSTR lpszCookieData,
	LPDWORD lpdwSize,
	DWORD dwFlags,
	LPVOID lpReserved
);

// Minimum supported client:Windows 2000 Professional
// Minimum supported server:Windows 2000 Server
// Header:Wininet.h
// Library:Wininet.lib
// DLL:Wininet.dll
// Unicode and ANSI names:InternetGetLastResponseInfoW (Unicode) and InternetGetLastResponseInfoA (ANSI)
// http://msdn.microsoft.com/en-us/library/windows/desktop/aa384717(v=vs.85).aspx
typedef BOOL (WINAPI * PINTERNETGETLASTRESPONSEINFOA)(
	LPDWORD lpdwError,
	LPSTR lpszBuffer,
	LPDWORD lpdwBufferLength
);

// Minimum supported client:Windows 2000 Professional
// Minimum supported server:Windows 2000 Server
// Header:Wininet.h
// Library:Wininet.lib
// DLL:Wininet.dll
// Unicode and ANSI names:InternetGetPerSiteCookieDecisionW (Unicode) and InternetGetPerSiteCookieDecisionA (ANSI)
// http://msdn.microsoft.com/en-us/library/windows/desktop/aa384722(v=vs.85).aspx
typedef BOOL (WINAPI * PINTERNETGETPERSITECOOKIEDECISIONA)(
	LPCSTR pchHostName,
	unsigned long
);

// Minimum supported client:Windows 2000 Professional
// Minimum supported server:Windows 2000 Server
// DLL:JSProxy.dll
// http://msdn.microsoft.com/en-us/library/windows/desktop/aa384726(v=vs.85).aspx
typedef BOOL (WINAPI * PINTERNETGETPROXYINFO)(
	LPCSTR lpszUrl,
	DWORD dwUrlLength,
	LPSTR lpszUrlHostName,
	DWORD dwUrlHostNameLength,
	LPSTR *lplpszProxyHostName,
	LPDWORD lpdwProxyHostNameLength
);

// Minimum supported client:Windows 2000 Professional
// Minimum supported server:Windows 2000 Server
// Header:Wininet.h
// Library:Wininet.lib
// DLL:Wininet.dll
// Unicode and ANSI names:InternetGoOnlineW (Unicode) and InternetGoOnlineA (ANSI)
// http://msdn.microsoft.com/en-us/library/windows/desktop/aa384734(v=vs.85).aspx
typedef BOOL (WINAPI * PINTERNETGOONLINEA)(
	LPSTR lpszURL,
	HWND hwndParent,
	DWORD dwFlags
);

// Minimum supported client:Windows 2000 Professional
// Minimum supported server:Windows 2000 Server
// Header:Wininet.h
// Library:Wininet.lib
// DLL:Wininet.dll
// http://msdn.microsoft.com/en-us/library/windows/desktop/aa384737(v=vs.85).aspx
typedef DWORD (WINAPI * PINTERNETHANGUP)(
	DWORD_PTR dwConnection,
	DWORD dwReserved
);

// Minimum supported client:Windows 2000 Professional
// Minimum supported server:Windows 2000 Server
// Header:Wininet.h
// DLL:JSProxy.dll
// http://msdn.microsoft.com/en-us/library/windows/desktop/aa385093(v=vs.85).aspx
typedef BOOL (WINAPI * PINTERNETINITIALIZEAUTOPROXYDLL)(
	DWORD dwReserved
);

// Minimum supported client:Windows 2000 Professional
// Minimum supported server:Windows 2000 Server
// Header:Wininet.h
// Library:Wininet.lib
// DLL:Wininet.dll
// http://msdn.microsoft.com/en-us/library/windows/desktop/aa385095(v=vs.85).aspx
typedef BOOL (WINAPI * PINTERNETLOCKREQUESTFILE)(
	HINTERNET hInternet,
	HANDLE *lphLockReqHandle
);

// Minimum supported client:Windows 2000 Professional
// Minimum supported server:Windows 2000 Server
// Header:Wininet.h
// Library:Wininet.lib
// DLL:Wininet.dll
// Unicode and ANSI names:InternetOpenW (Unicode) and InternetOpenA (ANSI)
// http://msdn.microsoft.com/en-us/library/windows/desktop/aa385096(v=vs.85).aspx
typedef HANDLE (WINAPI * PINTERNETOPENA)(
	LPCSTR lpszAgent,
	DWORD dwAccessType,
	LPCSTR lpszProxyName,
	LPCSTR lpszProxyBypass,
	DWORD dwFlags
);

// Minimum supported client:Windows 2000 Professional
// Minimum supported server:Windows 2000 Server
// Header:Wininet.h
// Library:Wininet.lib
// DLL:Wininet.dll
// Unicode and ANSI names:InternetOpenUrlW (Unicode) and InternetOpenUrlA (ANSI)
// http://msdn.microsoft.com/en-us/library/windows/desktop/aa385098(v=vs.85).aspx
typedef HANDLE (WINAPI * PINTERNETOPENURLA)(
	HINTERNET hInternet,
	LPCSTR lpszUrl,
	LPCSTR lpszHeaders,
	DWORD dwHeadersLength,
	DWORD dwFlags,
	DWORD_PTR dwContext
);

// Minimum supported client:Windows 2000 Professional
// Minimum supported server:Windows 2000 Server
// Header:Wininet.h
// Library:Wininet.lib
// DLL:Wininet.dll
// http://msdn.microsoft.com/en-us/library/windows/desktop/aa385100(v=vs.85).aspx
typedef BOOL (WINAPI * PINTERNETQUERYDATAAVAILABLE)(
	HINTERNET hFile,
	LPDWORD lpdwNumberOfBytesAvailable,
	DWORD dwFlags,
	DWORD_PTR dwContext
);

// Minimum supported client:Windows 2000 Professional
// Minimum supported server:Windows 2000 Server
// Header:Wininet.h
// Library:Wininet.lib
// DLL:Wininet.dll
// Unicode and ANSI names:InternetQueryOptionW (Unicode) and InternetQueryOptionA (ANSI)
// http://msdn.microsoft.com/en-us/library/windows/desktop/aa385101(v=vs.85).aspx
typedef BOOL (WINAPI * PINTERNETQUERYOPTIONA)(
	HINTERNET hInternet,
	DWORD dwOption,
	LPVOID lpBuffer,
	LPDWORD lpdwBufferLength
);

// Minimum supported client:Windows 2000 Professional
// Minimum supported server:Windows 2000 Server
// Header:Wininet.h
// Library:Wininet.lib
// DLL:Wininet.dll
// http://msdn.microsoft.com/en-us/library/windows/desktop/aa385103(v=vs.85).aspx
typedef BOOL (WINAPI * PINTERNETREADFILE)(
	HINTERNET hFile,
	LPVOID lpBuffer,
	DWORD dwNumberOfBytesToRead,
	LPDWORD lpdwNumberOfBytesRead
);

// Minimum supported client:Windows 2000 Professional
// Minimum supported server:Windows 2000 Server
// Header:Wininet.h
// Library:Wininet.lib
// DLL:Wininet.dll
// Unicode and ANSI names:InternetReadFileExW (Unicode) and InternetReadFileExA (ANSI)
// http://msdn.microsoft.com/en-us/library/windows/desktop/aa385105(v=vs.85).aspx
typedef BOOL (WINAPI * PINTERNETREADFILEEXA)(
	HINTERNET hFile,
	LPINTERNET_BUFFERS lpBuffersOut,
	DWORD dwFlags,
	DWORD_PTR dwContext
);

// Minimum supported client:Windows 2000 Professional
// Minimum supported server:Windows 2000 Server
// Header:Wininet.h
// Library:Wininet.lib
// DLL:Wininet.dll
// Unicode and ANSI names:InternetSetCookieW (Unicode) and InternetSetCookieA (ANSI)
// http://msdn.microsoft.com/en-us/library/windows/desktop/aa385107(v=vs.85).aspx
typedef BOOL (WINAPI * PINTERNETSETCOOKIEA)(
	LPCSTR lpszUrl,
	LPCSTR lpszCookieName,
	LPCSTR lpszCookieData
);

// Minimum supported client:Windows XP
// Minimum supported server:Windows Server 2003
// Header:Wininet.h
// Library:Wininet.lib
// DLL:Wininet.dll
// Unicode and ANSI names:InternetSetCookieExW (Unicode) and InternetSetCookieExA (ANSI)
// http://msdn.microsoft.com/en-us/library/windows/desktop/aa385108(v=vs.85).aspx
typedef DWORD (WINAPI * PINTERNETSETCOOKIEEXA)(
	LPCSTR lpszURL,
	LPCSTR lpszCookieName,
	LPCSTR lpszCookieData,
	DWORD dwFlags,
	DWORD_PTR dwReserved
);



// Minimum supported client:Windows 2000 Professional
// Minimum supported server:Windows 2000 Server
// Header:Wininet.h
// Library:Wininet.lib
// DLL:Wininet.dll
// http://msdn.microsoft.com/en-us/library/windows/desktop/aa385113(v=vs.85).aspx
typedef DWORD (WINAPI * PINTERNETSETFILEPOINTER)(
	HINTERNET hFile,
	LONG lDistanceToMove,
	PLONG lpDistanceToMoveHigh,
	DWORD dwMoveMethod,
	DWORD_PTR dwContext
);

// Minimum supported client:Windows 2000 Professional
// Minimum supported server:Windows 2000 Server
// Header:Wininet.h
// Library:Wininet.lib
// DLL:Wininet.dll
// Unicode and ANSI names:InternetSetOptionW (Unicode) and InternetSetOptionA (ANSI)
// http://msdn.microsoft.com/en-us/library/windows/desktop/aa385114(v=vs.85).aspx
typedef BOOL (WINAPI * PINTERNETSETOPTIONA)(
	HINTERNET hInternet,
	DWORD dwOption,
	LPVOID lpBuffer,
	DWORD dwBufferLength
);



// Minimum supported client:Windows 2000 Professional
// Minimum supported server:Windows 2000 Server
// Header:Wininet.h
// Library:Wininet.lib
// DLL:Wininet.dll
// Unicode and ANSI names:InternetSetPerSiteCookieDecisionW (Unicode) and InternetSetPerSiteCookieDecisionA (ANSI)
// http://msdn.microsoft.com/en-us/library/windows/desktop/aa385118(v=vs.85).aspx
typedef BOOL (WINAPI * PINTERNETSETPERSITECOOKIEDECISIONA)(
	LPCSTR pchHostName,
	DWORD dwDecision
);

// Minimum supported client:Windows 2000 Professional
// Minimum supported server:Windows 2000 Server
// Header:Wininet.h
// Library:Wininet.lib
// DLL:Wininet.dll
// http://msdn.microsoft.com/en-us/library/windows/desktop/aa385120(v=vs.85).aspx
typedef UNK (WINAPI * PUNKNOWN)(
	InternetSetStatusCallback(,
	HINTERNET hInternet,
	INTERNET_STATUS_CALLBACK lpfnInternetCallback
);

// Minimum supported client:Windows 2000 Professional
// Minimum supported server:Windows 2000 Server
// Header:Wininet.h
// http://msdn.microsoft.com/en-us/library/windows/desktop/aa385121(v=vs.85).aspx
typedef UNK (WINAPI * PUNKNOWN)(
	CALLBACK InternetStatusCallback(,
	HINTERNET hInternet,
	DWORD_PTR dwContext,
	DWORD dwInternetStatus,
	LPVOID lpvStatusInformation,
	DWORD dwStatusInformationLength
);

// Minimum supported client:Windows 2000 Professional
// Minimum supported server:Windows 2000 Server
// Header:Wininet.h
// Library:Wininet.lib
// DLL:Wininet.dll
// Unicode and ANSI names:InternetTimeFromSystemTimeW (Unicode) and InternetTimeFromSystemTimeA (ANSI)
// http://msdn.microsoft.com/en-us/library/windows/desktop/aa385123(v=vs.85).aspx
typedef BOOL (WINAPI * PINTERNETTIMEFROMSYSTEMTIMEA)(
	const SYSTEMTIME,
	DWORD dwRFC,
	LPSTR lpszTime,
	DWORD cbTime
);

// Minimum supported client:Windows 2000 Professional
// Minimum supported server:Windows 2000 Server
// Header:Wininet.h
// Library:Wininet.lib
// DLL:Wininet.dll
// Unicode and ANSI names:InternetTimeToSystemTimeW (Unicode) and InternetTimeToSystemTimeA (ANSI)
// http://msdn.microsoft.com/en-us/library/windows/desktop/aa385125(v=vs.85).aspx
typedef BOOL (WINAPI * PINTERNETTIMETOSYSTEMTIMEA)(
	LPCSTR lpszTime,
	SYSTEMTIME *pst,
	DWORD dwReserved
);

// Minimum supported client:Windows 2000 Professional
// Minimum supported server:Windows 2000 Server
// Header:Wininet.h
// Library:Wininet.lib
// DLL:Wininet.dll
// http://msdn.microsoft.com/en-us/library/windows/desktop/aa385126(v=vs.85).aspx
typedef BOOLAPI (WINAPI * PINTERNETUNLOCKREQUESTFILE)(
	HANDLE hLockRequestInfo
);

// Minimum supported client:Windows 2000 Professional
// Minimum supported server:Windows 2000 Server
// Header:Wininet.h
// Library:Wininet.lib
// DLL:Wininet.dll
// http://msdn.microsoft.com/en-us/library/windows/desktop/aa385128(v=vs.85).aspx
typedef BOOL (WINAPI * PINTERNETWRITEFILE)(
	HINTERNET hFile,
	LPCVOID lpBuffer,
	DWORD dwNumberOfBytesToWrite,
	LPDWORD lpdwNumberOfBytesWritten
);

// Minimum supported client:Windows 2000 Professional
// Minimum supported server:Windows 2000 Server
// Header:Wininet.h
// Library:Wininet.lib
// DLL:Wininet.dll
// Unicode and ANSI names:PrivacyGetZonePreferenceW (Unicode)
// http://msdn.microsoft.com/en-us/library/windows/desktop/aa385336(v=vs.85).aspx
typedef DWORD (WINAPI * PPRIVACYGETZONEPREFERENCEWA)(
	DWORD dwZone,
	DWORD dwType,
	LPDWORD pdwTemplate,
	LPWSTR *pszBuffer,
	LPDWORD pdwBufferLength
);

// Minimum supported client:Windows 2000 Professional
// Minimum supported server:Windows 2000 Server
// Header:Wininet.h
// Library:Wininet.lib
// DLL:Wininet.dll
// Unicode and ANSI names:PrivacySetZonePreferenceW (Unicode)
// http://msdn.microsoft.com/en-us/library/windows/desktop/aa385338(v=vs.85).aspx
typedef DWORD (WINAPI * PPRIVACYSETZONEPREFERENCEWA)(
	DWORD dwZone,
	DWORD dwType,
	DWORD dwTemplate,
	LPCWSTR pszPreference
);

// Minimum supported client:Windows 2000 Professional
// Minimum supported server:Windows 2000 Server
// Header:Wininet.h
// Library:Wininet.lib
// DLL:Wininet.dll
// http://msdn.microsoft.com/en-us/library/windows/desktop/aa385354(v=vs.85).aspx
typedef BOOLAPI (WINAPI * PREADURLCACHEENTRYSTREAM)(
	HANDLE hUrlCacheStream,
	DWORD dwLocation,
	LPVOID lpBuffer,
	LPDWORD lpdwLen,
	DWORD dwReserved
);

// Minimum supported client:Windows 2000 Professional
// Minimum supported server:Windows 2000 Server
// Header:Wininet.h
// Library:Wininet.lib
// DLL:Wininet.dll
// http://msdn.microsoft.com/en-us/library/windows/desktop/aa385357(v=vs.85).aspx
typedef BOOL (WINAPI * PRESUMESUSPENDEDDOWNLOAD)(
	HINTERNET hRequest,
	DWORD dwResultCode
);

// Minimum supported client:Windows 2000 Professional
// Minimum supported server:Windows 2000 Server
// Header:Wininet.h
// Library:Wininet.lib
// DLL:Wininet.dll
// Unicode and ANSI names:RetrieveUrlCacheEntryFileW (Unicode) and RetrieveUrlCacheEntryFileA (ANSI)
// http://msdn.microsoft.com/en-us/library/windows/desktop/aa385365(v=vs.85).aspx
typedef BOOLAPI (WINAPI * PRETRIEVEURLCACHEENTRYFILEA)(
	LPCSTR lpszUrlName,
	LPINTERNET_CACHE_ENTRY_INFO lpCacheEntryInfo,
	LPDWORD lpcbCacheEntryInfo,
	DWORD dwReserved
);

// Minimum supported client:Windows 2000 Professional
// Minimum supported server:Windows 2000 Server
// Header:Wininet.h
// Library:Wininet.lib
// DLL:Wininet.dll
// Unicode and ANSI names:RetrieveUrlCacheEntryStreamW (Unicode) and RetrieveUrlCacheEntryStreamA (ANSI)
// http://msdn.microsoft.com/en-us/library/windows/desktop/aa385368(v=vs.85).aspx
typedef HANDLE (WINAPI * PRETRIEVEURLCACHEENTRYSTREAMA)(
	LPCSTR lpszUrlName,
	LPINTERNET_CACHE_ENTRY_INFO lpCacheEntryInfo,
	LPDWORD lpcbCacheEntryInfo,
	BOOL fRandomRead,
	DWORD dwReserved
);

// Minimum supported client:Windows 2000 Professional
// Minimum supported server:Windows 2000 Server
// Header:Wininet.h
// Library:Wininet.lib
// DLL:Wininet.dll
// Unicode and ANSI names:SetUrlCacheEntryGroupW (Unicode) and SetUrlCacheEntryGroupA (ANSI)
// http://msdn.microsoft.com/en-us/library/windows/desktop/aa385390(v=vs.85).aspx
typedef BOOLAPI (WINAPI * PSETURLCACHEENTRYGROUPA)(
	LPCSTR lpszUrlName,
	DWORD dwFlags,
	GROUPID GroupId,
	LPBYTE pbGroupAttributes,
	DWORD cbGroupAttributes,
	LPVOID lpReserved
);

// Minimum supported client:Windows 2000 Professional
// Minimum supported server:Windows 2000 Server
// Header:Wininet.h
// Library:Wininet.lib
// DLL:Wininet.dll
// Unicode and ANSI names:SetUrlCacheEntryInfoW (Unicode) and SetUrlCacheEntryInfoA (ANSI)
// http://msdn.microsoft.com/en-us/library/windows/desktop/aa385396(v=vs.85).aspx
typedef BOOLAPI (WINAPI * PSETURLCACHEENTRYINFOA)(
	LPCSTR lpszUrlName,
	LPINTERNET_CACHE_ENTRY_INFO lpCacheEntryInfo,
	DWORD dwFieldControl
);

// Minimum supported client:Windows 2000 Professional
// Minimum supported server:Windows 2000 Server
// Header:Wininet.h
// Library:Wininet.lib
// DLL:Wininet.dll
// Unicode and ANSI names:SetUrlCacheGroupAttributeW (Unicode) and SetUrlCacheGroupAttributeA (ANSI)
// http://msdn.microsoft.com/en-us/library/windows/desktop/aa385401(v=vs.85).aspx
typedef BOOL (WINAPI * PSETURLCACHEGROUPATTRIBUTEA)(
	GROUPID gid,
	DWORD dwFlags,
	DWORD dwAttributes,
	LPINTERNET_CACHE_GROUP_INFO lpGroupInfo,
	LPVOID lpReserved
);

// Minimum supported client:Windows 2000 Professional
// Minimum supported server:Windows 2000 Server
// Header:Wininet.h
// Library:Wininet.lib
// DLL:Wininet.dll
// Unicode and ANSI names:UnlockUrlCacheEntryFileW (Unicode) and UnlockUrlCacheEntryFileA (ANSI)
// http://msdn.microsoft.com/en-us/library/windows/desktop/aa385407(v=vs.85).aspx
typedef BOOLAPI (WINAPI * PUNLOCKURLCACHEENTRYFILEA)(
	LPCSTR lpszUrlName,
	DWORD dwReserved
);

// Minimum supported client:Windows 2000 Professional
// Minimum supported server:Windows 2000 Server
// Header:Wininet.h
// Library:Wininet.lib
// DLL:Wininet.dll
// http://msdn.microsoft.com/en-us/library/windows/desktop/aa385415(v=vs.85).aspx
typedef BOOLAPI (WINAPI * PUNLOCKURLCACHEENTRYSTREAM)(
	HANDLE hUrlCacheStream,
	DWORD dwReserved
);

// Minimum supported client:Windows XP, Windows 2000 Professional with SP4
// Minimum supported server:Windows Server 2003, Windows 2000 Server with SP4
// Header:Winineti.h
// Library:Wininet.lib
// DLL:Wininet.dll
// Unicode and ANSI names:GetUrlCacheConfigInfoW (Unicode) and GetUrlCacheConfigInfoA (ANSI)
// http://msdn.microsoft.com/en-us/library/windows/desktop/cc817578(v=vs.85).aspx
typedef Bool (WINAPI * PGETURLCACHECONFIGINFOA)(
	LPINTERNET_CACHE_CONFIG_INFO lpCacheConfigInfo,
	LPDWORD lpcbCacheConfigInfo,
	DWORD dwFieldControl
);

// Minimum supported client:Windows 2000 Professional
// Minimum supported server:Windows 2000 Server
// Header:Wininet.h
// Library:Wininet.lib
// DLL:Wininet.dll
// http://msdn.microsoft.com/en-us/library/windows/desktop/ff384269(v=vs.85).aspx
typedef BOOLAPI (WINAPI * PCOMMITURLCACHEENTRYA)(
	LPCSTR lpszUrlName,
	LPCSTR lpszLocalFileName,
	FILETIME ExpireTime,
	FILETIME LastModifiedTime,
	DWORD CacheEntryType,
	LPBYTE lpHeaderInfo,
	DWORD cchHeaderInfo,
	LPCSTR lpszFileExtension,
	LPCSTR lpszOriginalUrl
);

// Minimum supported client:Windows 2000 Professional
// Minimum supported server:Windows 2000 Server
// Header:Wininet.h
// Library:Wininet.lib
// DLL:Wininet.dll
// http://msdn.microsoft.com/en-us/library/windows/desktop/ff384270(v=vs.85).aspx
typedef BOOLAPI (WINAPI * PCOMMITURLCACHEENTRYW)(
	LPCWSTR lpszUrlName,
	LPCWSTR lpszLocalFileName,
	FILETIME ExpireTime,
	FILETIME LastModifiedTime,
	DWORD CacheEntryType,
	LPCWSTR lpHeaderInfo,
	DWORD cchHeaderInfo,
	LPCWSTR lpszFileExtension,
	LPCWSTR lpszOriginalUrl
);