Implement conversions between dates and strings.
[wine/hacks.git] / include / urlmon.idl
blob1863640869c392680e360fd8e5392a93da6ecfb1
1 /*
2 * Copyright (C) 2000 Ulrich Czekalla
3 * Copyright (C) 2003 Alexandre Julliard
5 * This library is free software; you can redistribute it and/or
6 * modify it under the terms of the GNU Lesser General Public
7 * License as published by the Free Software Foundation; either
8 * version 2.1 of the License, or (at your option) any later version.
10 * This library is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 * Lesser General Public License for more details.
15 * You should have received a copy of the GNU Lesser General Public
16 * License along with this library; if not, write to the Free Software
17 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
20 import "objidl.idl";
21 import "oleidl.idl";
22 import "servprov.idl";
23 /*import "msxml.idl";*/
26 /*****************************************************************************
27 * IBinding interface
30 object,
31 uuid(79eac9c0-baf9-11ce-8c82-00aa004ba90b),
32 pointer_default(unique)
34 interface IBinding : IUnknown
36 typedef [unique] IBinding *LPBINDING;
38 HRESULT Abort();
39 HRESULT Suspend();
40 HRESULT Resume();
42 HRESULT SetPriority(
43 [in] LONG nPriority);
45 HRESULT GetPriority(
46 [out] LONG * pnPriority);
48 [local]
49 HRESULT GetBindResult(
50 [out] CLSID *pclsidProtocol,
51 [out] DWORD *pdwResult,
52 [out] LPOLESTR *pszResult,
53 [in, out] DWORD *pdwReserved);
55 [call_as(GetBindResult)]
56 HRESULT RemoteGetBindResult(
57 [out] CLSID *pclsidProtocol,
58 [out] DWORD *pdwResult,
59 [out] LPOLESTR *pszResult,
60 [in] DWORD dwReserved);
64 /*****************************************************************************
65 * IBindStatusCallback interface
68 object,
69 uuid(79eac9c1-baf9-11ce-8c82-00aa004ba90b),
70 pointer_default(unique)
72 interface IBindStatusCallback : IUnknown
74 typedef [unique] IBindStatusCallback *LPBINDSTATUSCALLBACK;
77 typedef enum
79 BINDF_ASYNCHRONOUS = 0x00000001,
80 BINDF_ASYNCSTORAGE = 0x00000002,
81 BINDF_NOPROGRESSIVERENDERING = 0x00000004,
82 BINDF_OFFLINEOPERATION = 0x00000008,
83 BINDF_GETNEWESTVERSION = 0x00000010,
84 BINDF_NOWRITECACHE = 0x00000020,
85 BINDF_NEEDFILE = 0x00000040,
86 BINDF_PULLDATA = 0x00000080,
87 BINDF_IGNORESECURITYPROBLEM = 0x00000100,
88 BINDF_RESYNCHRONIZE = 0x00000200,
89 BINDF_HYPERLINK = 0x00000400,
90 BINDF_NO_UI = 0x00000800,
91 BINDF_SILENTOPERATION = 0x00001000,
92 BINDF_PRAGMA_NO_CACHE = 0x00002000,
93 BINDF_GETCLASSOBJECT = 0x00004000,
94 BINDF_RESERVED_1 = 0x00008000,
95 BINDF_FREE_THREADED = 0x00010000,
96 BINDF_DIRECT_READ = 0x00020000,
97 BINDF_FORMS_SUBMIT = 0x00040000,
98 BINDF_GETFROMCACHE_IF_NET_FAIL = 0x00080000,
99 BINDF_FROMURLMON = 0x00100000,
100 BINDF_FWD_BACK = 0x00200000,
101 BINDF_PREFERDEFAULTHANDLER = 0x00400000,
102 BINDF_ENFORCERESTRICTED = 0x00800000
103 } BINDF;
105 typedef struct _tagBINDINFO
107 ULONG cbSize;
108 LPWSTR szExtraInfo;
109 STGMEDIUM stgmedData;
110 DWORD grfBindInfoF;
111 DWORD dwBindVerb;
112 LPWSTR szCustomVerb;
113 DWORD cbStgmedData;
114 DWORD dwOptions;
115 DWORD dwOptionsFlags;
116 DWORD dwCodePage;
117 SECURITY_ATTRIBUTES securityAttributes;
118 IID iid;
119 IUnknown *pUnk;
120 DWORD dwReserved;
121 } BINDINFO;
123 typedef struct _REMSECURITY_ATTRIBUTES
125 DWORD nLength;
126 DWORD lpSecurityDescriptor;
127 BOOL bInheritHandle;
128 } REMSECURITY_ATTRIBUTES, *PREMSECURITY_ATTRIBUTES, *LPREMSECURITY_ATTRIBUTES;
130 typedef struct _tagRemBINDINFO
132 ULONG cbSize;
133 LPWSTR szExtraInfo;
134 DWORD grfBindInfoF;
135 DWORD dwBindVerb;
136 LPWSTR szCustomVerb;
137 DWORD cbstgmedData;
138 DWORD dwOptions;
139 DWORD dwOptionsFlags;
140 DWORD dwCodePage;
141 REMSECURITY_ATTRIBUTES securityAttributes;
142 IID iid;
143 IUnknown *pUnk;
144 DWORD dwReserved;
145 } RemBINDINFO;
147 typedef struct tagRemFORMATETC
149 DWORD cfFormat;
150 DWORD ptd;
151 DWORD dwAspect;
152 LONG lindex;
153 DWORD tymed;
154 } RemFORMATETC, *LPREMFORMATETC;
156 typedef enum
158 BSCF_FIRSTDATANOTIFICATION = 0x01,
159 BSCF_INTERMEDIATEDATANOTIFICATION = 0x02,
160 BSCF_LASTDATANOTIFICATION = 0x04,
161 BSCF_DATAFULLYAVAILABLE = 0x08,
162 BSCF_AVAILABLEDATASIZEUNKNOWN = 0x10
163 } BSCF;
165 typedef enum BINDSTATUS
167 BINDSTATUS_FINDINGRESOURCE = 1,
168 BINDSTATUS_CONNECTING,
169 BINDSTATUS_REDIRECTING,
170 BINDSTATUS_BEGINDOWNLOADDATA,
171 BINDSTATUS_DOWNLOADINGDATA,
172 BINDSTATUS_ENDDOWNLOADDATA,
173 BINDSTATUS_BEGINDOWNLOADCOMPONENTS,
174 BINDSTATUS_INSTALLINGCOMPONENTS,
175 BINDSTATUS_ENDDOWNLOADCOMPONENTS,
176 BINDSTATUS_USINGCACHEDCOPY,
177 BINDSTATUS_SENDINGREQUEST,
178 BINDSTATUS_CLASSIDAVAILABLE,
179 BINDSTATUS_MIMETYPEAVAILABLE,
180 BINDSTATUS_CACHEFILENAMEAVAILABLE,
181 BINDSTATUS_BEGINSYNCOPERATION,
182 BINDSTATUS_ENDSYNCOPERATION,
183 BINDSTATUS_BEGINUPLOADDATA,
184 BINDSTATUS_UPLOADINGDATA,
185 BINDSTATUS_ENDUPLOADINGDATA,
186 BINDSTATUS_PROTOCOLCLASSID,
187 BINDSTATUS_ENCODING,
188 BINDSTATUS_VERFIEDMIMETYPEAVAILABLE,
189 BINDSTATUS_CLASSINSTALLLOCATION,
190 BINDSTATUS_DECODING,
191 BINDSTATUS_LOADINGMIMEHANDLER,
192 BINDSTATUS_CONTENTDISPOSITIONATTACH,
193 BINDSTATUS_FILTERREPORTMIMETYPE,
194 BINDSTATUS_CLSIDCANINSTANTIATE,
195 BINDSTATUS_IUNKNOWNAVAILABLE,
196 BINDSTATUS_DIRECTBIND,
197 BINDSTATUS_RAWMIMETYPE,
198 BINDSTATUS_PROXYDETECTING,
199 BINDSTATUS_ACCEPTRANGES,
200 BINDSTATUS_COOKIE_SENT,
201 BINDSTATUS_COMPACT_POLICY_RECEIVED,
202 BINDSTATUS_COOKIE_SUPPRESSED,
203 BINDSTATUS_COOKIE_STATE_UNKNOWN,
204 BINDSTATUS_COOKIE_STATE_ACCEPT,
205 BINDSTATUS_COOKIE_STATE_REJECT,
206 BINDSTATUS_COOKIE_STATE_PROMPT,
207 BINDSTATUS_COOKIE_STATE_LEASH,
208 BINDSTATUS_COOKIE_STATE_DOWNGRADE,
209 BINDSTATUS_POLICY_HREF,
210 BINDSTATUS_P3P_HEADER,
211 BINDSTATUS_SESSION_COOKIE_RECEIVED,
212 BINDSTATUS_PERSISTENT_COOKIE_RECEIVED,
213 BINDSTATUS_SESSION_COOKIES_ALLOWED,
214 BINDSTATUS_CACHECONTROL
215 } BINDSTATUS;
218 HRESULT OnStartBinding(
219 [in] DWORD dwReserved,
220 [in] IBinding * pib);
222 HRESULT GetPriority(
223 [out] LONG * pnPriority);
225 HRESULT OnLowResource(
226 [in] DWORD reserved);
228 HRESULT OnProgress(
229 [in] ULONG ulProgress,
230 [in] ULONG ulProgressMax,
231 [in] ULONG ulStatusCode,
232 [in] LPCWSTR szStatusText);
234 HRESULT OnStopBinding(
235 [in] HRESULT hresult,
236 [in, unique] LPCWSTR szError);
238 [local]
239 HRESULT GetBindInfo(
240 [out] DWORD *grfBINDF,
241 [in, out, unique] BINDINFO * pbindinfo);
243 [call_as(GetBindInfo)]
244 HRESULT RemoteGetBindInfo(
245 [out] DWORD *grfBINDF,
246 [in, out, unique] RemBINDINFO * pbindinfo,
247 [in, out, unique] RemSTGMEDIUM* pstgmed);
249 [local]
250 HRESULT OnDataAvailable(
251 [in] DWORD grfBSCF,
252 [in] DWORD dwSize,
253 [in] FORMATETC* pformatetc,
254 [in] STGMEDIUM* pstgmed);
256 [call_as(OnDataAvailable)]
257 HRESULT RemoteOnDataAvailable(
258 [in] DWORD grfBSCF,
259 [in] DWORD dwSize,
260 [in] RemFORMATETC *pformatetc,
261 [in] RemSTGMEDIUM* pstgmed);
263 HRESULT OnObjectAvailable(
264 [in] REFIID riid,
265 [in, iid_is(riid)] IUnknown* punk);
269 /*****************************************************************************
270 * IBindHost interface
272 cpp_quote("#define SID_IBindHost IID_IBindHost")
273 cpp_quote("#define SID_SBindHost IID_IBindHost")
275 object,
276 uuid(fc4801a1-2ba9-11cf-a229-00aa003d7352),
277 pointer_default(unique)
279 interface IBindHost : IUnknown
281 typedef [unique] IBindHost *LPBINDHOST;
283 HRESULT CreateMoniker(
284 [in] LPOLESTR szName,
285 [in] IBindCtx *pBC,
286 [out] IMoniker** ppmk,
287 [in] DWORD dwReserved);
289 [local]
290 HRESULT MonikerBindToStorage(
291 [in] IMoniker *pMk,
292 [in] IBindCtx *pBC,
293 [in] IBindStatusCallback *pBSC,
294 [in] REFIID riid,
295 [out] void **ppvObj);
297 [call_as(MonikerBindToStorage)]
298 HRESULT RemoteMonikerBindToStorage(
299 [in, unique] IMoniker *pMk,
300 [in, unique] IBindCtx *pBC,
301 [in, unique] IBindStatusCallback *pBSC,
302 [in] REFIID riid,
303 [out, iid_is(riid)] IUnknown **ppvObj);
305 [local]
306 HRESULT MonikerBindToObject(
307 [in] IMoniker *pMk,
308 [in] IBindCtx *pBC,
309 [in] IBindStatusCallback *pBSC,
310 [in] REFIID riid,
311 [out] void **ppvObj);
313 [call_as(MonikerBindToObject)]
314 HRESULT RemoteMonikerBindToObject(
315 [in, unique] IMoniker *pMk,
316 [in, unique] IBindCtx *pBC,
317 [in, unique] IBindStatusCallback *pBSC,
318 [in] REFIID riid,
319 [out, iid_is(riid)] IUnknown **ppvObj);
323 /*****************************************************************************
324 * IWinInetInfo interface
327 object,
328 uuid(79eac9d6-bafa-11ce-8c82-00aa004ba90b),
329 pointer_default(unique)
331 interface IWinInetInfo : IUnknown
333 typedef [unique] IWinInetInfo *LPWININETINFO;
335 [local]
336 HRESULT QueryOption(
337 [in] DWORD dwOption,
338 [in, out, size_is(*pcbBuf)] LPVOID pBuffer,
339 [in, out] DWORD *pcbBuf);
341 [call_as(QueryOption)]
342 HRESULT RemoteQueryOption(
343 [in] DWORD dwOption,
344 [in, out, size_is(*pcbBuf)] BYTE *pBuffer,
345 [in, out] DWORD *pcbBuf);
350 /*****************************************************************************
351 * IWinInetHttpInfo interface
354 object,
355 uuid(79eac9d8-bafa-11ce-8c82-00aa004ba90b),
356 pointer_default(unique)
358 interface IWinInetHttpInfo : IWinInetInfo
360 typedef [unique] IWinInetHttpInfo *LPWININETHTTPINFO;
362 [local]
363 HRESULT QueryInfo(
364 [in] DWORD dwOption,
365 [in, out,size_is(*pcbBuf)] LPVOID pBuffer,
366 [in, out] DWORD *pcbBuf,
367 [in, out] DWORD *pdwFlags,
368 [in, out] DWORD *pdwReserved);
370 [call_as(QueryInfo)]
371 HRESULT RemoteQueryInfo(
372 [in] DWORD dwOption,
373 [in,out,size_is(*pcbBuf)] BYTE *pBuffer,
374 [in, out] DWORD *pcbBuf,
375 [in, out] DWORD *pdwFlags,
376 [in, out] DWORD *pdwReserved);
381 /*****************************************************************************
382 * IPersistMoniker interface
385 object,
386 uuid(79eac9c9-baf9-11ce-8c82-00aa004ba90b),
387 pointer_default(unique)
389 interface IPersistMoniker : IUnknown
391 typedef [unique] IPersistMoniker *LPPERSISTMONIKER;
393 HRESULT GetClassID(
394 [out] CLSID *pClassID);
396 HRESULT IsDirty();
398 HRESULT Load(
399 [in] BOOL fFullyAvailable,
400 [in] IMoniker *pimkName,
401 [in] LPBC pibc,
402 [in] DWORD grfMode);
404 HRESULT Save(
405 [in] IMoniker *pimkName,
406 [in] LPBC pbc,
407 [in] BOOL fRemember);
409 HRESULT SaveCompleted(
410 [in] IMoniker *pimkName,
411 [in] LPBC pibc);
413 HRESULT GetCurMoniker(
414 [out] IMoniker **ppimkName);
418 /*****************************************************************************
419 * IInternetProtocolInfo interface
422 local,
423 object,
424 uuid(79eac9ec-baf9-11ce-8c82-00aa004ba90b),
425 pointer_default(unique)
427 interface IInternetProtocolInfo : IUnknown
429 typedef [unique] IInternetProtocolInfo *LPIINTERNETPROTOCOLINFO;
431 typedef enum _tagPARSEACTION
433 PARSE_CANONICALIZE = 1,
434 PARSE_FRIENDLY,
435 PARSE_SECURITY_URL,
436 PARSE_ROOTDOCUMENT,
437 PARSE_DOCUMENT,
438 PARSE_ANCHOR,
439 PARSE_ENCODE,
440 PARSE_DECODE,
441 PARSE_PATH_FROM_URL,
442 PARSE_URL_FROM_PATH,
443 PARSE_MIME,
444 PARSE_SERVER,
445 PARSE_SCHEMA,
446 PARSE_SITE,
447 PARSE_DOMAIN,
448 PARSE_LOCATION,
449 PARSE_SECURITY_DOMAIN,
450 PARSE_ESCAPE,
451 PARSE_UNESCAPE
452 } PARSEACTION;
454 typedef enum _tagPSUACTION
456 PSU_DEFAULT = 1,
457 PSU_SECURITY_URL_ONLY
458 } PSUACTION;
460 typedef enum _tagQUERYOPTION
462 QUERY_EXPIRATION_DATE = 1,
463 QUERY_TIME_OF_LAST_CHANGE,
464 QUERY_CONTENT_ENCODING,
465 QUERY_CONTENT_TYPE,
466 QUERY_REFRESH,
467 QUERY_RECOMBINE,
468 QUERY_CAN_NAVIGATE,
469 QUERY_USES_NETWORK,
470 QUERY_IS_CACHED,
471 QUERY_IS_INSTALLEDENTRY,
472 QUERY_IS_CACHED_OR_MAPPED,
473 QUERY_USES_CACHE,
474 QUERY_IS_SECURE,
475 QUERY_IS_SAFE
476 } QUERYOPTION;
478 HRESULT ParseUrl(
479 [in] LPCWSTR pwzUrl,
480 [in] PARSEACTION ParseAction,
481 [in] DWORD dwParseFlags,
482 [out] LPWSTR pwzResult,
483 [in] DWORD cchResult,
484 [out] DWORD *pcchResult,
485 [in] DWORD dwReserved);
487 HRESULT CombineUrl(
488 [in] LPCWSTR pwzBaseUrl,
489 [in] LPCWSTR pwzRelativeUrl,
490 [in] DWORD dwCombineFlags,
491 [out] LPWSTR pwzResult,
492 [in] DWORD cchResult,
493 [out] DWORD *pcchResult,
494 [in] DWORD dwReserved);
496 HRESULT CompareUrl(
497 [in] LPCWSTR pwzUrl1,
498 [in] LPCWSTR pwzUrl2,
499 [in] DWORD dwCompareFlags);
501 HRESULT QueryInfo(
502 [in] LPCWSTR pwzUrl,
503 [in] QUERYOPTION OueryOption,
504 [in] DWORD dwQueryFlags,
505 [in, out,size_is(*pcbBuf)] LPVOID pBuffer,
506 [in] DWORD cbBuffer,
507 [in, out] DWORD *pcbBuf,
508 [in] DWORD dwReserved);
512 cpp_quote("#define MK_S_ASYNCHRONOUS 0x000401E8")
513 cpp_quote("#define S_ASYNCHRONOUS MK_S_ASYNCHRONOUS")
515 cpp_quote("#define INET_E_ERROR_FIRST 0x800C0002L")
516 cpp_quote("#define INET_E_INVALID_URL 0x800C0002L")
517 cpp_quote("#define INET_E_NO_SESSION 0x800C0003L")
518 cpp_quote("#define INET_E_CANNOT_CONNECT 0x800C0004L")
519 cpp_quote("#define INET_E_RESOURCE_NOT_FOUND 0x800C0005L")
520 cpp_quote("#define INET_E_OBJECT_NOT_FOUND 0x800C0006L")
521 cpp_quote("#define INET_E_DATA_NOT_AVAILABLE 0x800C0007L")
522 cpp_quote("#define INET_E_DOWNLOAD_FAILURE 0x800C0008L")
523 cpp_quote("#define INET_E_AUTHENTICATION_REQUIRED 0x800C0009L")
524 cpp_quote("#define INET_E_NO_VALID_MEDIA 0x800C000AL")
525 cpp_quote("#define INET_E_CONNECTION_TIMEOUT 0x800C000BL")
526 cpp_quote("#define INET_E_INVALID_REQUEST 0x800C000CL")
527 cpp_quote("#define INET_E_UNKNOWN_PROTOCOL 0x800C000DL")
528 cpp_quote("#define INET_E_SECURITY_PROBLEM 0x800C000EL")
529 cpp_quote("#define INET_E_CANNOT_LOAD_DATA 0x800C000FL")
530 cpp_quote("#define INET_E_CANNOT_INSTANTIATE_OBJECT 0x800C0010L")
531 cpp_quote("#define INET_E_QUERYOPTION_UNKNOWN 0x800C0013L")
532 cpp_quote("#define INET_E_REDIRECT_FAILED 0x800C0014L")
533 cpp_quote("#define INET_E_REDIRECT_TO_DIR 0x800C0015L")
534 cpp_quote("#define INET_E_CANNOT_LOCK_REQUEST 0x800C0016L")
535 cpp_quote("#define INET_E_ERROR_LAST INET_E_REDIRECT_TO_DIR")
537 cpp_quote("HRESULT WINAPI CreateURLMoniker(IMoniker *pmkContext, LPCWSTR szURL, IMoniker **ppmk);")
538 cpp_quote("HRESULT WINAPI RegisterBindStatusCallback(IBindCtx *pbc, IBindStatusCallback *pbsc, IBindStatusCallback **ppbsc, DWORD dwReserved);")
539 cpp_quote("HRESULT WINAPI CompareSecurityIds(BYTE*,DWORD,BYTE*,DWORD,DWORD);")
540 cpp_quote("HRESULT WINAPI URLDownloadToFileA(LPUNKNOWN pCaller, LPCSTR szURL, LPCSTR szFileName, DWORD dwReserved, LPBINDSTATUSCALLBACK lpfnCB);")
541 cpp_quote("HRESULT WINAPI URLDownloadToFileW(LPUNKNOWN pCaller, LPCWSTR szURL, LPCWSTR szFileName, DWORD dwReserved, LPBINDSTATUSCALLBACK lpfnCB);")