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);")