home *** CD-ROM | disk | FTP | other *** search
- /*****************************************************************************\
- * *
- * urlmon.h - Async moniker interfaces *
- * *
- * OLE Version 2.0 *
- * *
- * Copyright (c) 1992-1996, Microsoft Corp. All rights reserved. *
- * *
- \*****************************************************************************/
-
- #ifndef __urlmon_h__
- #define __urlmon_h__
-
-
- /////////////////////////////////////////////////////////////////////////////
- // Typedefs for interfaces
-
- #ifdef __cplusplus
- interface IBindProtocol;
- interface IBinding;
- interface IBindStatusCallback;
- #else
- typedef interface IBindProtocol IBindProtocol;
- typedef interface IBinding IBinding;
- typedef interface IBindStatusCallback IBindStatusCallback;
- #endif
-
- typedef IBindProtocol * LPBINDPROTOCOL;
- typedef IBinding * LPBINDING;
- typedef IBindStatusCallback * LPBINDSTATUSCALLBACK;
-
- EXTERN_C const IID IID_IAsyncMoniker;
- EXTERN_C const IID IID_IURLMoniker;
- EXTERN_C const IID CLSID_StdURLMoniker;
- EXTERN_C const IID IID_IBindProtocol;
- EXTERN_C const IID IID_IBinding;
- EXTERN_C const IID IID_IBindStatusCallback;
-
- #define TEXT(x) x
-
- /////////////////////////////////////////////////////////////////////////////
- // Misc definitions
-
- #define SZ_URLCONTEXT OLESTR("URL Context")
- #define SZ_ASYNC_CALLEE OLESTR("AsyncCallee")
- #define MKSYS_URLMONIKER 6
-
- #define CF_NULL 0
- #define CFSTR_MIME_NULL NULL
- #define CFSTR_MIME_FRACTALS (TEXT("application/fractals"))
- #define CFSTR_MIME_RAWDATA (TEXT("application/octet"))
- #define CFSTR_MIME_POSTSCRIPT (TEXT("application/postscript"))
- #define CFSTR_MIME_AIFF (TEXT("audio/aiff"))
- #define CFSTR_MIME_BASICAUDIO (TEXT("audio/basic"))
- #define CFSTR_MIME_WAV (TEXT("audio/wav"))
- #define CFSTR_MIME_X_AIFF (TEXT("audio/x-aiff"))
- #define CFSTR_MIME_X_REALAUDIO (TEXT("audio/x-pn-realaudio"))
- #define CFSTR_MIME_X_WAV (TEXT("audio/x-wav"))
- #define CFSTR_MIME_BMP (TEXT("image/bmp"))
- #define CFSTR_MIME_GIF (TEXT("image/gif"))
- #define CFSTR_MIME_JPEG (TEXT("image/jpeg"))
- #define CFSTR_MIME_TIFF (TEXT("image/tiff"))
- #define CFSTR_MIME_XBM (TEXT("image/xbm"))
- #define CFSTR_MIME_X_BITMAP (TEXT("image/x-bitmap"))
- #define CFSTR_MIME_HTML (TEXT("text/html"))
- #define CFSTR_MIME_TEXT (TEXT("text/plain"))
- #define CFSTR_MIME_AVI (TEXT("video/avi"))
- #define CFSTR_MIME_MPEG (TEXT("video/mpeg"))
- #define CFSTR_MIME_QUICKTIME (TEXT("video/quicktime"))
- #define CFSTR_MIME_X_MSVIDEO (TEXT("video/x-msvideo"))
- #define CFSTR_MIME_X_SGI_MOVIE (TEXT("video/x-sgi-movie"))
-
- #define REG_BSCB_HOLDER OLESTR("_BSCB_Holder_")
- #define REG_ENUMFORMATETC OLESTR("_EnumFORMATETC_")
- #define REG_MEDIA_HOLDER OLESTR("_Media_Holder_")
- #define REG_ISL_CLIENT OLESTR("_ISL_Client_")
-
-
- /////////////////////////////////////////////////////////////////////////////
- // IURLMoniker interface
-
- #undef INTERFACE
- #define INTERFACE IURLMoniker
-
- DECLARE_INTERFACE_(IURLMoniker, IUnknown)
- {
- BEGIN_INTERFACE
- // *** IUnknown methods ***
- STDMETHOD(QueryInterface) (THIS_ REFIID riid, void * * ppvObj) PURE;
- STDMETHOD_(unsigned long,AddRef) (THIS) PURE;
- STDMETHOD_(unsigned long,Release) (THIS) PURE;
-
- // *** IPersist methods ***
- STDMETHOD(GetClassID) (THIS_ LPCLSID lpClassID) PURE;
-
- // *** IPersistStream methods ***
- STDMETHOD(IsDirty) (THIS) PURE;
- STDMETHOD(Load) (THIS_ LPSTREAM pStm) PURE;
- STDMETHOD(Save) (THIS_ LPSTREAM pStm,
- unsigned long fClearDirty) PURE;
- STDMETHOD(GetSizeMax) (THIS_ ULARGE_INTEGER * pcbSize) PURE;
-
- // *** IMoniker methods ***
- STDMETHOD(BindToObject) (THIS_ LPBC pbc, LPMONIKER pmkToLeft,
- REFIID riidResult, void * * ppvResult) PURE;
- STDMETHOD(BindToStorage) (THIS_ LPBC pbc, LPMONIKER pmkToLeft,
- REFIID riid, void * * ppvObj) PURE;
- STDMETHOD(Reduce) (THIS_ LPBC pbc, unsigned long dwReduceHowFar, LPLPMONIKER
- ppmkToLeft, LPLPMONIKER ppmkReduced) PURE;
- STDMETHOD(ComposeWith) (THIS_ LPMONIKER pmkRight, unsigned long fOnlyIfNotGeneric,
- LPLPMONIKER ppmkComposite) PURE;
- STDMETHOD(Enum) (THIS_ unsigned long fForward, LPLPENUMMONIKER ppenumMoniker)
- PURE;
- STDMETHOD(IsEqual) (THIS_ LPMONIKER pmkOtherMoniker) PURE;
- STDMETHOD(Hash) (THIS_ unsigned long * pdwHash) PURE;
- STDMETHOD(IsRunning) (THIS_ LPBC pbc, LPMONIKER pmkToLeft, LPMONIKER
- pmkNewlyRunning) PURE;
- STDMETHOD(GetTimeOfLastChange) (THIS_ LPBC pbc, LPMONIKER pmkToLeft,
- FILETIME * pfiletime) PURE;
- STDMETHOD(Inverse) (THIS_ LPLPMONIKER ppmk) PURE;
- STDMETHOD(CommonPrefixWith) (THIS_ LPMONIKER pmkOther, LPLPMONIKER
- ppmkPrefix) PURE;
- STDMETHOD(RelativePathTo) (THIS_ LPMONIKER pmkOther, LPLPMONIKER
- ppmkRelPath) PURE;
- STDMETHOD(GetDisplayName) (THIS_ LPBC pbc, LPMONIKER pmkToLeft,
- char * * lplpszDisplayName) PURE;
- STDMETHOD(ParseDisplayName) (THIS_ LPBC pbc, LPMONIKER pmkToLeft,
- char * lpszDisplayName, unsigned long * pchEaten,
- LPLPMONIKER ppmkOut) PURE;
- STDMETHOD(IsSystemMoniker) (THIS_ unsigned long * pdwMksys) PURE;
-
- // *** IURLMoniker methods ***
- STDMETHOD(SetURLString)(THIS_ LPOLESTR szUrl) PURE;
- };
-
-
- /////////////////////////////////////////////////////////////////////////////
- // IBindProtocol interface
-
- #undef INTERFACE
- #define INTERFACE IBindProtocol
-
- DECLARE_INTERFACE_(IBindProtocol, IUnknown)
- {
- BEGIN_INTERFACE
- // *** IUnknown methods ***
- STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID *ppvObj) PURE;
- STDMETHOD_(ULONG,AddRef)(THIS) PURE;
- STDMETHOD_(ULONG,Release)(THIS) PURE;
-
- // *** IBindProtocol methods ***
- STDMETHOD(CreateBinding)(THIS_ LPOLESTR szUrl, LPBINDCTX pbc, LPBINDING
- *ppb) PURE;
- };
-
-
- /////////////////////////////////////////////////////////////////////////////
- // IBinding interface
-
- #undef INTERFACE
- #define INTERFACE IBinding
-
- DECLARE_INTERFACE_(IBinding, IUnknown)
- {
- BEGIN_INTERFACE
- // *** IUnknown methods ***
- STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID *ppvObj) PURE;
- STDMETHOD_(ULONG,AddRef)(THIS) PURE;
- STDMETHOD_(ULONG,Release)(THIS) PURE;
-
- // *** IBinding methods ***
- STDMETHOD(Abort)(THIS) PURE;
- STDMETHOD(Suspend)(THIS) PURE;
- STDMETHOD(Resume)(THIS) PURE;
- STDMETHOD(SetPriority)(THIS_ LONG nPriority) PURE;
- STDMETHOD(GetPriority)(THIS_ LONG *pnPriority) PURE;
- STDMETHOD(GetBindResult)(THIS_ LPCLSID pclsidProtocol, LPDWORD pdwResult,
- LPOLESTR *pszResult, LPDWORD pdwReserved) PURE;
- };
-
-
- /////////////////////////////////////////////////////////////////////////////
- // IBindStatusCallback interface
-
- #undef INTERFACE
- #define INTERFACE IBindStatusCallback
-
- typedef enum
- {
- BINDVERB_GET = 0x00000000, // default action
- BINDVERB_POST = 0x00000001, // post verb
- BINDVERB_PUT = 0x00000002, // put verb
- BINDVERB_CUSTOM = 0x00000003 // custom verb
- } BINDVERB;
-
- typedef enum
- {
- BINDINFOF_URLENCODESTGMEDDATA = 0x00000001, // url encode the stgmed data
- BINDINFOF_URLENCODEDEXTRAINFO = 0x00000002 // url encode the extra info
- } BINDINFOF;
-
-
- // flags that describe the type of transaction that caller wants
- typedef enum
- {
- BINDF_ASYNCHRONOUS = 0x00000001,
- BINDF_ASYNCSTORAGE = 0x00000002,
- BINDF_NOPROGRESSIVERENDERING = 0x00000004,
- BINDF_OFFLINEOPERATION = 0x00000008,
- BINDF_GETNEWESTVERSION = 0x00000010,
- BINDF_NOWRITECACHE = 0x00000020,
- BINDF_PULLDATA = 0x00000080
- } BINDF;
-
- typedef struct _tagBINDINFO
- {
- ULONG cbSize;
- LPOLESTR szExtraInfo; // e.g. string added to the URL string [range byte]
- STGMEDIUM stgmedData; // e.g. put or post data
- DWORD grfBindInfoF; // e.g. how meddata should be treaded
- DWORD dwBindVerb; // e.g. put, post, ...
- LPOLESTR szCustomVerb; // e.g. custom verb
- DWORD cbstgmedData; // size of data in stgmedData
- } BINDINFO;
-
-
- // Data notification flags
- typedef enum
- {
- BSCF_FIRSTDATANOTIFICATION = 0x00000001,
- BSCF_INTERMEDIATEDATANOTIFICATION = 0x00000002,
- BSCF_LASTDATANOTIFICATION = 0x00000004
- } BSCF;
-
- typedef enum tagBINDSTATUS
- {
- BINDSTATUS_FINDINGRESOURCE = 1
- ,BINDSTATUS_CONNECTING
- ,BINDSTATUS_REDIRECTING
- ,BINDSTATUS_BEGINDOWNLOADDATA
- ,BINDSTATUS_DOWNLOADINGDATA
- ,BINDSTATUS_ENDDOWNLOADDATA
- ,BINDSTATUS_BEGINDOWNLOADCOMPONENTS
- ,BINDSTATUS_INSTALLINGCOMPONENTS
- ,BINDSTATUS_ENDDOWNLOADCOMPONENTS
- ,BINDSTATUS_USINGCACHEDCOPY
- ,BINDSTATUS_SENDINGREQUEST
- } BINDSTATUS;
-
- typedef enum
- {
- BSCO_ONSTARTBINDING = 0x00000001,
- BSCO_GETPRIORITY = 0x00000002,
- BSCO_ONLOWRESOURCE = 0x00000004,
- BSCO_ONPROGRESS = 0x00000008,
- BSCO_ONSTOPBINDING = 0x00000010,
- BSCO_GETBINDINFO = 0x00000020,
- BSCO_ONDATAAVAILABLE = 0x00000040,
- BSCO_ONOBJECTAVAILABLE = 0x00000080,
- BSCO_ALLONIBSC = 0x000000FF,
- BSCO_ALLONIBDGSITE = 0x0000001F
- } BSCO_OPTION;
-
- DECLARE_INTERFACE_(IBindStatusCallback, IUnknown)
- {
- BEGIN_INTERFACE
- // *** IUnknown methods ***
- STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID *ppvObj) PURE;
- STDMETHOD_(ULONG,AddRef)(THIS) PURE;
- STDMETHOD_(ULONG,Release)(THIS) PURE;
-
- // *** IBindStatusCallback methods ***
- STDMETHOD(OnStartBinding)(THIS_ DWORD grfBSCOption, LPBINDING pib) PURE;
- STDMETHOD(GetPriority)(THIS_ LONG *pnPriority) PURE;
- STDMETHOD(OnLowResource)(THIS_ DWORD reserved) PURE;
- STDMETHOD(OnProgress)(THIS_ ULONG ulProgress, ULONG ulProgressMax,
- ULONG ulStatusCode, LPCOLESTR szStatusText) PURE;
- STDMETHOD(OnStopBinding)(THIS_ HRESULT hresult, LPCOLESTR szError) PURE;
- STDMETHOD(GetBindInfo)(THIS_ LPDWORD grfBINDF, BINDINFO *pbindinfo) PURE;
- STDMETHOD(OnDataAvailable)(THIS_ DWORD grfBSCF, DWORD dwSize, LPFORMATETC pformatetc, LPSTGMEDIUM pstgmed) PURE;
- STDMETHOD(OnObjectAvailable)(THIS_ REFIID riid, LPUNKNOWN punk) PURE;
- };
-
- #ifndef E_PENDING
- #define E_PENDING MAKE_SCODE(SEVERITY_ERROR, FACILITY_NULL, 0xA)
- #endif
-
- #endif
-