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
274 uuid(fc4801a1-2ba9-11cf-a229-00aa003d7352),
275 pointer_default(unique)
277 interface IBindHost : IUnknown
279 typedef [unique] IBindHost *LPBINDHOST;
281 HRESULT CreateMoniker(
282 [in] LPOLESTR szName,
284 [out] IMoniker** ppmk,
285 [in] DWORD dwReserved);
288 HRESULT MonikerBindToStorage(
291 [in] IBindStatusCallback *pBSC,
293 [out] void **ppvObj);
295 [call_as(MonikerBindToStorage)]
296 HRESULT RemoteMonikerBindToStorage(
297 [in, unique] IMoniker *pMk,
298 [in, unique] IBindCtx *pBC,
299 [in, unique] IBindStatusCallback *pBSC,
301 [out, iid_is(riid)] IUnknown **ppvObj);
304 HRESULT MonikerBindToObject(
307 [in] IBindStatusCallback *pBSC,
309 [out] void **ppvObj);
311 [call_as(MonikerBindToObject)]
312 HRESULT RemoteMonikerBindToObject(
313 [in, unique] IMoniker *pMk,
314 [in, unique] IBindCtx *pBC,
315 [in, unique] IBindStatusCallback *pBSC,
317 [out, iid_is(riid)] IUnknown **ppvObj);
321 /*****************************************************************************
322 * IWinInetInfo interface
326 uuid(79eac9d6-bafa-11ce-8c82-00aa004ba90b),
327 pointer_default(unique)
329 interface IWinInetInfo : IUnknown
331 typedef [unique] IWinInetInfo *LPWININETINFO;
336 [in, out, size_is(*pcbBuf)] LPVOID pBuffer,
337 [in, out] DWORD *pcbBuf);
339 [call_as(QueryOption)]
340 HRESULT RemoteQueryOption(
342 [in, out, size_is(*pcbBuf)] BYTE *pBuffer,
343 [in, out] DWORD *pcbBuf);
348 /*****************************************************************************
349 * IWinInetHttpInfo interface
353 uuid(79eac9d8-bafa-11ce-8c82-00aa004ba90b),
354 pointer_default(unique)
356 interface IWinInetHttpInfo : IWinInetInfo
358 typedef [unique] IWinInetHttpInfo *LPWININETHTTPINFO;
363 [in, out,size_is(*pcbBuf)] LPVOID pBuffer,
364 [in, out] DWORD *pcbBuf,
365 [in, out] DWORD *pdwFlags,
366 [in, out] DWORD *pdwReserved);
369 HRESULT RemoteQueryInfo(
371 [in,out,size_is(*pcbBuf)] BYTE *pBuffer,
372 [in, out] DWORD *pcbBuf,
373 [in, out] DWORD *pdwFlags,
374 [in, out] DWORD *pdwReserved);
379 /*****************************************************************************
380 * IPersistMoniker interface
384 uuid(79eac9c9-baf9-11ce-8c82-00aa004ba90b),
385 pointer_default(unique)
387 interface IPersistMoniker : IUnknown
389 typedef [unique] IPersistMoniker *LPPERSISTMONIKER;
392 [out] CLSID *pClassID);
397 [in] BOOL fFullyAvailable,
398 [in] IMoniker *pimkName,
403 [in] IMoniker *pimkName,
405 [in] BOOL fRemember);
407 HRESULT SaveCompleted(
408 [in] IMoniker *pimkName,
411 HRESULT GetCurMoniker(
412 [out] IMoniker **ppimkName);
416 /*****************************************************************************
417 * IInternetProtocolInfo interface
422 uuid(79eac9ec-baf9-11ce-8c82-00aa004ba90b),
423 pointer_default(unique)
425 interface IInternetProtocolInfo : IUnknown
427 typedef [unique] IInternetProtocolInfo *LPIINTERNETPROTOCOLINFO;
429 typedef enum _tagPARSEACTION
431 PARSE_CANONICALIZE = 1,
447 PARSE_SECURITY_DOMAIN,
452 typedef enum _tagPSUACTION
455 PSU_SECURITY_URL_ONLY
458 typedef enum _tagQUERYOPTION
460 QUERY_EXPIRATION_DATE = 1,
461 QUERY_TIME_OF_LAST_CHANGE,
462 QUERY_CONTENT_ENCODING,
469 QUERY_IS_INSTALLEDENTRY,
470 QUERY_IS_CACHED_OR_MAPPED,
478 [in] PARSEACTION ParseAction,
479 [in] DWORD dwParseFlags,
480 [out] LPWSTR pwzResult,
481 [in] DWORD cchResult,
482 [out] DWORD *pcchResult,
483 [in] DWORD dwReserved);
486 [in] LPCWSTR pwzBaseUrl,
487 [in] LPCWSTR pwzRelativeUrl,
488 [in] DWORD dwCombineFlags,
489 [out] LPWSTR pwzResult,
490 [in] DWORD cchResult,
491 [out] DWORD *pcchResult,
492 [in] DWORD dwReserved);
495 [in] LPCWSTR pwzUrl1,
496 [in] LPCWSTR pwzUrl2,
497 [in] DWORD dwCompareFlags);
501 [in] QUERYOPTION OueryOption,
502 [in] DWORD dwQueryFlags,
503 [in, out,size_is(*pcbBuf)] LPVOID pBuffer,
505 [in, out] DWORD *pcbBuf,
506 [in] DWORD dwReserved);
510 cpp_quote("#define MK_S_ASYNCHRONOUS 0x000401E8")
511 cpp_quote("#define S_ASYNCHRONOUS MK_S_ASYNCHRONOUS")
513 cpp_quote("#define INET_E_ERROR_FIRST 0x800C0002L")
514 cpp_quote("#define INET_E_INVALID_URL 0x800C0002L")
515 cpp_quote("#define INET_E_NO_SESSION 0x800C0003L")
516 cpp_quote("#define INET_E_CANNOT_CONNECT 0x800C0004L")
517 cpp_quote("#define INET_E_RESOURCE_NOT_FOUND 0x800C0005L")
518 cpp_quote("#define INET_E_OBJECT_NOT_FOUND 0x800C0006L")
519 cpp_quote("#define INET_E_DATA_NOT_AVAILABLE 0x800C0007L")
520 cpp_quote("#define INET_E_DOWNLOAD_FAILURE 0x800C0008L")
521 cpp_quote("#define INET_E_AUTHENTICATION_REQUIRED 0x800C0009L")
522 cpp_quote("#define INET_E_NO_VALID_MEDIA 0x800C000AL")
523 cpp_quote("#define INET_E_CONNECTION_TIMEOUT 0x800C000BL")
524 cpp_quote("#define INET_E_INVALID_REQUEST 0x800C000CL")
525 cpp_quote("#define INET_E_UNKNOWN_PROTOCOL 0x800C000DL")
526 cpp_quote("#define INET_E_SECURITY_PROBLEM 0x800C000EL")
527 cpp_quote("#define INET_E_CANNOT_LOAD_DATA 0x800C000FL")
528 cpp_quote("#define INET_E_CANNOT_INSTANTIATE_OBJECT 0x800C0010L")
529 cpp_quote("#define INET_E_QUERYOPTION_UNKNOWN 0x800C0013L")
530 cpp_quote("#define INET_E_REDIRECT_FAILED 0x800C0014L")
531 cpp_quote("#define INET_E_REDIRECT_TO_DIR 0x800C0015L")
532 cpp_quote("#define INET_E_CANNOT_LOCK_REQUEST 0x800C0016L")
533 cpp_quote("#define INET_E_ERROR_LAST INET_E_REDIRECT_TO_DIR")
535 cpp_quote("HRESULT WINAPI CreateURLMoniker(IMoniker *pmkContext, LPCWSTR szURL, IMoniker **ppmk);")
536 cpp_quote("HRESULT WINAPI RegisterBindStatusCallback(IBindCtx *pbc, IBindStatusCallback *pbsc, IBindStatusCallback **ppbsc, DWORD dwReserved);")
537 cpp_quote("HRESULT WINAPI CompareSecurityIds(BYTE*,DWORD,BYTE*,DWORD,DWORD);")
538 cpp_quote("HRESULT WINAPI URLDownloadToFileA(LPUNKNOWN pCaller, LPCSTR szURL, LPCSTR szFileName, DWORD dwReserved, LPBINDSTATUSCALLBACK lpfnCB);")
539 cpp_quote("HRESULT WINAPI URLDownloadToFileW(LPUNKNOWN pCaller, LPCWSTR szURL, LPCWSTR szFileName, DWORD dwReserved, LPBINDSTATUSCALLBACK lpfnCB);")