|
|
#ifndef __URLHLINK_H
#define __URLHLINK_H
#include "urlmon.h"
#ifdef __cplusplus
extern "C" { #endif
// Flags for the UrlDownloadToCacheFile
#define URLOSTRM_USECACHEDCOPY_ONLY 0x1 // Only get from cache
#define URLOSTRM_USECACHEDCOPY URLOSTRM_USECACHEDCOPY_ONLY +1 // Get from cache if available else download
#define URLOSTRM_GETNEWESTVERSION URLOSTRM_USECACHEDCOPY +1 // Get new version only. But put it in cache too
typedef HRESULT (STDAPICALLTYPE *LPFNUOSCALLBACK)(LPBINDSTATUSCALLBACK);
STDAPI URLOpenStreamA(LPUNKNOWN,LPCSTR,DWORD,LPBINDSTATUSCALLBACK); STDAPI URLOpenStreamW(LPUNKNOWN,LPCWSTR,DWORD,LPBINDSTATUSCALLBACK); #ifdef UNICODE
#define URLOpenStream URLOpenStreamW
#else
#define URLOpenStream URLOpenStreamA
#endif // !UNICODE
STDAPI URLOpenPullStreamA(LPUNKNOWN,LPCSTR,DWORD,LPBINDSTATUSCALLBACK); STDAPI URLOpenPullStreamW(LPUNKNOWN,LPCWSTR,DWORD,LPBINDSTATUSCALLBACK); #ifdef UNICODE
#define URLOpenPullStream URLOpenPullStreamW
#else
#define URLOpenPullStream URLOpenPullStreamA
#endif // !UNICODE
STDAPI URLDownloadToFileA(LPUNKNOWN,LPCSTR,LPCSTR,DWORD,LPBINDSTATUSCALLBACK); STDAPI URLDownloadToFileW(LPUNKNOWN,LPCWSTR,LPCWSTR,DWORD,LPBINDSTATUSCALLBACK); #ifdef UNICODE
#define URLDownloadToFile URLDownloadToFileW
#else
#define URLDownloadToFile URLDownloadToFileA
#endif // !UNICODE
STDAPI URLDownloadToCacheFileA(LPUNKNOWN,LPCSTR,LPTSTR,DWORD,DWORD,LPBINDSTATUSCALLBACK); STDAPI URLDownloadToCacheFileW(LPUNKNOWN,LPCWSTR,LPWSTR,DWORD,DWORD,LPBINDSTATUSCALLBACK); #ifdef UNICODE
#define URLDownloadToCacheFile URLDownloadToCacheFileW
#else
#define URLDownloadToCacheFile URLDownloadToCacheFileA
#endif // !UNICODE
STDAPI URLOpenBlockingStreamA(LPUNKNOWN,LPCSTR,LPSTREAM*,DWORD,LPBINDSTATUSCALLBACK); STDAPI URLOpenBlockingStreamW(LPUNKNOWN,LPCWSTR,LPSTREAM*,DWORD,LPBINDSTATUSCALLBACK); #ifdef UNICODE
#define URLOpenBlockingStream URLOpenBlockingStreamW
#else
#define URLOpenBlockingStream URLOpenBlockingStreamA
#endif // !UNICODE
#define UOSM_PUSH 0
#define UOSM_PULL 1
#define UOSM_BLOCK 2
#define UOSM_FILE 3
#define UOS_URLENCODEPOSTDATA BINDINFOF_URLENCODESTGMEDDATA
#define UOS_URLENCODEURL BINDINFOF_URLENCODEDEXTRAINFO
typedef struct _UOSHTTPINFOA { ULONG ulSize; LPUNKNOWN punkCaller; LPCSTR szURL; LPCSTR szVerb; LPCSTR szHeaders; LPBYTE pbPostData; ULONG ulPostDataLen; ULONG fURLEncode; ULONG ulResv; ULONG ulMode; LPCSTR szFileName; LPSTREAM * ppStream; LPBINDSTATUSCALLBACK pbscb; } UOSHTTPINFOA, * LPUOSHTTPINFOA; typedef struct _UOSHTTPINFOW { ULONG ulSize; LPUNKNOWN punkCaller; LPCWSTR szURL; LPCWSTR szVerb; LPCWSTR szHeaders; LPBYTE pbPostData; ULONG ulPostDataLen; ULONG fURLEncode; ULONG ulResv; ULONG ulMode; LPCWSTR szFileName; LPSTREAM * ppStream; LPBINDSTATUSCALLBACK pbscb; } UOSHTTPINFOW, * LPUOSHTTPINFOW; #ifdef UNICODE
typedef UOSHTTPINFOW UOSHTTPINFO; typedef LPUOSHTTPINFOW LPUOSHTTPINFO; #else
typedef UOSHTTPINFOA UOSHTTPINFO; typedef LPUOSHTTPINFOA LPUOSHTTPINFO; #endif // UNICODE
STDAPI URLOpenHttpStreamA(LPUOSHTTPINFOA); STDAPI URLOpenHttpStreamW(LPUOSHTTPINFOW); #ifdef UNICODE
#define URLOpenHttpStream URLOpenHttpStreamW
#else
#define URLOpenHttpStream URLOpenHttpStreamA
#endif // !UNICODE
struct IBindStatusCallback;
STDAPI HlinkSimpleNavigateToString( /* [in] */ LPCWSTR szTarget, // required - target document - null if local jump w/in doc
/* [in] */ LPCWSTR szLocation, // optional, for navigation into middle of a doc
/* [in] */ LPCWSTR szTargetFrameName, // optional, for targeting frame-sets
/* [in] */ IUnknown *pUnk, // required - we'll search this for other necessary interfaces
/* [in] */ IBindCtx *pbc, // optional. caller may register an IBSC in this
/* [in] */ IBindStatusCallback *, /* [in] */ DWORD grfHLNF, // flags (TBD - HadiP needs to define this correctly?)
/* [in] */ DWORD dwReserved // for future use, must be NULL
);
STDAPI HlinkSimpleNavigateToMoniker( /* [in] */ IMoniker *pmkTarget, // required - target document - (may be null if local jump w/in doc)
/* [in] */ LPCWSTR szLocation, // optional, for navigation into middle of a doc
/* [in] */ LPCWSTR szTargetFrameName, // optional, for targeting frame-sets
/* [in] */ IUnknown *pUnk, // required - we'll search this for other necessary interfaces
/* [in] */ IBindCtx *pbc, // optional. caller may register an IBSC in this
/* [in] */ IBindStatusCallback *, /* [in] */ DWORD grfHLNF, // flags (TBD - HadiP needs to define this correctly?)
/* [in] */ DWORD dwReserved // for future use, must be NULL
);
STDAPI HlinkGoBack(IUnknown *pUnk); STDAPI HlinkGoForward(IUnknown *pUnk); STDAPI HlinkNavigateString(IUnknown *pUnk, LPCWSTR szTarget); STDAPI HlinkNavigateMoniker(IUnknown *pUnk, IMoniker *pmkTarget);
#ifdef __cplusplus
} #endif
#endif
|