Implemented stubs for SHRegEnumUSKey{A|W} and return end-of-list error
[wine] / include / urlmon.h
1 /*
2  * urlmon.h
3  */
4
5 #ifndef __WINE__
6 #include "rpc.h"
7 #include "rpcndr.h"
8 #ifndef COM_NO_WINDOWS_H
9 #include "windows.h"
10 #include "ole2.h"
11 #endif
12 #endif
13
14 #ifndef __WINE_URLMON_H
15 #define __WINE_URLMON_H
16
17 #include "winbase.h"
18 #include "wine/obj_base.h"
19
20 #ifdef __cplusplus
21 extern "C" {
22 #endif /* defined(__cplusplus) */
23
24 DEFINE_GUID(IID_IBinding, 0x79EAC9C0, 0xBAF9, 0x11CE,
25         0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0x0B);
26 typedef struct IBinding IBinding,*LPBINDING;
27
28 DEFINE_GUID(IID_IBindStatusCallback, 0x79EAC9C1, 0xBAF9, 0x11CE,
29         0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0x0B);
30 typedef struct IBindStatusCallback IBindStatusCallback,*LPBINDSTATUSCALLBACK;
31
32 DEFINE_GUID(IID_IBindHost, 0XFC4801A1, 0X2BA9, 0X11CF,
33     0XA2, 0X29, 0X00, 0XAA, 0X00, 0X3D, 0X73, 0X52);
34 typedef struct IBindHost IBindHost,*LPBINDHOST;
35
36 DEFINE_GUID(IID_IWinInetInfo, 0x79EAC9D6, 0xBAFA, 0x11CE,
37     0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0X0B);
38 typedef struct IWinInetInfo IWinInetInfo,*LPWININETINFO;
39
40 DEFINE_GUID(IID_IWinInetHttpInfo, 0x79EAC9D8, 0xBAFA, 0x11CE,
41     0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0X0B);
42 typedef struct IWinInetHttpInfo IWinInetHttpInfo,*LPWININETHTTPINFO;
43
44 typedef enum {
45         BINDF_ASYNCHRONOUS = 0x00000001,
46         BINDF_ASYNCSTORAGE = 0x00000002,
47         BINDF_NOPROGRESSIVERENDERING = 0x00000004,
48         BINDF_OFFLINEOPERATION = 0x00000008,
49         BINDF_GETNEWESTVERSION = 0x00000010,
50         BINDF_NOWRITECACHE = 0x00000020,
51         BINDF_NEEDFILE = 0x00000040,
52         BINDF_PULLDATA = 0x00000080,
53         BINDF_IGNORESECURITYPROBLEM = 0x00000100,
54         BINDF_RESYNCHRONIZE = 0x00000200,
55         BINDF_HYPERLINK = 0x00000400,
56         BINDF_NO_UI = 0x00000800,
57         BINDF_SILENTOPERATION = 0x00001000,
58         BINDF_PRAGMA_NO_CACHE = 0x00002000,
59         BINDF_GETCLASSOBJECT = 0x00004000,
60         BINDF_RESERVED_1 = 0x00008000,
61         BINDF_FREE_THREADED = 0x00010000,
62         BINDF_DIRECT_READ = 0x00020000,
63         BINDF_FORMS_SUBMIT = 0x00040000,
64         BINDF_GETFROMCACHE_IF_NET_FAIL = 0x00080000,
65         BINDF_FROMURLMON = 0x00100000,
66         BINDF_FWD_BACK = 0x00200000,
67         BINDF_PREFERDEFAULTHANDLER = 0x00400000,
68         BINDF_RESERVED_3 = 0x00800000
69 } BINDF;
70
71 typedef struct _tagBINDINFO {
72     ULONG cbSize;
73     LPWSTR szExtraInfo;
74     STGMEDIUM stgmedData;
75     DWORD dwBindVerb;
76     LPWSTR szCustomVerb;
77     DWORD cbStgmedData;
78     DWORD dwOptions;
79     DWORD dwOptionsFlags;
80     DWORD dwCodePage;
81     SECURITY_ATTRIBUTES securityAttributes;
82     IID iid;
83     IUnknown *pUnk;
84     DWORD dwReserved;
85 } BINDINFO;
86
87 typedef enum {
88     BSCF_FIRSTDATANOTIFICATION = 0x01,
89     BSCF_INTERMEDIATEDATANOTIFICATION = 0x02,
90     BSCF_LASTDATANOTIFICATION = 0x04,
91     BSCF_DATAFULLYAVAILABLE = 0x08,
92     BSCF_AVAILABLEDATASIZEUNKNOWN = 0x10
93 } BSCF;
94
95 typedef enum BINDSTATUS {
96         BINDSTATUS_FINDINGRESOURCE,
97         BINDSTATUS_CONNECTING,
98         BINDSTATUS_REDIRECTING,
99         BINDSTATUS_BEGINDOWNLOADDATA,
100         BINDSTATUS_DOWNLOADINGDATA,
101         BINDSTATUS_ENDDOWNLOADDATA,
102         BINDSTATUS_BEGINDOWNLOADCOMPONENTS,
103         BINDSTATUS_INSTALLINGCOMPONENTS,
104         BINDSTATUS_ENDDOWNLOADCOMPONENTS,
105         BINDSTATUS_USINGCACHEDCOPY,
106         BINDSTATUS_SENDINGREQUEST,
107         BINDSTATUS_CLASSIDAVAILABLE,
108         BINDSTATUS_MIMETYPEAVAILABLE,
109         BINDSTATUS_CACHEFILENAMEAVAILABLE,
110         BINDSTATUS_BEGINSYNCOPERATION,
111         BINDSTATUS_ENDSYNCOPERATION,
112         BINDSTATUS_BEGINUPLOADDATA,
113         BINDSTATUS_UPLOADINGDATA,
114         BINDSTATUS_ENDUPLOADINGDATA,
115         BINDSTATUS_PROTOCOLCLASSID,
116         BINDSTATUS_ENCODING,
117         BINDSTATUS_VERFIEDMIMETYPEAVAILABLE,
118         BINDSTATUS_CLASSINSTALLLOCATION,
119         BINDSTATUS_DECODING,
120         BINDSTATUS_LOADINGMIMEHANDLER,
121         BINDSTATUS_CONTENTDISPOSITIONATTACH,
122         BINDSTATUS_FILTERREPORTMIMETYPE,
123         BINDSTATUS_CLSIDCANINSTANTIATE,
124         BINDSTATUS_IUNKNOWNAVAILABLE,
125         BINDSTATUS_DIRECTBIND,
126         BINDSTATUS_RAWMIMETYPE,
127         BINDSTATUS_PROXYDETECTING,
128         BINDSTATUS_ACCEPTRANGES
129 } BINDSTATUS;
130
131 #define MK_S_ASYNCHRONOUS 0x000401E8
132 #define S_ASYNCHRONOUS    MK_S_ASYNCHRONOUS
133
134 /*****************************************************************************
135  * IBinding interface
136  */
137 #define ICOM_INTERFACE IBinding
138 #define IBinding_METHODS \
139     ICOM_METHOD  (HRESULT,Abort) \
140     ICOM_METHOD  (HRESULT,Suspend) \
141     ICOM_METHOD  (HRESULT,Resume) \
142     ICOM_METHOD1 (HRESULT,SetPriority,       LONG,nPriority) \
143     ICOM_METHOD1 (HRESULT,GetPriority,       LONG*,pnPriority) \
144     ICOM_METHOD4 (HRESULT,GetBindResult,     CLSID*,pclsidProtocol, DWORD*,pdwResult, LPOLESTR*,pszResult, DWORD*,pdwReserved)
145 #define IBinding_IMETHODS \
146     IUnknown_IMETHODS \
147     IBinding_METHODS
148 ICOM_DEFINE(IBinding,IUnknown)
149 #undef ICOM_INTERFACE
150
151 /*** IUnknown methods ***/
152 #define IBinding_QueryInterface(p,a,b)      ICOM_CALL2(QueryInterface,p,a,b)
153 #define IBinding_AddRef(p)                  ICOM_CALL (AddRef,p)
154 #define IBinding_Release(p)                 ICOM_CALL (Release,p)
155 /*** IBinding methods ***/
156 #define IBinding_Abort(p)                   ICOM_CALL (Abort,p)
157 #define IBinding_Suspend(p)                 ICOM_CALL (Suspend,p)
158 #define IBinding_Resume(p)                  ICOM_CALL (Resume,p)
159 #define IBinding_SetPriority(p,a)           ICOM_CALL2(SetPriority,p,a)
160 #define IBinding_GetPriority(p,a)           ICOM_CALL2(GetPriority,p,a)
161 #define IBinding_GetBindResult(p,a,b,c,d)   ICOM_CALL4(GetBindResult,p,a,b,c,d)
162
163 /*****************************************************************************
164  * IBindStatusCallback interface
165  */
166 #define ICOM_INTERFACE IBindStatusCallback
167 #define IBindStatusCallback_METHODS \
168     ICOM_METHOD2 (HRESULT,OnStartBinding,    DWORD,dwReserved, IBinding*,pib) \
169     ICOM_METHOD1 (HRESULT,GetPriority,       LONG*,pnPriority) \
170     ICOM_METHOD  (HRESULT,OnLowResource) \
171     ICOM_METHOD4 (HRESULT,OnProgress,        ULONG,ulProgress, ULONG,ulProgressMax, ULONG,ulStatusCode, LPCWSTR,szStatusText) \
172     ICOM_METHOD2 (HRESULT,OnStopBinding,     HRESULT,hresult, LPCWSTR,szError) \
173     ICOM_METHOD2 (HRESULT,GetBindInfo,       DWORD*,grfBINDF, BINDINFO*,pbindinfo) \
174     ICOM_METHOD4 (HRESULT,OnDataAvailable,   DWORD,grfBSCF, DWORD,dwSize, FORMATETC*,pformatetc, STGMEDIUM*,pstgmed) \
175     ICOM_METHOD2 (HRESULT,OnObjectAvailable, REFIID,iid, IUnknown*,punk)
176 #define IBindStatusCallback_IMETHODS \
177     IUnknown_IMETHODS \
178     IBindStatusCallback_METHODS
179 ICOM_DEFINE(IBindStatusCallback,IUnknown)
180 #undef ICOM_INTERFACE
181
182 /*** IUnknown methods ***/
183 #define IBindStatusCallback_QueryInterface(p,a,b)      ICOM_CALL2(QueryInterface,p,a,b)
184 #define IBindStatusCallback_AddRef(p)                  ICOM_CALL (AddRef,p)
185 #define IBindStatusCallback_Release(p)                 ICOM_CALL (Release,p)
186 /*** IBindStatusCallback methods ***/
187 #define IBindStatusCallback_OnStartBinding(p,a,b)      ICOM_CALL2(OnStartBinding,p,a,b)
188 #define IBindStatusCallback_GetPriority(p,a)           ICOM_CALL1(GetPriority,p,a)
189 #define IBindStatusCallback_OnLowResource(p)           ICOM_CALL (OnLowResource,p)
190 #define IBindStatusCallback_OnProgress(p,a,b,c,d)      ICOM_CALL4(OnProgress,p,a,b,c,d)
191 #define IBindStatusCallback_OnStopBinding(p,a,b)       ICOM_CALL2(OnStopBinding,p,a,b)
192 #define IBindStatusCallback_GetBindInfo(p,a,b)         ICOM_CALL2(GetBindInfo,p,a,b)
193 #define IBindStatusCallback_OnDataAvailable(p,a,b,c,d) ICOM_CALL4(OnDataAvailable,p,a,b,c,d)
194 #define IBindStatusCallback_OnObjectAvailable(p,a,b)   ICOM_CALL2(OnObjectAvailable,p,a,b)
195
196 /*****************************************************************************
197  * IBindHost interface
198  */
199 #define ICOM_INTERFACE IBindHost
200 #define IBindHost_METHODS \
201     ICOM_METHOD4 (HRESULT,CreateMoniker,              LPOLESTR,szName, IBindCtx*,pBC, IMoniker**,ppmk, DWORD,dwReserved) \
202     ICOM_METHOD5 (HRESULT,MonikerBindToStorage,       IMoniker*,pMk, IBindCtx*,pBC, IBindStatusCallback*,pBSC, REFIID,riid, LPVOID*,ppvObj) \
203     ICOM_METHOD5 (HRESULT,MonikerBindToObject,        IMoniker*,pMk, IBindCtx*,pBC, IBindStatusCallback*,pBSC, REFIID,riid, LPVOID*,ppvObj)
204 #define IBindHost_IMETHODS \
205     IUnknown_IMETHODS \
206     IBindHost_METHODS
207 ICOM_DEFINE(IBindHost,IUnknown)
208 #undef ICOM_INTERFACE
209
210 /*** IUnknown methods ***/
211 #define IBindHost_QueryInterface(p,a,b)                   ICOM_CALL2(QueryInterface,p,a,b)
212 #define IBindHost_AddRef(p)                               ICOM_CALL (AddRef,p)
213 #define IBindHost_Release(p)                              ICOM_CALL (Release,p)
214 /*** IBindHost methods ***/
215 #define IBindHost_CreateMoniker(p,a,b,c,d)                ICOM_CALL4(CreateMoniker,p,a,b,c,d)
216 #define IBindHost_MonikerBindToStorage(p,a,b,c,d,e)       ICOM_CALL5(MonikerBindToStorage,p,a,b,c,d,e)
217 #define IBindHost_MonikerBindToObject(p,a,b,c,d,e)        ICOM_CALL5(MonikerBindToObject,p,a,b,c,d,e)
218
219 /*** IUnknown methods ***/
220 typedef enum _tagQUERYOPTION {
221     QUERY_EXPIRATION_DATE = 1,
222     QUERY_TIME_OF_LAST_CHANGE,
223     QUERY_CONTENT_ENCODING,
224     QUERY_CONTENT_TYPE,
225     QUERY_REFRESH,
226     QUERY_RECOMBINE,
227     QUERY_CAN_NAVIGATE,
228     QUERY_USES_NETWORK,
229     QUERY_IS_CACHED,
230     QUERY_IS_INSTALLEDENTRY,
231     QUERY_IS_CACHED_OR_MAPPED,
232     QUERY_USES_CACHE,
233     QUERY_IS_SECURE,
234     QUERY_IS_SAFE
235 } QUERYOPTION;
236
237 /*****************************************************************************
238  * IWinInetInfo interface
239  */
240 #define ICOM_INTERFACE IWinInetInfo
241 #define IWinInetInfo_METHODS \
242     ICOM_METHOD3 (HRESULT,QueryOption,       DWORD,dwOption, LPVOID,pBuffer, DWORD*,pcbBuf)
243 #define IWinInetInfo_IMETHODS \
244     IUnknown_IMETHODS \
245     IWinInetInfo_METHODS
246 ICOM_DEFINE(IWinInetInfo,IUnknown)
247 #undef ICOM_INTERFACE
248
249 /*** IUnknown methods ***/
250 #define IWinInetInfo_QueryInterface(p,a,b)      ICOM_CALL2(QueryInterface,p,a,b)
251 #define IWinInetInfo_AddRef(p)                  ICOM_CALL (AddRef,p)
252 #define IWinInetInfo_Release(p)                 ICOM_CALL (Release,p)
253 /*** IWinInetInfo methods ***/
254 #define IWinInetInfo_QueryOption(p,a,b,c)       ICOM_CALL3(QueryOption,p,a,b,c)
255
256 /*****************************************************************************
257  * IWinInetHttpInfo interface
258  */
259 #define ICOM_INTERFACE IWinInetHttpInfo
260 #define IWinInetHttpInfo_METHODS \
261     ICOM_METHOD5 (HRESULT,QueryInfo, DWORD,dwOption, LPVOID,pBuffer, DWORD*,pcbBuf, DWORD*,pdwFlags, DWORD*,pdwReserved)
262 #define IWinInetHttpInfo_IMETHODS \
263     IWinInetInfo_IMETHODS \
264     IWinInetHttpInfo_METHODS
265 ICOM_DEFINE(IWinInetHttpInfo,IWinInetInfo)
266 #undef ICOM_INTERFACE
267
268 /*** IUnknown methods ***/
269 #define IWinInetHttpInfo_QueryInterface(p,a,b)  ICOM_CALL2(QueryInterface,p,a,b)
270 #define IWinInetHttpInfo_AddRef(p)              ICOM_CALL (AddRef,p)
271 #define IWinInetHttpInfo_Release(p)             ICOM_CALL (Release,p)
272 /*** IWinInetHttpInfo methods ***/
273 #define IWinInetHttpInfo_QueryInfo(p,a,b,c,d,e) ICOM_CALL5(QueryInfo,p,a,b,c,d,e)
274
275 HRESULT WINAPI CreateURLMoniker(IMoniker *pmkContext, LPWSTR szURL, IMoniker **ppmk);
276 HRESULT WINAPI RegisterBindStatusCallback(IBindCtx *pbc, IBindStatusCallback *pbsc, IBindStatusCallback **ppbsc, DWORD dwReserved);
277
278 #ifdef __cplusplus
279 }      /* extern "C" */
280 #endif /* defined(__cplusplus) */
281
282 #endif /* __WINE_URLMON_H */
283