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
22 import "servprov.idl";
23 /*import "msxml.idl";*/
26 /*****************************************************************************
31 uuid(79eac9c0-baf9-11ce-8c82-00aa004ba90b),
32 pointer_default(unique)
34 interface IBinding : IUnknown
36 typedef [unique] IBinding *LPBINDING;
46 [out] LONG * pnPriority);
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
69 uuid(79eac9c1-baf9-11ce-8c82-00aa004ba90b),
70 pointer_default(unique)
72 interface IBindStatusCallback : IUnknown
74 typedef [unique] IBindStatusCallback *LPBINDSTATUSCALLBACK;
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
105 typedef struct _tagBINDINFO
109 STGMEDIUM stgmedData;
115 DWORD dwOptionsFlags;
117 SECURITY_ATTRIBUTES securityAttributes;
123 typedef struct _REMSECURITY_ATTRIBUTES
126 DWORD lpSecurityDescriptor;
128 } REMSECURITY_ATTRIBUTES, *PREMSECURITY_ATTRIBUTES, *LPREMSECURITY_ATTRIBUTES;
130 typedef struct _tagRemBINDINFO
139 DWORD dwOptionsFlags;
141 REMSECURITY_ATTRIBUTES securityAttributes;
147 typedef struct tagRemFORMATETC
154 } RemFORMATETC, *LPREMFORMATETC;
158 BSCF_FIRSTDATANOTIFICATION = 0x01,
159 BSCF_INTERMEDIATEDATANOTIFICATION = 0x02,
160 BSCF_LASTDATANOTIFICATION = 0x04,
161 BSCF_DATAFULLYAVAILABLE = 0x08,
162 BSCF_AVAILABLEDATASIZEUNKNOWN = 0x10
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,
188 BINDSTATUS_VERFIEDMIMETYPEAVAILABLE,
189 BINDSTATUS_CLASSINSTALLLOCATION,
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
218 HRESULT OnStartBinding(
219 [in] DWORD dwReserved,
220 [in] IBinding * pib);
223 [out] LONG * pnPriority);
225 HRESULT OnLowResource(
226 [in] DWORD reserved);
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);
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);
250 HRESULT OnDataAvailable(
253 [in] FORMATETC* pformatetc,
254 [in] STGMEDIUM* pstgmed);
256 [call_as(OnDataAvailable)]
257 HRESULT RemoteOnDataAvailable(
260 [in] RemFORMATETC *pformatetc,
261 [in] RemSTGMEDIUM* pstgmed);
263 HRESULT OnObjectAvailable(
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")
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,
286 [out] IMoniker** ppmk,
287 [in] DWORD dwReserved);
290 HRESULT MonikerBindToStorage(
293 [in] IBindStatusCallback *pBSC,
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,
303 [out, iid_is(riid)] IUnknown **ppvObj);
306 HRESULT MonikerBindToObject(
309 [in] IBindStatusCallback *pBSC,
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,
319 [out, iid_is(riid)] IUnknown **ppvObj);
323 /*****************************************************************************
324 * IWinInetInfo interface
328 uuid(79eac9d6-bafa-11ce-8c82-00aa004ba90b),
329 pointer_default(unique)
331 interface IWinInetInfo : IUnknown
333 typedef [unique] IWinInetInfo *LPWININETINFO;
338 [in, out, size_is(*pcbBuf)] LPVOID pBuffer,
339 [in, out] DWORD *pcbBuf);
341 [call_as(QueryOption)]
342 HRESULT RemoteQueryOption(
344 [in, out, size_is(*pcbBuf)] BYTE *pBuffer,
345 [in, out] DWORD *pcbBuf);
350 /*****************************************************************************
351 * IWinInetHttpInfo interface
355 uuid(79eac9d8-bafa-11ce-8c82-00aa004ba90b),
356 pointer_default(unique)
358 interface IWinInetHttpInfo : IWinInetInfo
360 typedef [unique] IWinInetHttpInfo *LPWININETHTTPINFO;
365 [in, out,size_is(*pcbBuf)] LPVOID pBuffer,
366 [in, out] DWORD *pcbBuf,
367 [in, out] DWORD *pdwFlags,
368 [in, out] DWORD *pdwReserved);
371 HRESULT RemoteQueryInfo(
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
386 uuid(79eac9c9-baf9-11ce-8c82-00aa004ba90b),
387 pointer_default(unique)
389 interface IPersistMoniker : IUnknown
391 typedef [unique] IPersistMoniker *LPPERSISTMONIKER;
394 [out] CLSID *pClassID);
399 [in] BOOL fFullyAvailable,
400 [in] IMoniker *pimkName,
405 [in] IMoniker *pimkName,
407 [in] BOOL fRemember);
409 HRESULT SaveCompleted(
410 [in] IMoniker *pimkName,
413 HRESULT GetCurMoniker(
414 [out] IMoniker **ppimkName);
418 /*****************************************************************************
419 * IInternetProtocolInfo interface
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,
449 PARSE_SECURITY_DOMAIN,
454 typedef enum _tagPSUACTION
457 PSU_SECURITY_URL_ONLY
460 typedef enum _tagQUERYOPTION
462 QUERY_EXPIRATION_DATE = 1,
463 QUERY_TIME_OF_LAST_CHANGE,
464 QUERY_CONTENT_ENCODING,
471 QUERY_IS_INSTALLEDENTRY,
472 QUERY_IS_CACHED_OR_MAPPED,
480 [in] PARSEACTION ParseAction,
481 [in] DWORD dwParseFlags,
482 [out] LPWSTR pwzResult,
483 [in] DWORD cchResult,
484 [out] DWORD *pcchResult,
485 [in] DWORD dwReserved);
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);
497 [in] LPCWSTR pwzUrl1,
498 [in] LPCWSTR pwzUrl2,
499 [in] DWORD dwCompareFlags);
503 [in] QUERYOPTION OueryOption,
504 [in] DWORD dwQueryFlags,
505 [in, out,size_is(*pcbBuf)] LPVOID pBuffer,
507 [in, out] DWORD *pcbBuf,
508 [in] DWORD dwReserved);
511 /*****************************************************************************
512 * IInternetSession interface
517 uuid(79eac9e7-baf9-11ce-8c82-00aa004ba90b),
518 pointer_default(unique)
520 interface IInternetSession : IUnknown
522 typedef [unique] IInternetSession *LPIINTERNETSESSION;
524 typedef enum _tagOIBDG_FLAGS
526 OIBDG_APARTMENTTHREADED = 0x0100,
527 OIBDG_DATAONLY = 0x1000
530 HRESULT RegisterNameSpace(
531 [in] IClassFactory *pCF,
532 [in] REFCLSID rclsid,
533 [in] LPCWSTR pwzProtocol,
534 [in] ULONG cPatterns,
535 [in] const LPCWSTR *ppwzPatterns,
536 [in] DWORD dwReserved);
538 HRESULT UnregisterNameSpace(
539 [in] IClassFactory *pCF,
540 [in] LPCWSTR pszProtocol);
542 HRESULT RegisterMimeFilter(
543 [in] IClassFactory *pCF,
544 [in] REFCLSID rclsid,
545 [in] LPCWSTR pwzType);
547 HRESULT UnregisterMimeFilter(
548 [in] IClassFactory *pCF,
549 [in] LPCWSTR pwzType);
551 HRESULT CreateBinding(
554 [in] IUnknown *pUnkOuter,
555 [out, unique] IUnknown **ppUnk,
556 [out, unique] /*IInternetProtocol*/ void **ppOInetProt,
557 [in] DWORD dwOption);
559 HRESULT SetSessionOption(
562 [in] DWORD dwBufferLength,
563 [in] DWORD dwReserved);
566 cpp_quote("DEFINE_GUID(IID_IAsyncMoniker, 0x79EAC9D3, 0xBAF9, 0x11CE, 0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0x0B);")
567 cpp_quote("DEFINE_GUID(CLSID_StdURLMoniker, 0x79EAC9E0, 0xBAF9, 0x11CE, 0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0x0B);")
569 cpp_quote("#define MK_S_ASYNCHRONOUS 0x000401E8")
570 cpp_quote("#define S_ASYNCHRONOUS MK_S_ASYNCHRONOUS")
572 cpp_quote("#define INET_E_ERROR_FIRST 0x800C0002L")
573 cpp_quote("#define INET_E_INVALID_URL 0x800C0002L")
574 cpp_quote("#define INET_E_NO_SESSION 0x800C0003L")
575 cpp_quote("#define INET_E_CANNOT_CONNECT 0x800C0004L")
576 cpp_quote("#define INET_E_RESOURCE_NOT_FOUND 0x800C0005L")
577 cpp_quote("#define INET_E_OBJECT_NOT_FOUND 0x800C0006L")
578 cpp_quote("#define INET_E_DATA_NOT_AVAILABLE 0x800C0007L")
579 cpp_quote("#define INET_E_DOWNLOAD_FAILURE 0x800C0008L")
580 cpp_quote("#define INET_E_AUTHENTICATION_REQUIRED 0x800C0009L")
581 cpp_quote("#define INET_E_NO_VALID_MEDIA 0x800C000AL")
582 cpp_quote("#define INET_E_CONNECTION_TIMEOUT 0x800C000BL")
583 cpp_quote("#define INET_E_INVALID_REQUEST 0x800C000CL")
584 cpp_quote("#define INET_E_UNKNOWN_PROTOCOL 0x800C000DL")
585 cpp_quote("#define INET_E_SECURITY_PROBLEM 0x800C000EL")
586 cpp_quote("#define INET_E_CANNOT_LOAD_DATA 0x800C000FL")
587 cpp_quote("#define INET_E_CANNOT_INSTANTIATE_OBJECT 0x800C0010L")
588 cpp_quote("#define INET_E_QUERYOPTION_UNKNOWN 0x800C0013L")
589 cpp_quote("#define INET_E_REDIRECT_FAILED 0x800C0014L")
590 cpp_quote("#define INET_E_REDIRECT_TO_DIR 0x800C0015L")
591 cpp_quote("#define INET_E_CANNOT_LOCK_REQUEST 0x800C0016L")
592 cpp_quote("#define INET_E_ERROR_LAST INET_E_REDIRECT_TO_DIR")
594 cpp_quote("HRESULT WINAPI CreateURLMoniker(IMoniker *pmkContext, LPCWSTR szURL, IMoniker **ppmk);")
595 cpp_quote("HRESULT WINAPI RegisterBindStatusCallback(IBindCtx *pbc, IBindStatusCallback *pbsc, IBindStatusCallback **ppbsc, DWORD dwReserved);")
596 cpp_quote("HRESULT WINAPI CompareSecurityIds(BYTE*,DWORD,BYTE*,DWORD,DWORD);")
597 cpp_quote("HRESULT WINAPI URLDownloadToFileA(LPUNKNOWN pCaller, LPCSTR szURL, LPCSTR szFileName, DWORD dwReserved, LPBINDSTATUSCALLBACK lpfnCB);")
598 cpp_quote("HRESULT WINAPI URLDownloadToFileW(LPUNKNOWN pCaller, LPCWSTR szURL, LPCWSTR szFileName, DWORD dwReserved, LPBINDSTATUSCALLBACK lpfnCB);")
599 cpp_quote("HRESULT WINAPI CoInternetGetSession(DWORD,IInternetSession**,DWORD);")
600 cpp_quote("HRESULT WINAPI MkParseDisplayNameEx(IBindCtx*,LPCWSTR,ULONG*,IMoniker**);")
601 cpp_quote("HRESULT WINAPI IsAsyncMoniker(IMoniker* pmk);")
602 cpp_quote("HRESULT WINAPI CreateAsyncBindCtx(DWORD, IBindStatusCallback*, IEnumFORMATETC*, IBindCtx**);")
603 cpp_quote("HRESULT WINAPI CoInternetCombineUrl(LPCWSTR,LPCWSTR,DWORD,LPWSTR,DWORD,DWORD*,DWORD);")
604 cpp_quote("HRESULT WINAPI CoInternetCompareUrl(LPCWSTR,LPCWSTR,DWORD);");
606 cpp_quote("#define OInetCombineUrl CoInternetCombineUrl")
607 cpp_quote("#define OInetCompareUrl CoInternetCompareUrl")
608 cpp_quote("#define OInetGetSession CoInternetGetSession")
610 cpp_quote("#define MKSYS_URLMONIKER 6")