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);
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);")
542 cpp_quote("HRESULT WINAPI CoInternetGetSession(DWORD,/*IInternetSession*/void**,DWORD);")
543 cpp_quote("HRESULT WINAPI MkParseDisplayNameEx(IBindCtx*,LPCWSTR,ULONG*,IMoniker**);")
544 cpp_quote("HRESULT WINAPI IsAsyncMoniker(IMoniker* pmk);")
545 cpp_quote("HRESULT WINAPI CreateAsyncBindCtx(DWORD, IBindStatusCallback*, IEnumFORMATETC*, IBindCtx**);")