• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*** Autogenerated by WIDL 4.12.1 from include/urlmon.idl - Do not edit ***/
2 
3 #ifdef _WIN32
4 #ifndef __REQUIRED_RPCNDR_H_VERSION__
5 #define __REQUIRED_RPCNDR_H_VERSION__ 475
6 #endif
7 #include <rpc.h>
8 #include <rpcndr.h>
9 #endif
10 
11 #ifndef COM_NO_WINDOWS_H
12 #include <windows.h>
13 #include <ole2.h>
14 #endif
15 
16 #ifndef __urlmon_h__
17 #define __urlmon_h__
18 
19 /* Forward declarations */
20 
21 #ifndef __IPersistMoniker_FWD_DEFINED__
22 #define __IPersistMoniker_FWD_DEFINED__
23 typedef interface IPersistMoniker IPersistMoniker;
24 #ifdef __cplusplus
25 interface IPersistMoniker;
26 #endif /* __cplusplus */
27 #endif
28 
29 #ifndef __IMonikerProp_FWD_DEFINED__
30 #define __IMonikerProp_FWD_DEFINED__
31 typedef interface IMonikerProp IMonikerProp;
32 #ifdef __cplusplus
33 interface IMonikerProp;
34 #endif /* __cplusplus */
35 #endif
36 
37 #ifndef __IBindProtocol_FWD_DEFINED__
38 #define __IBindProtocol_FWD_DEFINED__
39 typedef interface IBindProtocol IBindProtocol;
40 #ifdef __cplusplus
41 interface IBindProtocol;
42 #endif /* __cplusplus */
43 #endif
44 
45 #ifndef __IBinding_FWD_DEFINED__
46 #define __IBinding_FWD_DEFINED__
47 typedef interface IBinding IBinding;
48 #ifdef __cplusplus
49 interface IBinding;
50 #endif /* __cplusplus */
51 #endif
52 
53 #ifndef __IBindStatusCallback_FWD_DEFINED__
54 #define __IBindStatusCallback_FWD_DEFINED__
55 typedef interface IBindStatusCallback IBindStatusCallback;
56 #ifdef __cplusplus
57 interface IBindStatusCallback;
58 #endif /* __cplusplus */
59 #endif
60 
61 #ifndef __IBindStatusCallbackEx_FWD_DEFINED__
62 #define __IBindStatusCallbackEx_FWD_DEFINED__
63 typedef interface IBindStatusCallbackEx IBindStatusCallbackEx;
64 #ifdef __cplusplus
65 interface IBindStatusCallbackEx;
66 #endif /* __cplusplus */
67 #endif
68 
69 #ifndef __IAuthenticate_FWD_DEFINED__
70 #define __IAuthenticate_FWD_DEFINED__
71 typedef interface IAuthenticate IAuthenticate;
72 #ifdef __cplusplus
73 interface IAuthenticate;
74 #endif /* __cplusplus */
75 #endif
76 
77 #ifndef __IAuthenticateEx_FWD_DEFINED__
78 #define __IAuthenticateEx_FWD_DEFINED__
79 typedef interface IAuthenticateEx IAuthenticateEx;
80 #ifdef __cplusplus
81 interface IAuthenticateEx;
82 #endif /* __cplusplus */
83 #endif
84 
85 #ifndef __IHttpNegotiate_FWD_DEFINED__
86 #define __IHttpNegotiate_FWD_DEFINED__
87 typedef interface IHttpNegotiate IHttpNegotiate;
88 #ifdef __cplusplus
89 interface IHttpNegotiate;
90 #endif /* __cplusplus */
91 #endif
92 
93 #ifndef __IHttpNegotiate2_FWD_DEFINED__
94 #define __IHttpNegotiate2_FWD_DEFINED__
95 typedef interface IHttpNegotiate2 IHttpNegotiate2;
96 #ifdef __cplusplus
97 interface IHttpNegotiate2;
98 #endif /* __cplusplus */
99 #endif
100 
101 #ifndef __IHttpNegotiate3_FWD_DEFINED__
102 #define __IHttpNegotiate3_FWD_DEFINED__
103 typedef interface IHttpNegotiate3 IHttpNegotiate3;
104 #ifdef __cplusplus
105 interface IHttpNegotiate3;
106 #endif /* __cplusplus */
107 #endif
108 
109 #ifndef __IWinInetFileStream_FWD_DEFINED__
110 #define __IWinInetFileStream_FWD_DEFINED__
111 typedef interface IWinInetFileStream IWinInetFileStream;
112 #ifdef __cplusplus
113 interface IWinInetFileStream;
114 #endif /* __cplusplus */
115 #endif
116 
117 #ifndef __IWindowForBindingUI_FWD_DEFINED__
118 #define __IWindowForBindingUI_FWD_DEFINED__
119 typedef interface IWindowForBindingUI IWindowForBindingUI;
120 #ifdef __cplusplus
121 interface IWindowForBindingUI;
122 #endif /* __cplusplus */
123 #endif
124 
125 #ifndef __ICodeInstall_FWD_DEFINED__
126 #define __ICodeInstall_FWD_DEFINED__
127 typedef interface ICodeInstall ICodeInstall;
128 #ifdef __cplusplus
129 interface ICodeInstall;
130 #endif /* __cplusplus */
131 #endif
132 
133 #ifndef __IUri_FWD_DEFINED__
134 #define __IUri_FWD_DEFINED__
135 typedef interface IUri IUri;
136 #ifdef __cplusplus
137 interface IUri;
138 #endif /* __cplusplus */
139 #endif
140 
141 #ifndef __IUriContainer_FWD_DEFINED__
142 #define __IUriContainer_FWD_DEFINED__
143 typedef interface IUriContainer IUriContainer;
144 #ifdef __cplusplus
145 interface IUriContainer;
146 #endif /* __cplusplus */
147 #endif
148 
149 #ifndef __IUriBuilder_FWD_DEFINED__
150 #define __IUriBuilder_FWD_DEFINED__
151 typedef interface IUriBuilder IUriBuilder;
152 #ifdef __cplusplus
153 interface IUriBuilder;
154 #endif /* __cplusplus */
155 #endif
156 
157 #ifndef __IUriBuilderFactory_FWD_DEFINED__
158 #define __IUriBuilderFactory_FWD_DEFINED__
159 typedef interface IUriBuilderFactory IUriBuilderFactory;
160 #ifdef __cplusplus
161 interface IUriBuilderFactory;
162 #endif /* __cplusplus */
163 #endif
164 
165 #ifndef __IWinInetInfo_FWD_DEFINED__
166 #define __IWinInetInfo_FWD_DEFINED__
167 typedef interface IWinInetInfo IWinInetInfo;
168 #ifdef __cplusplus
169 interface IWinInetInfo;
170 #endif /* __cplusplus */
171 #endif
172 
173 #ifndef __IHttpSecurity_FWD_DEFINED__
174 #define __IHttpSecurity_FWD_DEFINED__
175 typedef interface IHttpSecurity IHttpSecurity;
176 #ifdef __cplusplus
177 interface IHttpSecurity;
178 #endif /* __cplusplus */
179 #endif
180 
181 #ifndef __IWinInetHttpInfo_FWD_DEFINED__
182 #define __IWinInetHttpInfo_FWD_DEFINED__
183 typedef interface IWinInetHttpInfo IWinInetHttpInfo;
184 #ifdef __cplusplus
185 interface IWinInetHttpInfo;
186 #endif /* __cplusplus */
187 #endif
188 
189 #ifndef __IWinInetHttpTimeouts_FWD_DEFINED__
190 #define __IWinInetHttpTimeouts_FWD_DEFINED__
191 typedef interface IWinInetHttpTimeouts IWinInetHttpTimeouts;
192 #ifdef __cplusplus
193 interface IWinInetHttpTimeouts;
194 #endif /* __cplusplus */
195 #endif
196 
197 #ifndef __IWinInetCacheHints_FWD_DEFINED__
198 #define __IWinInetCacheHints_FWD_DEFINED__
199 typedef interface IWinInetCacheHints IWinInetCacheHints;
200 #ifdef __cplusplus
201 interface IWinInetCacheHints;
202 #endif /* __cplusplus */
203 #endif
204 
205 #ifndef __IWinInetCacheHints2_FWD_DEFINED__
206 #define __IWinInetCacheHints2_FWD_DEFINED__
207 typedef interface IWinInetCacheHints2 IWinInetCacheHints2;
208 #ifdef __cplusplus
209 interface IWinInetCacheHints2;
210 #endif /* __cplusplus */
211 #endif
212 
213 #ifndef __IBindHost_FWD_DEFINED__
214 #define __IBindHost_FWD_DEFINED__
215 typedef interface IBindHost IBindHost;
216 #ifdef __cplusplus
217 interface IBindHost;
218 #endif /* __cplusplus */
219 #endif
220 
221 #ifndef __IInternet_FWD_DEFINED__
222 #define __IInternet_FWD_DEFINED__
223 typedef interface IInternet IInternet;
224 #ifdef __cplusplus
225 interface IInternet;
226 #endif /* __cplusplus */
227 #endif
228 
229 #ifndef __IInternetBindInfo_FWD_DEFINED__
230 #define __IInternetBindInfo_FWD_DEFINED__
231 typedef interface IInternetBindInfo IInternetBindInfo;
232 #ifdef __cplusplus
233 interface IInternetBindInfo;
234 #endif /* __cplusplus */
235 #endif
236 
237 #ifndef __IInternetBindInfoEx_FWD_DEFINED__
238 #define __IInternetBindInfoEx_FWD_DEFINED__
239 typedef interface IInternetBindInfoEx IInternetBindInfoEx;
240 #ifdef __cplusplus
241 interface IInternetBindInfoEx;
242 #endif /* __cplusplus */
243 #endif
244 
245 #ifndef __IInternetProtocolRoot_FWD_DEFINED__
246 #define __IInternetProtocolRoot_FWD_DEFINED__
247 typedef interface IInternetProtocolRoot IInternetProtocolRoot;
248 #ifdef __cplusplus
249 interface IInternetProtocolRoot;
250 #endif /* __cplusplus */
251 #endif
252 
253 #ifndef __IInternetProtocol_FWD_DEFINED__
254 #define __IInternetProtocol_FWD_DEFINED__
255 typedef interface IInternetProtocol IInternetProtocol;
256 #ifdef __cplusplus
257 interface IInternetProtocol;
258 #endif /* __cplusplus */
259 #endif
260 
261 #ifndef __IInternetProtocolEx_FWD_DEFINED__
262 #define __IInternetProtocolEx_FWD_DEFINED__
263 typedef interface IInternetProtocolEx IInternetProtocolEx;
264 #ifdef __cplusplus
265 interface IInternetProtocolEx;
266 #endif /* __cplusplus */
267 #endif
268 
269 #ifndef __IInternetProtocolSink_FWD_DEFINED__
270 #define __IInternetProtocolSink_FWD_DEFINED__
271 typedef interface IInternetProtocolSink IInternetProtocolSink;
272 #ifdef __cplusplus
273 interface IInternetProtocolSink;
274 #endif /* __cplusplus */
275 #endif
276 
277 #ifndef __IInternetProtocolSinkStackable_FWD_DEFINED__
278 #define __IInternetProtocolSinkStackable_FWD_DEFINED__
279 typedef interface IInternetProtocolSinkStackable IInternetProtocolSinkStackable;
280 #ifdef __cplusplus
281 interface IInternetProtocolSinkStackable;
282 #endif /* __cplusplus */
283 #endif
284 
285 #ifndef __IInternetSession_FWD_DEFINED__
286 #define __IInternetSession_FWD_DEFINED__
287 typedef interface IInternetSession IInternetSession;
288 #ifdef __cplusplus
289 interface IInternetSession;
290 #endif /* __cplusplus */
291 #endif
292 
293 #ifndef __IInternetThreadSwitch_FWD_DEFINED__
294 #define __IInternetThreadSwitch_FWD_DEFINED__
295 typedef interface IInternetThreadSwitch IInternetThreadSwitch;
296 #ifdef __cplusplus
297 interface IInternetThreadSwitch;
298 #endif /* __cplusplus */
299 #endif
300 
301 #ifndef __IInternetPriority_FWD_DEFINED__
302 #define __IInternetPriority_FWD_DEFINED__
303 typedef interface IInternetPriority IInternetPriority;
304 #ifdef __cplusplus
305 interface IInternetPriority;
306 #endif /* __cplusplus */
307 #endif
308 
309 #ifndef __IInternetProtocolInfo_FWD_DEFINED__
310 #define __IInternetProtocolInfo_FWD_DEFINED__
311 typedef interface IInternetProtocolInfo IInternetProtocolInfo;
312 #ifdef __cplusplus
313 interface IInternetProtocolInfo;
314 #endif /* __cplusplus */
315 #endif
316 
317 #ifndef __IInternetSecurityMgrSite_FWD_DEFINED__
318 #define __IInternetSecurityMgrSite_FWD_DEFINED__
319 typedef interface IInternetSecurityMgrSite IInternetSecurityMgrSite;
320 #ifdef __cplusplus
321 interface IInternetSecurityMgrSite;
322 #endif /* __cplusplus */
323 #endif
324 
325 #ifndef __IInternetSecurityManager_FWD_DEFINED__
326 #define __IInternetSecurityManager_FWD_DEFINED__
327 typedef interface IInternetSecurityManager IInternetSecurityManager;
328 #ifdef __cplusplus
329 interface IInternetSecurityManager;
330 #endif /* __cplusplus */
331 #endif
332 
333 #ifndef __IInternetSecurityManagerEx_FWD_DEFINED__
334 #define __IInternetSecurityManagerEx_FWD_DEFINED__
335 typedef interface IInternetSecurityManagerEx IInternetSecurityManagerEx;
336 #ifdef __cplusplus
337 interface IInternetSecurityManagerEx;
338 #endif /* __cplusplus */
339 #endif
340 
341 #ifndef __IInternetSecurityManagerEx2_FWD_DEFINED__
342 #define __IInternetSecurityManagerEx2_FWD_DEFINED__
343 typedef interface IInternetSecurityManagerEx2 IInternetSecurityManagerEx2;
344 #ifdef __cplusplus
345 interface IInternetSecurityManagerEx2;
346 #endif /* __cplusplus */
347 #endif
348 
349 #ifndef __IZoneIdentifier_FWD_DEFINED__
350 #define __IZoneIdentifier_FWD_DEFINED__
351 typedef interface IZoneIdentifier IZoneIdentifier;
352 #ifdef __cplusplus
353 interface IZoneIdentifier;
354 #endif /* __cplusplus */
355 #endif
356 
357 #ifndef __IInternetHostSecurityManager_FWD_DEFINED__
358 #define __IInternetHostSecurityManager_FWD_DEFINED__
359 typedef interface IInternetHostSecurityManager IInternetHostSecurityManager;
360 #ifdef __cplusplus
361 interface IInternetHostSecurityManager;
362 #endif /* __cplusplus */
363 #endif
364 
365 #ifndef __IInternetZoneManager_FWD_DEFINED__
366 #define __IInternetZoneManager_FWD_DEFINED__
367 typedef interface IInternetZoneManager IInternetZoneManager;
368 #ifdef __cplusplus
369 interface IInternetZoneManager;
370 #endif /* __cplusplus */
371 #endif
372 
373 #ifndef __IInternetZoneManagerEx_FWD_DEFINED__
374 #define __IInternetZoneManagerEx_FWD_DEFINED__
375 typedef interface IInternetZoneManagerEx IInternetZoneManagerEx;
376 #ifdef __cplusplus
377 interface IInternetZoneManagerEx;
378 #endif /* __cplusplus */
379 #endif
380 
381 #ifndef __IInternetZoneManagerEx2_FWD_DEFINED__
382 #define __IInternetZoneManagerEx2_FWD_DEFINED__
383 typedef interface IInternetZoneManagerEx2 IInternetZoneManagerEx2;
384 #ifdef __cplusplus
385 interface IInternetZoneManagerEx2;
386 #endif /* __cplusplus */
387 #endif
388 
389 #ifndef __ISoftDistExt_FWD_DEFINED__
390 #define __ISoftDistExt_FWD_DEFINED__
391 typedef interface ISoftDistExt ISoftDistExt;
392 #ifdef __cplusplus
393 interface ISoftDistExt;
394 #endif /* __cplusplus */
395 #endif
396 
397 #ifndef __ICatalogFileInfo_FWD_DEFINED__
398 #define __ICatalogFileInfo_FWD_DEFINED__
399 typedef interface ICatalogFileInfo ICatalogFileInfo;
400 #ifdef __cplusplus
401 interface ICatalogFileInfo;
402 #endif /* __cplusplus */
403 #endif
404 
405 #ifndef __IDataFilter_FWD_DEFINED__
406 #define __IDataFilter_FWD_DEFINED__
407 typedef interface IDataFilter IDataFilter;
408 #ifdef __cplusplus
409 interface IDataFilter;
410 #endif /* __cplusplus */
411 #endif
412 
413 #ifndef __IEncodingFilterFactory_FWD_DEFINED__
414 #define __IEncodingFilterFactory_FWD_DEFINED__
415 typedef interface IEncodingFilterFactory IEncodingFilterFactory;
416 #ifdef __cplusplus
417 interface IEncodingFilterFactory;
418 #endif /* __cplusplus */
419 #endif
420 
421 #ifndef __IWrappedProtocol_FWD_DEFINED__
422 #define __IWrappedProtocol_FWD_DEFINED__
423 typedef interface IWrappedProtocol IWrappedProtocol;
424 #ifdef __cplusplus
425 interface IWrappedProtocol;
426 #endif /* __cplusplus */
427 #endif
428 
429 #ifndef __IGetBindHandle_FWD_DEFINED__
430 #define __IGetBindHandle_FWD_DEFINED__
431 typedef interface IGetBindHandle IGetBindHandle;
432 #ifdef __cplusplus
433 interface IGetBindHandle;
434 #endif /* __cplusplus */
435 #endif
436 
437 #ifndef __IBindCallbackRedirect_FWD_DEFINED__
438 #define __IBindCallbackRedirect_FWD_DEFINED__
439 typedef interface IBindCallbackRedirect IBindCallbackRedirect;
440 #ifdef __cplusplus
441 interface IBindCallbackRedirect;
442 #endif /* __cplusplus */
443 #endif
444 
445 /* Headers for imported files */
446 
447 #include <objidl.h>
448 #include <oleidl.h>
449 #include <servprov.h>
450 #include <msxml.h>
451 
452 #ifdef __cplusplus
453 extern "C" {
454 #endif
455 
456 /**
457  * This file is part of the mingw-w64 runtime package.
458  * No warranty is given; refer to the file DISCLAIMER within this package.
459  */
460 
461 #include <winapifamily.h>
462 
463 #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
464 
465 
466 #ifndef __IPersistMoniker_FWD_DEFINED__
467 #define __IPersistMoniker_FWD_DEFINED__
468 typedef interface IPersistMoniker IPersistMoniker;
469 #ifdef __cplusplus
470 interface IPersistMoniker;
471 #endif /* __cplusplus */
472 #endif
473 
474 #ifndef __IBindProtocol_FWD_DEFINED__
475 #define __IBindProtocol_FWD_DEFINED__
476 typedef interface IBindProtocol IBindProtocol;
477 #ifdef __cplusplus
478 interface IBindProtocol;
479 #endif /* __cplusplus */
480 #endif
481 
482 #ifndef __IBinding_FWD_DEFINED__
483 #define __IBinding_FWD_DEFINED__
484 typedef interface IBinding IBinding;
485 #ifdef __cplusplus
486 interface IBinding;
487 #endif /* __cplusplus */
488 #endif
489 
490 #ifndef __IBindStatusCallback_FWD_DEFINED__
491 #define __IBindStatusCallback_FWD_DEFINED__
492 typedef interface IBindStatusCallback IBindStatusCallback;
493 #ifdef __cplusplus
494 interface IBindStatusCallback;
495 #endif /* __cplusplus */
496 #endif
497 
498 #ifndef __IBindStatusCallbackEx_FWD_DEFINED__
499 #define __IBindStatusCallbackEx_FWD_DEFINED__
500 typedef interface IBindStatusCallbackEx IBindStatusCallbackEx;
501 #ifdef __cplusplus
502 interface IBindStatusCallbackEx;
503 #endif /* __cplusplus */
504 #endif
505 
506 #ifndef __IBindStatusCallbackMsg_FWD_DEFINED__
507 #define __IBindStatusCallbackMsg_FWD_DEFINED__
508 typedef interface IBindStatusCallbackMsg IBindStatusCallbackMsg;
509 #ifdef __cplusplus
510 interface IBindStatusCallbackMsg;
511 #endif /* __cplusplus */
512 #endif
513 
514 #ifndef __IAuthenticate_FWD_DEFINED__
515 #define __IAuthenticate_FWD_DEFINED__
516 typedef interface IAuthenticate IAuthenticate;
517 #ifdef __cplusplus
518 interface IAuthenticate;
519 #endif /* __cplusplus */
520 #endif
521 
522 #ifndef __IAuthenticateEx_FWD_DEFINED__
523 #define __IAuthenticateEx_FWD_DEFINED__
524 typedef interface IAuthenticateEx IAuthenticateEx;
525 #ifdef __cplusplus
526 interface IAuthenticateEx;
527 #endif /* __cplusplus */
528 #endif
529 
530 #ifndef __IWindowForBindingUI_FWD_DEFINED__
531 #define __IWindowForBindingUI_FWD_DEFINED__
532 typedef interface IWindowForBindingUI IWindowForBindingUI;
533 #ifdef __cplusplus
534 interface IWindowForBindingUI;
535 #endif /* __cplusplus */
536 #endif
537 
538 #ifndef __ICodeInstall_FWD_DEFINED__
539 #define __ICodeInstall_FWD_DEFINED__
540 typedef interface ICodeInstall ICodeInstall;
541 #ifdef __cplusplus
542 interface ICodeInstall;
543 #endif /* __cplusplus */
544 #endif
545 
546 #ifndef __IHttpNegotiate_FWD_DEFINED__
547 #define __IHttpNegotiate_FWD_DEFINED__
548 typedef interface IHttpNegotiate IHttpNegotiate;
549 #ifdef __cplusplus
550 interface IHttpNegotiate;
551 #endif /* __cplusplus */
552 #endif
553 
554 #ifndef __IHttpNegotiate2_FWD_DEFINED__
555 #define __IHttpNegotiate2_FWD_DEFINED__
556 typedef interface IHttpNegotiate2 IHttpNegotiate2;
557 #ifdef __cplusplus
558 interface IHttpNegotiate2;
559 #endif /* __cplusplus */
560 #endif
561 
562 #ifndef __IHttpNegotiate3_FWD_DEFINED__
563 #define __IHttpNegotiate3_FWD_DEFINED__
564 typedef interface IHttpNegotiate3 IHttpNegotiate3;
565 #ifdef __cplusplus
566 interface IHttpNegotiate3;
567 #endif /* __cplusplus */
568 #endif
569 
570 #ifndef __IWinInetFileStream_FWD_DEFINED__
571 #define __IWinInetFileStream_FWD_DEFINED__
572 typedef interface IWinInetFileStream IWinInetFileStream;
573 #ifdef __cplusplus
574 interface IWinInetFileStream;
575 #endif /* __cplusplus */
576 #endif
577 
578 #ifndef __IXMLElement_FWD_DEFINED__
579 #define __IXMLElement_FWD_DEFINED__
580 typedef interface IXMLElement IXMLElement;
581 #ifdef __cplusplus
582 interface IXMLElement;
583 #endif /* __cplusplus */
584 #endif
585 
586 
587 EXTERN_C const IID CLSID_SBS_StdURLMoniker;
588 EXTERN_C const IID CLSID_SBS_HttpProtocol;
589 EXTERN_C const IID CLSID_SBS_FtpProtocol;
590 EXTERN_C const IID CLSID_SBS_GopherProtocol;
591 EXTERN_C const IID CLSID_SBS_HttpSProtocol;
592 EXTERN_C const IID CLSID_SBS_FileProtocol;
593 EXTERN_C const IID CLSID_SBS_MkProtocol;
594 EXTERN_C const IID CLSID_SBS_UrlMkBindCtx;
595 EXTERN_C const IID CLSID_SBS_SoftDistExt;
596 EXTERN_C const IID CLSID_SBS_CdlProtocol;
597 EXTERN_C const IID CLSID_SBS_ClassInstallFilter;
598 EXTERN_C const IID CLSID_SBS_InternetSecurityManager;
599 EXTERN_C const IID CLSID_SBS_InternetZoneManager;
600 
601 #define BINDF_DONTUSECACHE BINDF_GETNEWESTVERSION
602 #define BINDF_DONTPUTINCACHE BINDF_NOWRITECACHE
603 #define BINDF_NOCOPYDATA BINDF_PULLDATA
604 #define INVALID_P_ROOT_SECURITY_ID ((BYTE*)-1)
605 
606 #define PI_DOCFILECLSIDLOOKUP PI_CLSIDLOOKUP
607 
608 EXTERN_C const IID IID_IAsyncMoniker;
609 EXTERN_C const IID CLSID_StdURLMoniker;
610 EXTERN_C const IID CLSID_HttpProtocol;
611 EXTERN_C const IID CLSID_FtpProtocol;
612 EXTERN_C const IID CLSID_GopherProtocol;
613 EXTERN_C const IID CLSID_HttpSProtocol;
614 EXTERN_C const IID CLSID_FileProtocol;
615 EXTERN_C const IID CLSID_MkProtocol;
616 EXTERN_C const IID CLSID_StdURLProtocol;
617 EXTERN_C const IID CLSID_UrlMkBindCtx;
618 EXTERN_C const IID CLSID_CdlProtocol;
619 EXTERN_C const IID CLSID_ClassInstallFilter;
620 EXTERN_C const IID IID_IAsyncBindCtx;
621 
622 #define SZ_URLCONTEXT           OLESTR("URL Context")
623 #define SZ_ASYNC_CALLEE         OLESTR("AsyncCallee")
624 
625 #define MKSYS_URLMONIKER         6
626 #define URL_MK_LEGACY            0
627 #define URL_MK_UNIFORM           1
628 #define URL_MK_NO_CANONICALIZE   2
629 
630 STDAPI CreateURLMoniker(LPMONIKER pMkCtx, LPCWSTR szURL, LPMONIKER *ppmk);
631 STDAPI CreateURLMonikerEx(LPMONIKER pMkCtx, LPCWSTR szURL, LPMONIKER *ppmk, DWORD dwFlags);
632 STDAPI GetClassURL(LPCWSTR szURL, CLSID *pClsID);
633 STDAPI CreateAsyncBindCtx(DWORD reserved, IBindStatusCallback *pBSCb, IEnumFORMATETC *pEFetc, IBindCtx **ppBC);
634 #if (_WIN32_IE >= _WIN32_IE_IE70)
635 STDAPI CreateURLMonikerEx2(LPMONIKER pMkCtx, IUri *pUri, LPMONIKER *ppmk, DWORD dwFlags);
636 #endif
637 STDAPI CreateAsyncBindCtxEx(IBindCtx *pbc, DWORD dwOptions, IBindStatusCallback *pBSCb, IEnumFORMATETC *pEnum, IBindCtx **ppBC, DWORD reserved);
638 STDAPI MkParseDisplayNameEx(IBindCtx *pbc, LPCWSTR szDisplayName, ULONG *pchEaten, LPMONIKER *ppmk);
639 STDAPI RegisterBindStatusCallback(LPBC pBC, IBindStatusCallback *pBSCb, IBindStatusCallback **ppBSCBPrev, DWORD dwReserved);
640 STDAPI RevokeBindStatusCallback(LPBC pBC, IBindStatusCallback *pBSCb);
641 STDAPI GetClassFileOrMime(LPBC pBC, LPCWSTR szFilename, LPVOID pBuffer, DWORD cbSize, LPCWSTR szMime, DWORD dwReserved, CLSID *pclsid);
642 STDAPI IsValidURL(LPBC pBC, LPCWSTR szURL, DWORD dwReserved);
643 STDAPI CoGetClassObjectFromURL(REFCLSID rCLASSID, LPCWSTR szCODE, DWORD dwFileVersionMS, DWORD dwFileVersionLS, LPCWSTR szTYPE, LPBINDCTX pBindCtx, DWORD dwClsContext, LPVOID pvReserved, REFIID riid, LPVOID *ppv);
644 STDAPI IEInstallScope(LPDWORD pdwScope);
645 STDAPI FaultInIEFeature(HWND hWnd, uCLSSPEC *pClassSpec, QUERYCONTEXT *pQuery, DWORD dwFlags);
646 STDAPI GetComponentIDFromCLSSPEC(uCLSSPEC *pClassspec, LPSTR *ppszComponentID);
647 
648 #define FIEF_FLAG_FORCE_JITUI 0x1
649 #define FIEF_FLAG_PEEK 0x2
650 #define FIEF_FLAG_SKIP_INSTALLED_VERSION_CHECK 0x4
651 
652 STDAPI IsAsyncMoniker(IMoniker *pmk);
653 STDAPI CreateURLBinding(LPCWSTR lpszUrl, IBindCtx *pbc, IBinding **ppBdg);
654 STDAPI RegisterMediaTypes(UINT ctypes, const LPCSTR *rgszTypes, CLIPFORMAT *rgcfTypes);
655 STDAPI FindMediaType(LPCSTR rgszTypes, CLIPFORMAT *rgcfTypes);
656 STDAPI CreateFormatEnumerator(UINT cfmtetc, FORMATETC *rgfmtetc, IEnumFORMATETC **ppenumfmtetc);
657 STDAPI RegisterFormatEnumerator(LPBC pBC, IEnumFORMATETC *pEFetc, DWORD reserved);
658 STDAPI RevokeFormatEnumerator(LPBC pBC, IEnumFORMATETC *pEFetc);
659 STDAPI RegisterMediaTypeClass(LPBC pBC,UINT ctypes, const LPCSTR *rgszTypes, CLSID *rgclsID, DWORD reserved);
660 STDAPI FindMediaTypeClass(LPBC pBC, LPCSTR szType, CLSID *pclsID, DWORD reserved);
661 STDAPI UrlMkSetSessionOption(DWORD dwOption, LPVOID pBuffer, DWORD dwBufferLength, DWORD dwReserved);
662 STDAPI UrlMkGetSessionOption(DWORD dwOption, LPVOID pBuffer, DWORD dwBufferLength, DWORD *pdwBufferLengthOut, DWORD dwReserved);
663 STDAPI FindMimeFromData(LPBC pBC, LPCWSTR pwzUrl, LPVOID pBuffer, DWORD cbSize, LPCWSTR pwzMimeProposed, DWORD dwMimeFlags, LPWSTR *ppwzMimeOut, DWORD dwReserved);
664 
665 #define FMFD_DEFAULT 0x0
666 #define FMFD_URLASFILENAME 0x1
667 #if (_WIN32_IE >= _WIN32_IE_IE60SP2)
668 #define FMFD_ENABLEMIMESNIFFING 0x2
669 #define FMFD_IGNOREMIMETEXTPLAIN 0x4
670 #endif
671 
672 #define FMFD_SERVERMIME 0x8
673 #define FMFD_RESPECTTEXTPLAIN 0x10
674 #define FMFD_RETURNUPDATEDIMGMIMES 0x20
675 #define UAS_EXACTLEGACY 0x1000
676 
677 STDAPI ObtainUserAgentString(DWORD dwOption, LPSTR pszUAOut, DWORD *cbSize);
678 STDAPI CompareSecurityIds(BYTE *pbSecurityId1, DWORD dwLen1, BYTE *pbSecurityId2, DWORD dwLen2, DWORD dwReserved);
679 STDAPI CompatFlagsFromClsid(CLSID *pclsid, LPDWORD pdwCompatFlags, LPDWORD pdwMiscStatusFlags);
680 
681 #define URLMON_OPTION_USERAGENT 0x10000001
682 #define URLMON_OPTION_USERAGENT_REFRESH 0x10000002
683 #define URLMON_OPTION_URL_ENCODING 0x10000004
684 #if (_WIN32_IE >= _WIN32_IE_IE60SP2)
685 #define URLMON_OPTION_USE_BINDSTRINGCREDS 0x10000008
686 #endif
687 #if (_WIN32_IE >= _WIN32_IE_IE70)
688 #define URLMON_OPTION_USE_BROWSERAPPSDOCUMENTS 0x10000010
689 #endif
690 #endif
691 
692 #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP)
693 #define CF_NULL                 0
694 #define CFSTR_MIME_NULL         NULL
695 
696 #define CFSTR_MIME_TEXT (TEXT("text/plain"))
697 #define CFSTR_MIME_RICHTEXT (TEXT("text/richtext"))
698 #define CFSTR_MIME_MANIFEST (TEXT("text/cache-manifest"))
699 #define CFSTR_MIME_WEBVTT (TEXT("text/vtt"))
700 #define CFSTR_MIME_X_BITMAP (TEXT("image/x-xbitmap"))
701 #define CFSTR_MIME_POSTSCRIPT (TEXT("application/postscript"))
702 #define CFSTR_MIME_AIFF (TEXT("audio/aiff"))
703 #define CFSTR_MIME_BASICAUDIO (TEXT("audio/basic"))
704 #define CFSTR_MIME_WAV (TEXT("audio/wav"))
705 #define CFSTR_MIME_X_WAV (TEXT("audio/x-wav"))
706 #define CFSTR_MIME_GIF (TEXT("image/gif"))
707 #define CFSTR_MIME_PJPEG (TEXT("image/pjpeg"))
708 #define CFSTR_MIME_JPEG (TEXT("image/jpeg"))
709 #define CFSTR_MIME_TIFF (TEXT("image/tiff"))
710 #define CFSTR_MIME_JPEG_XR (TEXT("image/vnd.ms-photo"))
711 #define CFSTR_MIME_PNG (TEXT("image/png"))
712 #define CFSTR_MIME_X_PNG (TEXT("image/x-png"))
713 #define CFSTR_MIME_X_ICON (TEXT("image/x-icon"))
714 #define CFSTR_MIME_SVG_XML (TEXT("image/svg+xml"))
715 #define CFSTR_MIME_BMP (TEXT("image/bmp"))
716 #define CFSTR_MIME_X_EMF (TEXT("image/x-emf"))
717 #define CFSTR_MIME_X_WMF (TEXT("image/x-wmf"))
718 #define CFSTR_MIME_AVI (TEXT("video/avi"))
719 #define CFSTR_MIME_MPEG (TEXT("video/mpeg"))
720 #define CFSTR_MIME_FRACTALS (TEXT("application/fractals"))
721 #define CFSTR_MIME_RAWDATA (TEXT("application/octet-stream"))
722 #define CFSTR_MIME_RAWDATASTRM (TEXT("application/octet-stream"))
723 #define CFSTR_MIME_PDF (TEXT("application/pdf"))
724 #define CFSTR_MIME_HTA (TEXT("application/hta"))
725 #define CFSTR_MIME_APP_XML (TEXT("application/xml"))
726 #define CFSTR_MIME_XHTML (TEXT("application/xhtml+xml"))
727 #define CFSTR_MIME_X_AIFF (TEXT("audio/x-aiff"))
728 #define CFSTR_MIME_X_REALAUDIO (TEXT("audio/x-pn-realaudio"))
729 #define CFSTR_MIME_XBM (TEXT("image/xbm"))
730 #define CFSTR_MIME_QUICKTIME (TEXT("video/quicktime"))
731 #define CFSTR_MIME_X_MSVIDEO (TEXT("video/x-msvideo"))
732 #define CFSTR_MIME_X_SGI_MOVIE (TEXT("video/x-sgi-movie"))
733 #define CFSTR_MIME_HTML (TEXT("text/html"))
734 #define CFSTR_MIME_XML (TEXT("text/xml"))
735 #define CFSTR_MIME_TTML (TEXT("application/ttml+xml"))
736 #define CFSTR_MIME_TTAF (TEXT("application/ttaf+xml"))
737 
738 #define MK_S_ASYNCHRONOUS    _HRESULT_TYPEDEF_(0x401E8L)
739 #ifndef S_ASYNCHRONOUS
740 #define S_ASYNCHRONOUS MK_S_ASYNCHRONOUS
741 #endif
742 
743 #ifndef E_PENDING
744 #define E_PENDING _HRESULT_TYPEDEF_(__MSABI_LONG(0x8000000a))
745 #endif
746 #define INET_E_INVALID_URL _HRESULT_TYPEDEF_(__MSABI_LONG(0x800C0002))
747 #define INET_E_NO_SESSION _HRESULT_TYPEDEF_(__MSABI_LONG(0x800C0003))
748 #define INET_E_CANNOT_CONNECT            _HRESULT_TYPEDEF_(__MSABI_LONG(0x800C0004))
749 #define INET_E_RESOURCE_NOT_FOUND        _HRESULT_TYPEDEF_(__MSABI_LONG(0x800C0005))
750 #define INET_E_OBJECT_NOT_FOUND          _HRESULT_TYPEDEF_(__MSABI_LONG(0x800C0006))
751 #define INET_E_DATA_NOT_AVAILABLE        _HRESULT_TYPEDEF_(__MSABI_LONG(0x800C0007))
752 #define INET_E_DOWNLOAD_FAILURE          _HRESULT_TYPEDEF_(__MSABI_LONG(0x800C0008))
753 #define INET_E_AUTHENTICATION_REQUIRED   _HRESULT_TYPEDEF_(__MSABI_LONG(0x800C0009))
754 #define INET_E_NO_VALID_MEDIA            _HRESULT_TYPEDEF_(__MSABI_LONG(0x800C000A))
755 #define INET_E_CONNECTION_TIMEOUT        _HRESULT_TYPEDEF_(__MSABI_LONG(0x800C000B))
756 #define INET_E_INVALID_REQUEST           _HRESULT_TYPEDEF_(__MSABI_LONG(0x800C000C))
757 #define INET_E_UNKNOWN_PROTOCOL          _HRESULT_TYPEDEF_(__MSABI_LONG(0x800C000D))
758 #define INET_E_SECURITY_PROBLEM          _HRESULT_TYPEDEF_(__MSABI_LONG(0x800C000E))
759 #define INET_E_CANNOT_LOAD_DATA          _HRESULT_TYPEDEF_(__MSABI_LONG(0x800C000F))
760 #define INET_E_CANNOT_INSTANTIATE_OBJECT _HRESULT_TYPEDEF_(__MSABI_LONG(0x800C0010))
761 #define INET_E_INVALID_CERTIFICATE       _HRESULT_TYPEDEF_(__MSABI_LONG(0x800C0019))
762 #define INET_E_REDIRECT_FAILED           _HRESULT_TYPEDEF_(__MSABI_LONG(0x800C0014))
763 #define INET_E_REDIRECT_TO_DIR           _HRESULT_TYPEDEF_(__MSABI_LONG(0x800C0015))
764 #define INET_E_CANNOT_LOCK_REQUEST                   _HRESULT_TYPEDEF_(__MSABI_LONG(0x800C0016))
765 #define INET_E_USE_EXTEND_BINDING                    _HRESULT_TYPEDEF_(__MSABI_LONG(0x800C0017))
766 #define INET_E_TERMINATED_BIND                       _HRESULT_TYPEDEF_(__MSABI_LONG(0x800C0018))
767 #define INET_E_RESERVED_1                            _HRESULT_TYPEDEF_(__MSABI_LONG(0x800C001A))
768 #define INET_E_BLOCKED_REDIRECT_XSECURITYID          _HRESULT_TYPEDEF_(__MSABI_LONG(0x800C001B))
769 #define INET_E_DOMINJECTIONVALIDATION                _HRESULT_TYPEDEF_(__MSABI_LONG(0x800C001C))
770 #define INET_E_ERROR_FIRST                           _HRESULT_TYPEDEF_(__MSABI_LONG(0x800C0002))
771 #define INET_E_CODE_DOWNLOAD_DECLINED                _HRESULT_TYPEDEF_(__MSABI_LONG(0x800C0100))
772 #define INET_E_RESULT_DISPATCHED                     _HRESULT_TYPEDEF_(__MSABI_LONG(0x800C0200))
773 #define INET_E_CANNOT_REPLACE_SFP_FILE               _HRESULT_TYPEDEF_(__MSABI_LONG(0x800C0300))
774 #if (_WIN32_IE >= _WIN32_IE_IE60SP2)
775 #define INET_E_CODE_INSTALL_SUPPRESSED               _HRESULT_TYPEDEF_(__MSABI_LONG(0x800C0400))
776 #endif
777 #define INET_E_CODE_INSTALL_BLOCKED_BY_HASH_POLICY   _HRESULT_TYPEDEF_(__MSABI_LONG(0x800C0500))
778 #define INET_E_DOWNLOAD_BLOCKED_BY_INPRIVATE         _HRESULT_TYPEDEF_(__MSABI_LONG(0x800C0501))
779 #define INET_E_CODE_INSTALL_BLOCKED_IMMERSIVE        _HRESULT_TYPEDEF_(__MSABI_LONG(0x800C0502))
780 #define INET_E_FORBIDFRAMING                         _HRESULT_TYPEDEF_(__MSABI_LONG(0x800C0503))
781 #define INET_E_CODE_INSTALL_BLOCKED_ARM              _HRESULT_TYPEDEF_(__MSABI_LONG(0x800C0504))
782 #define INET_E_BLOCKED_PLUGGABLE_PROTOCOL            _HRESULT_TYPEDEF_(__MSABI_LONG(0x800C0505))
783 #define INET_E_ERROR_LAST INET_E_BLOCKED_PLUGGABLE_PROTOCOL
784 #endif
785 
786 #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
787 #ifndef _LPPERSISTMONIKER_DEFINED
788 #define _LPPERSISTMONIKER_DEFINED
789 /*****************************************************************************
790  * IPersistMoniker interface
791  */
792 #ifndef __IPersistMoniker_INTERFACE_DEFINED__
793 #define __IPersistMoniker_INTERFACE_DEFINED__
794 
795 typedef IPersistMoniker *LPPERSISTMONIKER;
796 
797 DEFINE_GUID(IID_IPersistMoniker, 0x79eac9c9, 0xbaf9, 0x11ce, 0x8c,0x82, 0x00,0xaa,0x00,0x4b,0xa9,0x0b);
798 #if defined(__cplusplus) && !defined(CINTERFACE)
799 MIDL_INTERFACE("79eac9c9-baf9-11ce-8c82-00aa004ba90b")
800 IPersistMoniker : public IUnknown
801 {
802     virtual HRESULT STDMETHODCALLTYPE GetClassID(
803         CLSID *pClassID) = 0;
804 
805     virtual HRESULT STDMETHODCALLTYPE IsDirty(
806         ) = 0;
807 
808     virtual HRESULT STDMETHODCALLTYPE Load(
809         WINBOOL fFullyAvailable,
810         IMoniker *pimkName,
811         LPBC pibc,
812         DWORD grfMode) = 0;
813 
814     virtual HRESULT STDMETHODCALLTYPE Save(
815         IMoniker *pimkName,
816         LPBC pbc,
817         WINBOOL fRemember) = 0;
818 
819     virtual HRESULT STDMETHODCALLTYPE SaveCompleted(
820         IMoniker *pimkName,
821         LPBC pibc) = 0;
822 
823     virtual HRESULT STDMETHODCALLTYPE GetCurMoniker(
824         IMoniker **ppimkName) = 0;
825 
826 };
827 #ifdef __CRT_UUID_DECL
828 __CRT_UUID_DECL(IPersistMoniker, 0x79eac9c9, 0xbaf9, 0x11ce, 0x8c,0x82, 0x00,0xaa,0x00,0x4b,0xa9,0x0b)
829 #endif
830 #else
831 typedef struct IPersistMonikerVtbl {
832     BEGIN_INTERFACE
833 
834     /*** IUnknown methods ***/
835     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
836         IPersistMoniker *This,
837         REFIID riid,
838         void **ppvObject);
839 
840     ULONG (STDMETHODCALLTYPE *AddRef)(
841         IPersistMoniker *This);
842 
843     ULONG (STDMETHODCALLTYPE *Release)(
844         IPersistMoniker *This);
845 
846     /*** IPersistMoniker methods ***/
847     HRESULT (STDMETHODCALLTYPE *GetClassID)(
848         IPersistMoniker *This,
849         CLSID *pClassID);
850 
851     HRESULT (STDMETHODCALLTYPE *IsDirty)(
852         IPersistMoniker *This);
853 
854     HRESULT (STDMETHODCALLTYPE *Load)(
855         IPersistMoniker *This,
856         WINBOOL fFullyAvailable,
857         IMoniker *pimkName,
858         LPBC pibc,
859         DWORD grfMode);
860 
861     HRESULT (STDMETHODCALLTYPE *Save)(
862         IPersistMoniker *This,
863         IMoniker *pimkName,
864         LPBC pbc,
865         WINBOOL fRemember);
866 
867     HRESULT (STDMETHODCALLTYPE *SaveCompleted)(
868         IPersistMoniker *This,
869         IMoniker *pimkName,
870         LPBC pibc);
871 
872     HRESULT (STDMETHODCALLTYPE *GetCurMoniker)(
873         IPersistMoniker *This,
874         IMoniker **ppimkName);
875 
876     END_INTERFACE
877 } IPersistMonikerVtbl;
878 
879 interface IPersistMoniker {
880     CONST_VTBL IPersistMonikerVtbl* lpVtbl;
881 };
882 
883 #ifdef COBJMACROS
884 #ifndef WIDL_C_INLINE_WRAPPERS
885 /*** IUnknown methods ***/
886 #define IPersistMoniker_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
887 #define IPersistMoniker_AddRef(This) (This)->lpVtbl->AddRef(This)
888 #define IPersistMoniker_Release(This) (This)->lpVtbl->Release(This)
889 /*** IPersistMoniker methods ***/
890 #define IPersistMoniker_GetClassID(This,pClassID) (This)->lpVtbl->GetClassID(This,pClassID)
891 #define IPersistMoniker_IsDirty(This) (This)->lpVtbl->IsDirty(This)
892 #define IPersistMoniker_Load(This,fFullyAvailable,pimkName,pibc,grfMode) (This)->lpVtbl->Load(This,fFullyAvailable,pimkName,pibc,grfMode)
893 #define IPersistMoniker_Save(This,pimkName,pbc,fRemember) (This)->lpVtbl->Save(This,pimkName,pbc,fRemember)
894 #define IPersistMoniker_SaveCompleted(This,pimkName,pibc) (This)->lpVtbl->SaveCompleted(This,pimkName,pibc)
895 #define IPersistMoniker_GetCurMoniker(This,ppimkName) (This)->lpVtbl->GetCurMoniker(This,ppimkName)
896 #else
897 /*** IUnknown methods ***/
898 static FORCEINLINE HRESULT IPersistMoniker_QueryInterface(IPersistMoniker* This,REFIID riid,void **ppvObject) {
899     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
900 }
901 static FORCEINLINE ULONG IPersistMoniker_AddRef(IPersistMoniker* This) {
902     return This->lpVtbl->AddRef(This);
903 }
904 static FORCEINLINE ULONG IPersistMoniker_Release(IPersistMoniker* This) {
905     return This->lpVtbl->Release(This);
906 }
907 /*** IPersistMoniker methods ***/
908 static FORCEINLINE HRESULT IPersistMoniker_GetClassID(IPersistMoniker* This,CLSID *pClassID) {
909     return This->lpVtbl->GetClassID(This,pClassID);
910 }
911 static FORCEINLINE HRESULT IPersistMoniker_IsDirty(IPersistMoniker* This) {
912     return This->lpVtbl->IsDirty(This);
913 }
914 static FORCEINLINE HRESULT IPersistMoniker_Load(IPersistMoniker* This,WINBOOL fFullyAvailable,IMoniker *pimkName,LPBC pibc,DWORD grfMode) {
915     return This->lpVtbl->Load(This,fFullyAvailable,pimkName,pibc,grfMode);
916 }
917 static FORCEINLINE HRESULT IPersistMoniker_Save(IPersistMoniker* This,IMoniker *pimkName,LPBC pbc,WINBOOL fRemember) {
918     return This->lpVtbl->Save(This,pimkName,pbc,fRemember);
919 }
920 static FORCEINLINE HRESULT IPersistMoniker_SaveCompleted(IPersistMoniker* This,IMoniker *pimkName,LPBC pibc) {
921     return This->lpVtbl->SaveCompleted(This,pimkName,pibc);
922 }
923 static FORCEINLINE HRESULT IPersistMoniker_GetCurMoniker(IPersistMoniker* This,IMoniker **ppimkName) {
924     return This->lpVtbl->GetCurMoniker(This,ppimkName);
925 }
926 #endif
927 #endif
928 
929 #endif
930 
931 
932 #endif  /* __IPersistMoniker_INTERFACE_DEFINED__ */
933 
934 #endif
935 
936 #ifndef _LPMONIKERPROP_DEFINED
937 #define _LPMONIKERPROP_DEFINED
938 /*****************************************************************************
939  * IMonikerProp interface
940  */
941 #ifndef __IMonikerProp_INTERFACE_DEFINED__
942 #define __IMonikerProp_INTERFACE_DEFINED__
943 
944 typedef IMonikerProp *LPMONIKERPROP;
945 
946 typedef enum __WIDL_urlmon_generated_name_00000002 {
947     MIMETYPEPROP = 0x0,
948     USE_SRC_URL = 0x1,
949     CLASSIDPROP = 0x2,
950     TRUSTEDDOWNLOADPROP = 0x3,
951     POPUPLEVELPROP = 0x4
952 } MONIKERPROPERTY;
953 
954 DEFINE_GUID(IID_IMonikerProp, 0xa5ca5f7f, 0x1847, 0x4d87, 0x9c,0x5b, 0x91,0x85,0x09,0xf7,0x51,0x1d);
955 #if defined(__cplusplus) && !defined(CINTERFACE)
956 MIDL_INTERFACE("a5ca5f7f-1847-4d87-9c5b-918509f7511d")
957 IMonikerProp : public IUnknown
958 {
959     virtual HRESULT STDMETHODCALLTYPE PutProperty(
960         MONIKERPROPERTY mkp,
961         LPCWSTR val) = 0;
962 
963 };
964 #ifdef __CRT_UUID_DECL
965 __CRT_UUID_DECL(IMonikerProp, 0xa5ca5f7f, 0x1847, 0x4d87, 0x9c,0x5b, 0x91,0x85,0x09,0xf7,0x51,0x1d)
966 #endif
967 #else
968 typedef struct IMonikerPropVtbl {
969     BEGIN_INTERFACE
970 
971     /*** IUnknown methods ***/
972     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
973         IMonikerProp *This,
974         REFIID riid,
975         void **ppvObject);
976 
977     ULONG (STDMETHODCALLTYPE *AddRef)(
978         IMonikerProp *This);
979 
980     ULONG (STDMETHODCALLTYPE *Release)(
981         IMonikerProp *This);
982 
983     /*** IMonikerProp methods ***/
984     HRESULT (STDMETHODCALLTYPE *PutProperty)(
985         IMonikerProp *This,
986         MONIKERPROPERTY mkp,
987         LPCWSTR val);
988 
989     END_INTERFACE
990 } IMonikerPropVtbl;
991 
992 interface IMonikerProp {
993     CONST_VTBL IMonikerPropVtbl* lpVtbl;
994 };
995 
996 #ifdef COBJMACROS
997 #ifndef WIDL_C_INLINE_WRAPPERS
998 /*** IUnknown methods ***/
999 #define IMonikerProp_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
1000 #define IMonikerProp_AddRef(This) (This)->lpVtbl->AddRef(This)
1001 #define IMonikerProp_Release(This) (This)->lpVtbl->Release(This)
1002 /*** IMonikerProp methods ***/
1003 #define IMonikerProp_PutProperty(This,mkp,val) (This)->lpVtbl->PutProperty(This,mkp,val)
1004 #else
1005 /*** IUnknown methods ***/
1006 static FORCEINLINE HRESULT IMonikerProp_QueryInterface(IMonikerProp* This,REFIID riid,void **ppvObject) {
1007     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
1008 }
1009 static FORCEINLINE ULONG IMonikerProp_AddRef(IMonikerProp* This) {
1010     return This->lpVtbl->AddRef(This);
1011 }
1012 static FORCEINLINE ULONG IMonikerProp_Release(IMonikerProp* This) {
1013     return This->lpVtbl->Release(This);
1014 }
1015 /*** IMonikerProp methods ***/
1016 static FORCEINLINE HRESULT IMonikerProp_PutProperty(IMonikerProp* This,MONIKERPROPERTY mkp,LPCWSTR val) {
1017     return This->lpVtbl->PutProperty(This,mkp,val);
1018 }
1019 #endif
1020 #endif
1021 
1022 #endif
1023 
1024 
1025 #endif  /* __IMonikerProp_INTERFACE_DEFINED__ */
1026 
1027 #endif
1028 
1029 #ifndef _LPBINDPROTOCOL_DEFINED
1030 #define _LPBINDPROTOCOL_DEFINED
1031 
1032 /*****************************************************************************
1033  * IBindProtocol interface
1034  */
1035 #ifndef __IBindProtocol_INTERFACE_DEFINED__
1036 #define __IBindProtocol_INTERFACE_DEFINED__
1037 
1038 typedef IBindProtocol *LPBINDPROTOCOL;
1039 
1040 DEFINE_GUID(IID_IBindProtocol, 0x79eac9cd, 0xbaf9, 0x11ce, 0x8c,0x82, 0x00,0xaa,0x00,0x4b,0xa9,0x0b);
1041 #if defined(__cplusplus) && !defined(CINTERFACE)
1042 MIDL_INTERFACE("79eac9cd-baf9-11ce-8c82-00aa004ba90b")
1043 IBindProtocol : public IUnknown
1044 {
1045     virtual HRESULT STDMETHODCALLTYPE CreateBinding(
1046         LPCWSTR szUrl,
1047         IBindCtx *pbc,
1048         IBinding **ppb) = 0;
1049 
1050 };
1051 #ifdef __CRT_UUID_DECL
1052 __CRT_UUID_DECL(IBindProtocol, 0x79eac9cd, 0xbaf9, 0x11ce, 0x8c,0x82, 0x00,0xaa,0x00,0x4b,0xa9,0x0b)
1053 #endif
1054 #else
1055 typedef struct IBindProtocolVtbl {
1056     BEGIN_INTERFACE
1057 
1058     /*** IUnknown methods ***/
1059     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
1060         IBindProtocol *This,
1061         REFIID riid,
1062         void **ppvObject);
1063 
1064     ULONG (STDMETHODCALLTYPE *AddRef)(
1065         IBindProtocol *This);
1066 
1067     ULONG (STDMETHODCALLTYPE *Release)(
1068         IBindProtocol *This);
1069 
1070     /*** IBindProtocol methods ***/
1071     HRESULT (STDMETHODCALLTYPE *CreateBinding)(
1072         IBindProtocol *This,
1073         LPCWSTR szUrl,
1074         IBindCtx *pbc,
1075         IBinding **ppb);
1076 
1077     END_INTERFACE
1078 } IBindProtocolVtbl;
1079 
1080 interface IBindProtocol {
1081     CONST_VTBL IBindProtocolVtbl* lpVtbl;
1082 };
1083 
1084 #ifdef COBJMACROS
1085 #ifndef WIDL_C_INLINE_WRAPPERS
1086 /*** IUnknown methods ***/
1087 #define IBindProtocol_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
1088 #define IBindProtocol_AddRef(This) (This)->lpVtbl->AddRef(This)
1089 #define IBindProtocol_Release(This) (This)->lpVtbl->Release(This)
1090 /*** IBindProtocol methods ***/
1091 #define IBindProtocol_CreateBinding(This,szUrl,pbc,ppb) (This)->lpVtbl->CreateBinding(This,szUrl,pbc,ppb)
1092 #else
1093 /*** IUnknown methods ***/
1094 static FORCEINLINE HRESULT IBindProtocol_QueryInterface(IBindProtocol* This,REFIID riid,void **ppvObject) {
1095     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
1096 }
1097 static FORCEINLINE ULONG IBindProtocol_AddRef(IBindProtocol* This) {
1098     return This->lpVtbl->AddRef(This);
1099 }
1100 static FORCEINLINE ULONG IBindProtocol_Release(IBindProtocol* This) {
1101     return This->lpVtbl->Release(This);
1102 }
1103 /*** IBindProtocol methods ***/
1104 static FORCEINLINE HRESULT IBindProtocol_CreateBinding(IBindProtocol* This,LPCWSTR szUrl,IBindCtx *pbc,IBinding **ppb) {
1105     return This->lpVtbl->CreateBinding(This,szUrl,pbc,ppb);
1106 }
1107 #endif
1108 #endif
1109 
1110 #endif
1111 
1112 
1113 #endif  /* __IBindProtocol_INTERFACE_DEFINED__ */
1114 
1115 #endif
1116 
1117 #ifndef _LPBINDING_DEFINED
1118 #define _LPBINDING_DEFINED
1119 
1120 /*****************************************************************************
1121  * IBinding interface
1122  */
1123 #ifndef __IBinding_INTERFACE_DEFINED__
1124 #define __IBinding_INTERFACE_DEFINED__
1125 
1126 typedef IBinding *LPBINDING;
1127 
1128 DEFINE_GUID(IID_IBinding, 0x79eac9c0, 0xbaf9, 0x11ce, 0x8c,0x82, 0x00,0xaa,0x00,0x4b,0xa9,0x0b);
1129 #if defined(__cplusplus) && !defined(CINTERFACE)
1130 MIDL_INTERFACE("79eac9c0-baf9-11ce-8c82-00aa004ba90b")
1131 IBinding : public IUnknown
1132 {
1133     virtual HRESULT STDMETHODCALLTYPE Abort(
1134         ) = 0;
1135 
1136     virtual HRESULT STDMETHODCALLTYPE Suspend(
1137         ) = 0;
1138 
1139     virtual HRESULT STDMETHODCALLTYPE Resume(
1140         ) = 0;
1141 
1142     virtual HRESULT STDMETHODCALLTYPE SetPriority(
1143         LONG nPriority) = 0;
1144 
1145     virtual HRESULT STDMETHODCALLTYPE GetPriority(
1146         LONG *pnPriority) = 0;
1147 
1148     virtual HRESULT STDMETHODCALLTYPE GetBindResult(
1149         CLSID *pclsidProtocol,
1150         DWORD *pdwResult,
1151         LPOLESTR *pszResult,
1152         DWORD *pdwReserved) = 0;
1153 
1154 };
1155 #ifdef __CRT_UUID_DECL
1156 __CRT_UUID_DECL(IBinding, 0x79eac9c0, 0xbaf9, 0x11ce, 0x8c,0x82, 0x00,0xaa,0x00,0x4b,0xa9,0x0b)
1157 #endif
1158 #else
1159 typedef struct IBindingVtbl {
1160     BEGIN_INTERFACE
1161 
1162     /*** IUnknown methods ***/
1163     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
1164         IBinding *This,
1165         REFIID riid,
1166         void **ppvObject);
1167 
1168     ULONG (STDMETHODCALLTYPE *AddRef)(
1169         IBinding *This);
1170 
1171     ULONG (STDMETHODCALLTYPE *Release)(
1172         IBinding *This);
1173 
1174     /*** IBinding methods ***/
1175     HRESULT (STDMETHODCALLTYPE *Abort)(
1176         IBinding *This);
1177 
1178     HRESULT (STDMETHODCALLTYPE *Suspend)(
1179         IBinding *This);
1180 
1181     HRESULT (STDMETHODCALLTYPE *Resume)(
1182         IBinding *This);
1183 
1184     HRESULT (STDMETHODCALLTYPE *SetPriority)(
1185         IBinding *This,
1186         LONG nPriority);
1187 
1188     HRESULT (STDMETHODCALLTYPE *GetPriority)(
1189         IBinding *This,
1190         LONG *pnPriority);
1191 
1192     HRESULT (STDMETHODCALLTYPE *GetBindResult)(
1193         IBinding *This,
1194         CLSID *pclsidProtocol,
1195         DWORD *pdwResult,
1196         LPOLESTR *pszResult,
1197         DWORD *pdwReserved);
1198 
1199     END_INTERFACE
1200 } IBindingVtbl;
1201 
1202 interface IBinding {
1203     CONST_VTBL IBindingVtbl* lpVtbl;
1204 };
1205 
1206 #ifdef COBJMACROS
1207 #ifndef WIDL_C_INLINE_WRAPPERS
1208 /*** IUnknown methods ***/
1209 #define IBinding_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
1210 #define IBinding_AddRef(This) (This)->lpVtbl->AddRef(This)
1211 #define IBinding_Release(This) (This)->lpVtbl->Release(This)
1212 /*** IBinding methods ***/
1213 #define IBinding_Abort(This) (This)->lpVtbl->Abort(This)
1214 #define IBinding_Suspend(This) (This)->lpVtbl->Suspend(This)
1215 #define IBinding_Resume(This) (This)->lpVtbl->Resume(This)
1216 #define IBinding_SetPriority(This,nPriority) (This)->lpVtbl->SetPriority(This,nPriority)
1217 #define IBinding_GetPriority(This,pnPriority) (This)->lpVtbl->GetPriority(This,pnPriority)
1218 #define IBinding_GetBindResult(This,pclsidProtocol,pdwResult,pszResult,pdwReserved) (This)->lpVtbl->GetBindResult(This,pclsidProtocol,pdwResult,pszResult,pdwReserved)
1219 #else
1220 /*** IUnknown methods ***/
1221 static FORCEINLINE HRESULT IBinding_QueryInterface(IBinding* This,REFIID riid,void **ppvObject) {
1222     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
1223 }
1224 static FORCEINLINE ULONG IBinding_AddRef(IBinding* This) {
1225     return This->lpVtbl->AddRef(This);
1226 }
1227 static FORCEINLINE ULONG IBinding_Release(IBinding* This) {
1228     return This->lpVtbl->Release(This);
1229 }
1230 /*** IBinding methods ***/
1231 static FORCEINLINE HRESULT IBinding_Abort(IBinding* This) {
1232     return This->lpVtbl->Abort(This);
1233 }
1234 static FORCEINLINE HRESULT IBinding_Suspend(IBinding* This) {
1235     return This->lpVtbl->Suspend(This);
1236 }
1237 static FORCEINLINE HRESULT IBinding_Resume(IBinding* This) {
1238     return This->lpVtbl->Resume(This);
1239 }
1240 static FORCEINLINE HRESULT IBinding_SetPriority(IBinding* This,LONG nPriority) {
1241     return This->lpVtbl->SetPriority(This,nPriority);
1242 }
1243 static FORCEINLINE HRESULT IBinding_GetPriority(IBinding* This,LONG *pnPriority) {
1244     return This->lpVtbl->GetPriority(This,pnPriority);
1245 }
1246 static FORCEINLINE HRESULT IBinding_GetBindResult(IBinding* This,CLSID *pclsidProtocol,DWORD *pdwResult,LPOLESTR *pszResult,DWORD *pdwReserved) {
1247     return This->lpVtbl->GetBindResult(This,pclsidProtocol,pdwResult,pszResult,pdwReserved);
1248 }
1249 #endif
1250 #endif
1251 
1252 #endif
1253 
1254 HRESULT STDMETHODCALLTYPE IBinding_RemoteGetBindResult_Proxy(
1255     IBinding* This,
1256     CLSID *pclsidProtocol,
1257     DWORD *pdwResult,
1258     LPOLESTR *pszResult,
1259     DWORD dwReserved);
1260 void __RPC_STUB IBinding_RemoteGetBindResult_Stub(
1261     IRpcStubBuffer* This,
1262     IRpcChannelBuffer* pRpcChannelBuffer,
1263     PRPC_MESSAGE pRpcMessage,
1264     DWORD* pdwStubPhase);
1265 HRESULT CALLBACK IBinding_GetBindResult_Proxy(
1266     IBinding* This,
1267     CLSID *pclsidProtocol,
1268     DWORD *pdwResult,
1269     LPOLESTR *pszResult,
1270     DWORD *pdwReserved);
1271 HRESULT __RPC_STUB IBinding_GetBindResult_Stub(
1272     IBinding* This,
1273     CLSID *pclsidProtocol,
1274     DWORD *pdwResult,
1275     LPOLESTR *pszResult,
1276     DWORD dwReserved);
1277 
1278 #endif  /* __IBinding_INTERFACE_DEFINED__ */
1279 
1280 #endif
1281 #endif
1282 
1283 #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP)
1284 #ifndef _LPBINDSTATUSCALLBACK_DEFINED
1285 #define _LPBINDSTATUSCALLBACK_DEFINED
1286 
1287 /*****************************************************************************
1288  * IBindStatusCallback interface
1289  */
1290 #ifndef __IBindStatusCallback_INTERFACE_DEFINED__
1291 #define __IBindStatusCallback_INTERFACE_DEFINED__
1292 
1293 typedef IBindStatusCallback *LPBINDSTATUSCALLBACK;
1294 
1295 typedef enum __WIDL_urlmon_generated_name_00000003 {
1296     BINDVERB_GET = 0x0,
1297     BINDVERB_POST = 0x1,
1298     BINDVERB_PUT = 0x2,
1299     BINDVERB_CUSTOM = 0x3,
1300     BINDVERB_RESERVED1 = 0x4
1301 } BINDVERB;
1302 
1303 typedef enum __WIDL_urlmon_generated_name_00000004 {
1304     BINDINFOF_URLENCODESTGMEDDATA = 0x1,
1305     BINDINFOF_URLENCODEDEXTRAINFO = 0x2
1306 } BINDINFOF;
1307 
1308 typedef enum __WIDL_urlmon_generated_name_00000005 {
1309     BINDF_ASYNCHRONOUS = 0x1,
1310     BINDF_ASYNCSTORAGE = 0x2,
1311     BINDF_NOPROGRESSIVERENDERING = 0x4,
1312     BINDF_OFFLINEOPERATION = 0x8,
1313     BINDF_GETNEWESTVERSION = 0x10,
1314     BINDF_NOWRITECACHE = 0x20,
1315     BINDF_NEEDFILE = 0x40,
1316     BINDF_PULLDATA = 0x80,
1317     BINDF_IGNORESECURITYPROBLEM = 0x100,
1318     BINDF_RESYNCHRONIZE = 0x200,
1319     BINDF_HYPERLINK = 0x400,
1320     BINDF_NO_UI = 0x800,
1321     BINDF_SILENTOPERATION = 0x1000,
1322     BINDF_PRAGMA_NO_CACHE = 0x2000,
1323     BINDF_GETCLASSOBJECT = 0x4000,
1324     BINDF_RESERVED_1 = 0x8000,
1325     BINDF_FREE_THREADED = 0x10000,
1326     BINDF_DIRECT_READ = 0x20000,
1327     BINDF_FORMS_SUBMIT = 0x40000,
1328     BINDF_GETFROMCACHE_IF_NET_FAIL = 0x80000,
1329     BINDF_FROMURLMON = 0x100000,
1330     BINDF_FWD_BACK = 0x200000,
1331     BINDF_PREFERDEFAULTHANDLER = 0x400000,
1332     BINDF_ENFORCERESTRICTED = 0x800000,
1333     BINDF_RESERVED_2 = 0x80000000,
1334     BINDF_RESERVED_3 = 0x1000000,
1335     BINDF_RESERVED_4 = 0x2000000,
1336     BINDF_RESERVED_5 = 0x4000000,
1337     BINDF_RESERVED_6 = 0x8000000,
1338     BINDF_RESERVED_7 = 0x40000000,
1339     BINDF_RESERVED_8 = 0x20000000
1340 } BINDF;
1341 
1342 typedef enum __WIDL_urlmon_generated_name_00000006 {
1343     URL_ENCODING_NONE = 0x0,
1344     URL_ENCODING_ENABLE_UTF8 = 0x10000000,
1345     URL_ENCODING_DISABLE_UTF8 = 0x20000000
1346 } URL_ENCODING;
1347 
1348 typedef struct _tagBINDINFO {
1349     ULONG cbSize;
1350     LPWSTR szExtraInfo;
1351     STGMEDIUM stgmedData;
1352     DWORD grfBindInfoF;
1353     DWORD dwBindVerb;
1354     LPWSTR szCustomVerb;
1355     DWORD cbstgmedData;
1356     DWORD dwOptions;
1357     DWORD dwOptionsFlags;
1358     DWORD dwCodePage;
1359     SECURITY_ATTRIBUTES securityAttributes;
1360     IID iid;
1361     IUnknown *pUnk;
1362     DWORD dwReserved;
1363 } BINDINFO;
1364 
1365 typedef struct _REMSECURITY_ATTRIBUTES {
1366     DWORD nLength;
1367     DWORD lpSecurityDescriptor;
1368     WINBOOL bInheritHandle;
1369 } REMSECURITY_ATTRIBUTES;
1370 typedef struct _REMSECURITY_ATTRIBUTES *PREMSECURITY_ATTRIBUTES;
1371 typedef struct _REMSECURITY_ATTRIBUTES *LPREMSECURITY_ATTRIBUTES;
1372 
1373 typedef struct _tagRemBINDINFO {
1374     ULONG cbSize;
1375     LPWSTR szExtraInfo;
1376     DWORD grfBindInfoF;
1377     DWORD dwBindVerb;
1378     LPWSTR szCustomVerb;
1379     DWORD cbstgmedData;
1380     DWORD dwOptions;
1381     DWORD dwOptionsFlags;
1382     DWORD dwCodePage;
1383     REMSECURITY_ATTRIBUTES securityAttributes;
1384     IID iid;
1385     IUnknown *pUnk;
1386     DWORD dwReserved;
1387 } RemBINDINFO;
1388 
1389 typedef struct tagRemFORMATETC {
1390     DWORD cfFormat;
1391     DWORD ptd;
1392     DWORD dwAspect;
1393     LONG lindex;
1394     DWORD tymed;
1395 } RemFORMATETC;
1396 typedef struct tagRemFORMATETC *LPREMFORMATETC;
1397 
1398 typedef enum __WIDL_urlmon_generated_name_00000007 {
1399     BINDINFO_OPTIONS_WININETFLAG = 0x10000,
1400     BINDINFO_OPTIONS_ENABLE_UTF8 = 0x20000,
1401     BINDINFO_OPTIONS_DISABLE_UTF8 = 0x40000,
1402     BINDINFO_OPTIONS_USE_IE_ENCODING = 0x80000,
1403     BINDINFO_OPTIONS_BINDTOOBJECT = 0x100000,
1404     BINDINFO_OPTIONS_SECURITYOPTOUT = 0x200000,
1405     BINDINFO_OPTIONS_IGNOREMIMETEXTPLAIN = 0x400000,
1406     BINDINFO_OPTIONS_USEBINDSTRINGCREDS = 0x800000,
1407     BINDINFO_OPTIONS_IGNOREHTTPHTTPSREDIRECTS = 0x1000000,
1408     BINDINFO_OPTIONS_IGNORE_SSLERRORS_ONCE = 0x2000000,
1409     BINDINFO_WPC_DOWNLOADBLOCKED = 0x8000000,
1410     BINDINFO_WPC_LOGGING_ENABLED = 0x10000000,
1411     BINDINFO_OPTIONS_ALLOWCONNECTDATA = 0x20000000,
1412     BINDINFO_OPTIONS_DISABLEAUTOREDIRECTS = 0x40000000,
1413     BINDINFO_OPTIONS_SHDOCVW_NAVIGATE = (int)0x80000000
1414 } BINDINFO_OPTIONS;
1415 
1416 typedef enum __WIDL_urlmon_generated_name_00000008 {
1417     BSCF_FIRSTDATANOTIFICATION = 0x1,
1418     BSCF_INTERMEDIATEDATANOTIFICATION = 0x2,
1419     BSCF_LASTDATANOTIFICATION = 0x4,
1420     BSCF_DATAFULLYAVAILABLE = 0x8,
1421     BSCF_AVAILABLEDATASIZEUNKNOWN = 0x10,
1422     BSCF_SKIPDRAINDATAFORFILEURLS = 0x20,
1423     BSCF_64BITLENGTHDOWNLOAD = 0x40
1424 } BSCF;
1425 
1426 typedef enum tagBINDSTATUS {
1427     BINDSTATUS_FINDINGRESOURCE = 1,
1428     BINDSTATUS_CONNECTING = 2,
1429     BINDSTATUS_REDIRECTING = 3,
1430     BINDSTATUS_BEGINDOWNLOADDATA = 4,
1431     BINDSTATUS_DOWNLOADINGDATA = 5,
1432     BINDSTATUS_ENDDOWNLOADDATA = 6,
1433     BINDSTATUS_BEGINDOWNLOADCOMPONENTS = 7,
1434     BINDSTATUS_INSTALLINGCOMPONENTS = 8,
1435     BINDSTATUS_ENDDOWNLOADCOMPONENTS = 9,
1436     BINDSTATUS_USINGCACHEDCOPY = 10,
1437     BINDSTATUS_SENDINGREQUEST = 11,
1438     BINDSTATUS_CLASSIDAVAILABLE = 12,
1439     BINDSTATUS_MIMETYPEAVAILABLE = 13,
1440     BINDSTATUS_CACHEFILENAMEAVAILABLE = 14,
1441     BINDSTATUS_BEGINSYNCOPERATION = 15,
1442     BINDSTATUS_ENDSYNCOPERATION = 16,
1443     BINDSTATUS_BEGINUPLOADDATA = 17,
1444     BINDSTATUS_UPLOADINGDATA = 18,
1445     BINDSTATUS_ENDUPLOADDATA = 19,
1446     BINDSTATUS_PROTOCOLCLASSID = 20,
1447     BINDSTATUS_ENCODING = 21,
1448     BINDSTATUS_VERIFIEDMIMETYPEAVAILABLE = 22,
1449     BINDSTATUS_CLASSINSTALLLOCATION = 23,
1450     BINDSTATUS_DECODING = 24,
1451     BINDSTATUS_LOADINGMIMEHANDLER = 25,
1452     BINDSTATUS_CONTENTDISPOSITIONATTACH = 26,
1453     BINDSTATUS_FILTERREPORTMIMETYPE = 27,
1454     BINDSTATUS_CLSIDCANINSTANTIATE = 28,
1455     BINDSTATUS_IUNKNOWNAVAILABLE = 29,
1456     BINDSTATUS_DIRECTBIND = 30,
1457     BINDSTATUS_RAWMIMETYPE = 31,
1458     BINDSTATUS_PROXYDETECTING = 32,
1459     BINDSTATUS_ACCEPTRANGES = 33,
1460     BINDSTATUS_COOKIE_SENT = 34,
1461     BINDSTATUS_COMPACT_POLICY_RECEIVED = 35,
1462     BINDSTATUS_COOKIE_SUPPRESSED = 36,
1463     BINDSTATUS_COOKIE_STATE_UNKNOWN = 37,
1464     BINDSTATUS_COOKIE_STATE_ACCEPT = 38,
1465     BINDSTATUS_COOKIE_STATE_REJECT = 39,
1466     BINDSTATUS_COOKIE_STATE_PROMPT = 40,
1467     BINDSTATUS_COOKIE_STATE_LEASH = 41,
1468     BINDSTATUS_COOKIE_STATE_DOWNGRADE = 42,
1469     BINDSTATUS_POLICY_HREF = 43,
1470     BINDSTATUS_P3P_HEADER = 44,
1471     BINDSTATUS_SESSION_COOKIE_RECEIVED = 45,
1472     BINDSTATUS_PERSISTENT_COOKIE_RECEIVED = 46,
1473     BINDSTATUS_SESSION_COOKIES_ALLOWED = 47,
1474     BINDSTATUS_CACHECONTROL = 48,
1475     BINDSTATUS_CONTENTDISPOSITIONFILENAME = 49,
1476     BINDSTATUS_MIMETEXTPLAINMISMATCH = 50,
1477     BINDSTATUS_PUBLISHERAVAILABLE = 51,
1478     BINDSTATUS_DISPLAYNAMEAVAILABLE = 52,
1479     BINDSTATUS_SSLUX_NAVBLOCKED = 53,
1480     BINDSTATUS_SERVER_MIMETYPEAVAILABLE = 54,
1481     BINDSTATUS_SNIFFED_CLASSIDAVAILABLE = 55,
1482     BINDSTATUS_64BIT_PROGRESS = 56,
1483     BINDSTATUS_LAST = BINDSTATUS_64BIT_PROGRESS,
1484     BINDSTATUS_RESERVED_0 = 57,
1485     BINDSTATUS_RESERVED_1 = 58,
1486     BINDSTATUS_RESERVED_2 = 59,
1487     BINDSTATUS_RESERVED_3 = 60,
1488     BINDSTATUS_RESERVED_4 = 61,
1489     BINDSTATUS_RESERVED_5 = 62,
1490     BINDSTATUS_RESERVED_6 = 63,
1491     BINDSTATUS_RESERVED_7 = 64,
1492     BINDSTATUS_RESERVED_8 = 65,
1493     BINDSTATUS_RESERVED_9 = 66,
1494     BINDSTATUS_LAST_PRIVATE = BINDSTATUS_RESERVED_9
1495 } BINDSTATUS;
1496 
1497 DEFINE_GUID(IID_IBindStatusCallback, 0x79eac9c1, 0xbaf9, 0x11ce, 0x8c,0x82, 0x00,0xaa,0x00,0x4b,0xa9,0x0b);
1498 #if defined(__cplusplus) && !defined(CINTERFACE)
1499 MIDL_INTERFACE("79eac9c1-baf9-11ce-8c82-00aa004ba90b")
1500 IBindStatusCallback : public IUnknown
1501 {
1502     virtual HRESULT STDMETHODCALLTYPE OnStartBinding(
1503         DWORD dwReserved,
1504         IBinding *pib) = 0;
1505 
1506     virtual HRESULT STDMETHODCALLTYPE GetPriority(
1507         LONG *pnPriority) = 0;
1508 
1509     virtual HRESULT STDMETHODCALLTYPE OnLowResource(
1510         DWORD reserved) = 0;
1511 
1512     virtual HRESULT STDMETHODCALLTYPE OnProgress(
1513         ULONG ulProgress,
1514         ULONG ulProgressMax,
1515         ULONG ulStatusCode,
1516         LPCWSTR szStatusText) = 0;
1517 
1518     virtual HRESULT STDMETHODCALLTYPE OnStopBinding(
1519         HRESULT hresult,
1520         LPCWSTR szError) = 0;
1521 
1522     virtual HRESULT STDMETHODCALLTYPE GetBindInfo(
1523         DWORD *grfBINDF,
1524         BINDINFO *pbindinfo) = 0;
1525 
1526     virtual HRESULT STDMETHODCALLTYPE OnDataAvailable(
1527         DWORD grfBSCF,
1528         DWORD dwSize,
1529         FORMATETC *pformatetc,
1530         STGMEDIUM *pstgmed) = 0;
1531 
1532     virtual HRESULT STDMETHODCALLTYPE OnObjectAvailable(
1533         REFIID riid,
1534         IUnknown *punk) = 0;
1535 
1536 };
1537 #ifdef __CRT_UUID_DECL
1538 __CRT_UUID_DECL(IBindStatusCallback, 0x79eac9c1, 0xbaf9, 0x11ce, 0x8c,0x82, 0x00,0xaa,0x00,0x4b,0xa9,0x0b)
1539 #endif
1540 #else
1541 typedef struct IBindStatusCallbackVtbl {
1542     BEGIN_INTERFACE
1543 
1544     /*** IUnknown methods ***/
1545     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
1546         IBindStatusCallback *This,
1547         REFIID riid,
1548         void **ppvObject);
1549 
1550     ULONG (STDMETHODCALLTYPE *AddRef)(
1551         IBindStatusCallback *This);
1552 
1553     ULONG (STDMETHODCALLTYPE *Release)(
1554         IBindStatusCallback *This);
1555 
1556     /*** IBindStatusCallback methods ***/
1557     HRESULT (STDMETHODCALLTYPE *OnStartBinding)(
1558         IBindStatusCallback *This,
1559         DWORD dwReserved,
1560         IBinding *pib);
1561 
1562     HRESULT (STDMETHODCALLTYPE *GetPriority)(
1563         IBindStatusCallback *This,
1564         LONG *pnPriority);
1565 
1566     HRESULT (STDMETHODCALLTYPE *OnLowResource)(
1567         IBindStatusCallback *This,
1568         DWORD reserved);
1569 
1570     HRESULT (STDMETHODCALLTYPE *OnProgress)(
1571         IBindStatusCallback *This,
1572         ULONG ulProgress,
1573         ULONG ulProgressMax,
1574         ULONG ulStatusCode,
1575         LPCWSTR szStatusText);
1576 
1577     HRESULT (STDMETHODCALLTYPE *OnStopBinding)(
1578         IBindStatusCallback *This,
1579         HRESULT hresult,
1580         LPCWSTR szError);
1581 
1582     HRESULT (STDMETHODCALLTYPE *GetBindInfo)(
1583         IBindStatusCallback *This,
1584         DWORD *grfBINDF,
1585         BINDINFO *pbindinfo);
1586 
1587     HRESULT (STDMETHODCALLTYPE *OnDataAvailable)(
1588         IBindStatusCallback *This,
1589         DWORD grfBSCF,
1590         DWORD dwSize,
1591         FORMATETC *pformatetc,
1592         STGMEDIUM *pstgmed);
1593 
1594     HRESULT (STDMETHODCALLTYPE *OnObjectAvailable)(
1595         IBindStatusCallback *This,
1596         REFIID riid,
1597         IUnknown *punk);
1598 
1599     END_INTERFACE
1600 } IBindStatusCallbackVtbl;
1601 
1602 interface IBindStatusCallback {
1603     CONST_VTBL IBindStatusCallbackVtbl* lpVtbl;
1604 };
1605 
1606 #ifdef COBJMACROS
1607 #ifndef WIDL_C_INLINE_WRAPPERS
1608 /*** IUnknown methods ***/
1609 #define IBindStatusCallback_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
1610 #define IBindStatusCallback_AddRef(This) (This)->lpVtbl->AddRef(This)
1611 #define IBindStatusCallback_Release(This) (This)->lpVtbl->Release(This)
1612 /*** IBindStatusCallback methods ***/
1613 #define IBindStatusCallback_OnStartBinding(This,dwReserved,pib) (This)->lpVtbl->OnStartBinding(This,dwReserved,pib)
1614 #define IBindStatusCallback_GetPriority(This,pnPriority) (This)->lpVtbl->GetPriority(This,pnPriority)
1615 #define IBindStatusCallback_OnLowResource(This,reserved) (This)->lpVtbl->OnLowResource(This,reserved)
1616 #define IBindStatusCallback_OnProgress(This,ulProgress,ulProgressMax,ulStatusCode,szStatusText) (This)->lpVtbl->OnProgress(This,ulProgress,ulProgressMax,ulStatusCode,szStatusText)
1617 #define IBindStatusCallback_OnStopBinding(This,hresult,szError) (This)->lpVtbl->OnStopBinding(This,hresult,szError)
1618 #define IBindStatusCallback_GetBindInfo(This,grfBINDF,pbindinfo) (This)->lpVtbl->GetBindInfo(This,grfBINDF,pbindinfo)
1619 #define IBindStatusCallback_OnDataAvailable(This,grfBSCF,dwSize,pformatetc,pstgmed) (This)->lpVtbl->OnDataAvailable(This,grfBSCF,dwSize,pformatetc,pstgmed)
1620 #define IBindStatusCallback_OnObjectAvailable(This,riid,punk) (This)->lpVtbl->OnObjectAvailable(This,riid,punk)
1621 #else
1622 /*** IUnknown methods ***/
1623 static FORCEINLINE HRESULT IBindStatusCallback_QueryInterface(IBindStatusCallback* This,REFIID riid,void **ppvObject) {
1624     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
1625 }
1626 static FORCEINLINE ULONG IBindStatusCallback_AddRef(IBindStatusCallback* This) {
1627     return This->lpVtbl->AddRef(This);
1628 }
1629 static FORCEINLINE ULONG IBindStatusCallback_Release(IBindStatusCallback* This) {
1630     return This->lpVtbl->Release(This);
1631 }
1632 /*** IBindStatusCallback methods ***/
1633 static FORCEINLINE HRESULT IBindStatusCallback_OnStartBinding(IBindStatusCallback* This,DWORD dwReserved,IBinding *pib) {
1634     return This->lpVtbl->OnStartBinding(This,dwReserved,pib);
1635 }
1636 static FORCEINLINE HRESULT IBindStatusCallback_GetPriority(IBindStatusCallback* This,LONG *pnPriority) {
1637     return This->lpVtbl->GetPriority(This,pnPriority);
1638 }
1639 static FORCEINLINE HRESULT IBindStatusCallback_OnLowResource(IBindStatusCallback* This,DWORD reserved) {
1640     return This->lpVtbl->OnLowResource(This,reserved);
1641 }
1642 static FORCEINLINE HRESULT IBindStatusCallback_OnProgress(IBindStatusCallback* This,ULONG ulProgress,ULONG ulProgressMax,ULONG ulStatusCode,LPCWSTR szStatusText) {
1643     return This->lpVtbl->OnProgress(This,ulProgress,ulProgressMax,ulStatusCode,szStatusText);
1644 }
1645 static FORCEINLINE HRESULT IBindStatusCallback_OnStopBinding(IBindStatusCallback* This,HRESULT hresult,LPCWSTR szError) {
1646     return This->lpVtbl->OnStopBinding(This,hresult,szError);
1647 }
1648 static FORCEINLINE HRESULT IBindStatusCallback_GetBindInfo(IBindStatusCallback* This,DWORD *grfBINDF,BINDINFO *pbindinfo) {
1649     return This->lpVtbl->GetBindInfo(This,grfBINDF,pbindinfo);
1650 }
1651 static FORCEINLINE HRESULT IBindStatusCallback_OnDataAvailable(IBindStatusCallback* This,DWORD grfBSCF,DWORD dwSize,FORMATETC *pformatetc,STGMEDIUM *pstgmed) {
1652     return This->lpVtbl->OnDataAvailable(This,grfBSCF,dwSize,pformatetc,pstgmed);
1653 }
1654 static FORCEINLINE HRESULT IBindStatusCallback_OnObjectAvailable(IBindStatusCallback* This,REFIID riid,IUnknown *punk) {
1655     return This->lpVtbl->OnObjectAvailable(This,riid,punk);
1656 }
1657 #endif
1658 #endif
1659 
1660 #endif
1661 
1662 HRESULT STDMETHODCALLTYPE IBindStatusCallback_RemoteGetBindInfo_Proxy(
1663     IBindStatusCallback* This,
1664     DWORD *grfBINDF,
1665     RemBINDINFO *pbindinfo,
1666     RemSTGMEDIUM *pstgmed);
1667 void __RPC_STUB IBindStatusCallback_RemoteGetBindInfo_Stub(
1668     IRpcStubBuffer* This,
1669     IRpcChannelBuffer* pRpcChannelBuffer,
1670     PRPC_MESSAGE pRpcMessage,
1671     DWORD* pdwStubPhase);
1672 HRESULT STDMETHODCALLTYPE IBindStatusCallback_RemoteOnDataAvailable_Proxy(
1673     IBindStatusCallback* This,
1674     DWORD grfBSCF,
1675     DWORD dwSize,
1676     RemFORMATETC *pformatetc,
1677     RemSTGMEDIUM *pstgmed);
1678 void __RPC_STUB IBindStatusCallback_RemoteOnDataAvailable_Stub(
1679     IRpcStubBuffer* This,
1680     IRpcChannelBuffer* pRpcChannelBuffer,
1681     PRPC_MESSAGE pRpcMessage,
1682     DWORD* pdwStubPhase);
1683 HRESULT CALLBACK IBindStatusCallback_GetBindInfo_Proxy(
1684     IBindStatusCallback* This,
1685     DWORD *grfBINDF,
1686     BINDINFO *pbindinfo);
1687 HRESULT __RPC_STUB IBindStatusCallback_GetBindInfo_Stub(
1688     IBindStatusCallback* This,
1689     DWORD *grfBINDF,
1690     RemBINDINFO *pbindinfo,
1691     RemSTGMEDIUM *pstgmed);
1692 HRESULT CALLBACK IBindStatusCallback_OnDataAvailable_Proxy(
1693     IBindStatusCallback* This,
1694     DWORD grfBSCF,
1695     DWORD dwSize,
1696     FORMATETC *pformatetc,
1697     STGMEDIUM *pstgmed);
1698 HRESULT __RPC_STUB IBindStatusCallback_OnDataAvailable_Stub(
1699     IBindStatusCallback* This,
1700     DWORD grfBSCF,
1701     DWORD dwSize,
1702     RemFORMATETC *pformatetc,
1703     RemSTGMEDIUM *pstgmed);
1704 
1705 #endif  /* __IBindStatusCallback_INTERFACE_DEFINED__ */
1706 
1707 #endif
1708 #endif
1709 
1710 #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
1711 #ifndef _LPBINDSTATUSCALLBACKEX_DEFINED
1712 #define _LPBINDSTATUSCALLBACKEX_DEFINED
1713 
1714 /*****************************************************************************
1715  * IBindStatusCallbackEx interface
1716  */
1717 #ifndef __IBindStatusCallbackEx_INTERFACE_DEFINED__
1718 #define __IBindStatusCallbackEx_INTERFACE_DEFINED__
1719 
1720 typedef IBindStatusCallbackEx *LPBINDSTATUSCALLBACKEX;
1721 
1722 typedef enum __WIDL_urlmon_generated_name_00000009 {
1723     BINDF2_DISABLEBASICOVERHTTP = 0x1,
1724     BINDF2_DISABLEAUTOCOOKIEHANDLING = 0x2,
1725     BINDF2_READ_DATA_GREATER_THAN_4GB = 0x4,
1726     BINDF2_DISABLE_HTTP_REDIRECT_XSECURITYID = 0x8,
1727     BINDF2_SETDOWNLOADMODE = 0x20,
1728     BINDF2_DISABLE_HTTP_REDIRECT_CACHING = 0x40,
1729     BINDF2_KEEP_CALLBACK_MODULE_LOADED = 0x80,
1730     BINDF2_ALLOW_PROXY_CRED_PROMPT = 0x100,
1731     BINDF2_RESERVED_F = 0x20000,
1732     BINDF2_RESERVED_E = 0x40000,
1733     BINDF2_RESERVED_D = 0x80000,
1734     BINDF2_RESERVED_C = 0x100000,
1735     BINDF2_RESERVED_B = 0x200000,
1736     BINDF2_RESERVED_A = 0x400000,
1737     BINDF2_RESERVED_9 = 0x800000,
1738     BINDF2_RESERVED_8 = 0x1000000,
1739     BINDF2_RESERVED_7 = 0x2000000,
1740     BINDF2_RESERVED_6 = 0x4000000,
1741     BINDF2_RESERVED_5 = 0x8000000,
1742     BINDF2_RESERVED_4 = 0x10000000,
1743     BINDF2_RESERVED_3 = 0x20000000,
1744     BINDF2_RESERVED_2 = 0x40000000,
1745     BINDF2_RESERVED_1 = 0x80000000
1746 } BINDF2;
1747 
1748 DEFINE_GUID(IID_IBindStatusCallbackEx, 0xaaa74ef9, 0x8ee7, 0x4659, 0x88,0xd9, 0xf8,0xc5,0x04,0xda,0x73,0xcc);
1749 #if defined(__cplusplus) && !defined(CINTERFACE)
1750 MIDL_INTERFACE("aaa74ef9-8ee7-4659-88d9-f8c504da73cc")
1751 IBindStatusCallbackEx : public IBindStatusCallback
1752 {
1753     virtual HRESULT STDMETHODCALLTYPE GetBindInfoEx(
1754         DWORD *grfBINDF,
1755         BINDINFO *pbindinfo,
1756         DWORD *grfBINDF2,
1757         DWORD *pdwReserved) = 0;
1758 
1759 };
1760 #ifdef __CRT_UUID_DECL
1761 __CRT_UUID_DECL(IBindStatusCallbackEx, 0xaaa74ef9, 0x8ee7, 0x4659, 0x88,0xd9, 0xf8,0xc5,0x04,0xda,0x73,0xcc)
1762 #endif
1763 #else
1764 typedef struct IBindStatusCallbackExVtbl {
1765     BEGIN_INTERFACE
1766 
1767     /*** IUnknown methods ***/
1768     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
1769         IBindStatusCallbackEx *This,
1770         REFIID riid,
1771         void **ppvObject);
1772 
1773     ULONG (STDMETHODCALLTYPE *AddRef)(
1774         IBindStatusCallbackEx *This);
1775 
1776     ULONG (STDMETHODCALLTYPE *Release)(
1777         IBindStatusCallbackEx *This);
1778 
1779     /*** IBindStatusCallback methods ***/
1780     HRESULT (STDMETHODCALLTYPE *OnStartBinding)(
1781         IBindStatusCallbackEx *This,
1782         DWORD dwReserved,
1783         IBinding *pib);
1784 
1785     HRESULT (STDMETHODCALLTYPE *GetPriority)(
1786         IBindStatusCallbackEx *This,
1787         LONG *pnPriority);
1788 
1789     HRESULT (STDMETHODCALLTYPE *OnLowResource)(
1790         IBindStatusCallbackEx *This,
1791         DWORD reserved);
1792 
1793     HRESULT (STDMETHODCALLTYPE *OnProgress)(
1794         IBindStatusCallbackEx *This,
1795         ULONG ulProgress,
1796         ULONG ulProgressMax,
1797         ULONG ulStatusCode,
1798         LPCWSTR szStatusText);
1799 
1800     HRESULT (STDMETHODCALLTYPE *OnStopBinding)(
1801         IBindStatusCallbackEx *This,
1802         HRESULT hresult,
1803         LPCWSTR szError);
1804 
1805     HRESULT (STDMETHODCALLTYPE *GetBindInfo)(
1806         IBindStatusCallbackEx *This,
1807         DWORD *grfBINDF,
1808         BINDINFO *pbindinfo);
1809 
1810     HRESULT (STDMETHODCALLTYPE *OnDataAvailable)(
1811         IBindStatusCallbackEx *This,
1812         DWORD grfBSCF,
1813         DWORD dwSize,
1814         FORMATETC *pformatetc,
1815         STGMEDIUM *pstgmed);
1816 
1817     HRESULT (STDMETHODCALLTYPE *OnObjectAvailable)(
1818         IBindStatusCallbackEx *This,
1819         REFIID riid,
1820         IUnknown *punk);
1821 
1822     /*** IBindStatusCallbackEx methods ***/
1823     HRESULT (STDMETHODCALLTYPE *GetBindInfoEx)(
1824         IBindStatusCallbackEx *This,
1825         DWORD *grfBINDF,
1826         BINDINFO *pbindinfo,
1827         DWORD *grfBINDF2,
1828         DWORD *pdwReserved);
1829 
1830     END_INTERFACE
1831 } IBindStatusCallbackExVtbl;
1832 
1833 interface IBindStatusCallbackEx {
1834     CONST_VTBL IBindStatusCallbackExVtbl* lpVtbl;
1835 };
1836 
1837 #ifdef COBJMACROS
1838 #ifndef WIDL_C_INLINE_WRAPPERS
1839 /*** IUnknown methods ***/
1840 #define IBindStatusCallbackEx_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
1841 #define IBindStatusCallbackEx_AddRef(This) (This)->lpVtbl->AddRef(This)
1842 #define IBindStatusCallbackEx_Release(This) (This)->lpVtbl->Release(This)
1843 /*** IBindStatusCallback methods ***/
1844 #define IBindStatusCallbackEx_OnStartBinding(This,dwReserved,pib) (This)->lpVtbl->OnStartBinding(This,dwReserved,pib)
1845 #define IBindStatusCallbackEx_GetPriority(This,pnPriority) (This)->lpVtbl->GetPriority(This,pnPriority)
1846 #define IBindStatusCallbackEx_OnLowResource(This,reserved) (This)->lpVtbl->OnLowResource(This,reserved)
1847 #define IBindStatusCallbackEx_OnProgress(This,ulProgress,ulProgressMax,ulStatusCode,szStatusText) (This)->lpVtbl->OnProgress(This,ulProgress,ulProgressMax,ulStatusCode,szStatusText)
1848 #define IBindStatusCallbackEx_OnStopBinding(This,hresult,szError) (This)->lpVtbl->OnStopBinding(This,hresult,szError)
1849 #define IBindStatusCallbackEx_GetBindInfo(This,grfBINDF,pbindinfo) (This)->lpVtbl->GetBindInfo(This,grfBINDF,pbindinfo)
1850 #define IBindStatusCallbackEx_OnDataAvailable(This,grfBSCF,dwSize,pformatetc,pstgmed) (This)->lpVtbl->OnDataAvailable(This,grfBSCF,dwSize,pformatetc,pstgmed)
1851 #define IBindStatusCallbackEx_OnObjectAvailable(This,riid,punk) (This)->lpVtbl->OnObjectAvailable(This,riid,punk)
1852 /*** IBindStatusCallbackEx methods ***/
1853 #define IBindStatusCallbackEx_GetBindInfoEx(This,grfBINDF,pbindinfo,grfBINDF2,pdwReserved) (This)->lpVtbl->GetBindInfoEx(This,grfBINDF,pbindinfo,grfBINDF2,pdwReserved)
1854 #else
1855 /*** IUnknown methods ***/
1856 static FORCEINLINE HRESULT IBindStatusCallbackEx_QueryInterface(IBindStatusCallbackEx* This,REFIID riid,void **ppvObject) {
1857     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
1858 }
1859 static FORCEINLINE ULONG IBindStatusCallbackEx_AddRef(IBindStatusCallbackEx* This) {
1860     return This->lpVtbl->AddRef(This);
1861 }
1862 static FORCEINLINE ULONG IBindStatusCallbackEx_Release(IBindStatusCallbackEx* This) {
1863     return This->lpVtbl->Release(This);
1864 }
1865 /*** IBindStatusCallback methods ***/
1866 static FORCEINLINE HRESULT IBindStatusCallbackEx_OnStartBinding(IBindStatusCallbackEx* This,DWORD dwReserved,IBinding *pib) {
1867     return This->lpVtbl->OnStartBinding(This,dwReserved,pib);
1868 }
1869 static FORCEINLINE HRESULT IBindStatusCallbackEx_GetPriority(IBindStatusCallbackEx* This,LONG *pnPriority) {
1870     return This->lpVtbl->GetPriority(This,pnPriority);
1871 }
1872 static FORCEINLINE HRESULT IBindStatusCallbackEx_OnLowResource(IBindStatusCallbackEx* This,DWORD reserved) {
1873     return This->lpVtbl->OnLowResource(This,reserved);
1874 }
1875 static FORCEINLINE HRESULT IBindStatusCallbackEx_OnProgress(IBindStatusCallbackEx* This,ULONG ulProgress,ULONG ulProgressMax,ULONG ulStatusCode,LPCWSTR szStatusText) {
1876     return This->lpVtbl->OnProgress(This,ulProgress,ulProgressMax,ulStatusCode,szStatusText);
1877 }
1878 static FORCEINLINE HRESULT IBindStatusCallbackEx_OnStopBinding(IBindStatusCallbackEx* This,HRESULT hresult,LPCWSTR szError) {
1879     return This->lpVtbl->OnStopBinding(This,hresult,szError);
1880 }
1881 static FORCEINLINE HRESULT IBindStatusCallbackEx_GetBindInfo(IBindStatusCallbackEx* This,DWORD *grfBINDF,BINDINFO *pbindinfo) {
1882     return This->lpVtbl->GetBindInfo(This,grfBINDF,pbindinfo);
1883 }
1884 static FORCEINLINE HRESULT IBindStatusCallbackEx_OnDataAvailable(IBindStatusCallbackEx* This,DWORD grfBSCF,DWORD dwSize,FORMATETC *pformatetc,STGMEDIUM *pstgmed) {
1885     return This->lpVtbl->OnDataAvailable(This,grfBSCF,dwSize,pformatetc,pstgmed);
1886 }
1887 static FORCEINLINE HRESULT IBindStatusCallbackEx_OnObjectAvailable(IBindStatusCallbackEx* This,REFIID riid,IUnknown *punk) {
1888     return This->lpVtbl->OnObjectAvailable(This,riid,punk);
1889 }
1890 /*** IBindStatusCallbackEx methods ***/
1891 static FORCEINLINE HRESULT IBindStatusCallbackEx_GetBindInfoEx(IBindStatusCallbackEx* This,DWORD *grfBINDF,BINDINFO *pbindinfo,DWORD *grfBINDF2,DWORD *pdwReserved) {
1892     return This->lpVtbl->GetBindInfoEx(This,grfBINDF,pbindinfo,grfBINDF2,pdwReserved);
1893 }
1894 #endif
1895 #endif
1896 
1897 #endif
1898 
1899 HRESULT STDMETHODCALLTYPE IBindStatusCallbackEx_RemoteGetBindInfoEx_Proxy(
1900     IBindStatusCallbackEx* This,
1901     DWORD *grfBINDF,
1902     RemBINDINFO *pbindinfo,
1903     RemSTGMEDIUM *pstgmed,
1904     DWORD *grfBINDF2,
1905     DWORD *pdwReserved);
1906 void __RPC_STUB IBindStatusCallbackEx_RemoteGetBindInfoEx_Stub(
1907     IRpcStubBuffer* This,
1908     IRpcChannelBuffer* pRpcChannelBuffer,
1909     PRPC_MESSAGE pRpcMessage,
1910     DWORD* pdwStubPhase);
1911 HRESULT CALLBACK IBindStatusCallbackEx_GetBindInfoEx_Proxy(
1912     IBindStatusCallbackEx* This,
1913     DWORD *grfBINDF,
1914     BINDINFO *pbindinfo,
1915     DWORD *grfBINDF2,
1916     DWORD *pdwReserved);
1917 HRESULT __RPC_STUB IBindStatusCallbackEx_GetBindInfoEx_Stub(
1918     IBindStatusCallbackEx* This,
1919     DWORD *grfBINDF,
1920     RemBINDINFO *pbindinfo,
1921     RemSTGMEDIUM *pstgmed,
1922     DWORD *grfBINDF2,
1923     DWORD *pdwReserved);
1924 
1925 #endif  /* __IBindStatusCallbackEx_INTERFACE_DEFINED__ */
1926 
1927 #endif
1928 
1929 #ifndef _LPAUTHENTICATION_DEFINED
1930 #define _LPAUTHENTICATION_DEFINED
1931 
1932 /*****************************************************************************
1933  * IAuthenticate interface
1934  */
1935 #ifndef __IAuthenticate_INTERFACE_DEFINED__
1936 #define __IAuthenticate_INTERFACE_DEFINED__
1937 
1938 typedef IAuthenticate *LPAUTHENTICATION;
1939 
1940 DEFINE_GUID(IID_IAuthenticate, 0x79eac9d0, 0xbaf9, 0x11ce, 0x8c,0x82, 0x00,0xaa,0x00,0x4b,0xa9,0x0b);
1941 #if defined(__cplusplus) && !defined(CINTERFACE)
1942 MIDL_INTERFACE("79eac9d0-baf9-11ce-8c82-00aa004ba90b")
1943 IAuthenticate : public IUnknown
1944 {
1945     virtual HRESULT STDMETHODCALLTYPE Authenticate(
1946         HWND *phwnd,
1947         LPWSTR *pszUsername,
1948         LPWSTR *pszPassword) = 0;
1949 
1950 };
1951 #ifdef __CRT_UUID_DECL
1952 __CRT_UUID_DECL(IAuthenticate, 0x79eac9d0, 0xbaf9, 0x11ce, 0x8c,0x82, 0x00,0xaa,0x00,0x4b,0xa9,0x0b)
1953 #endif
1954 #else
1955 typedef struct IAuthenticateVtbl {
1956     BEGIN_INTERFACE
1957 
1958     /*** IUnknown methods ***/
1959     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
1960         IAuthenticate *This,
1961         REFIID riid,
1962         void **ppvObject);
1963 
1964     ULONG (STDMETHODCALLTYPE *AddRef)(
1965         IAuthenticate *This);
1966 
1967     ULONG (STDMETHODCALLTYPE *Release)(
1968         IAuthenticate *This);
1969 
1970     /*** IAuthenticate methods ***/
1971     HRESULT (STDMETHODCALLTYPE *Authenticate)(
1972         IAuthenticate *This,
1973         HWND *phwnd,
1974         LPWSTR *pszUsername,
1975         LPWSTR *pszPassword);
1976 
1977     END_INTERFACE
1978 } IAuthenticateVtbl;
1979 
1980 interface IAuthenticate {
1981     CONST_VTBL IAuthenticateVtbl* lpVtbl;
1982 };
1983 
1984 #ifdef COBJMACROS
1985 #ifndef WIDL_C_INLINE_WRAPPERS
1986 /*** IUnknown methods ***/
1987 #define IAuthenticate_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
1988 #define IAuthenticate_AddRef(This) (This)->lpVtbl->AddRef(This)
1989 #define IAuthenticate_Release(This) (This)->lpVtbl->Release(This)
1990 /*** IAuthenticate methods ***/
1991 #define IAuthenticate_Authenticate(This,phwnd,pszUsername,pszPassword) (This)->lpVtbl->Authenticate(This,phwnd,pszUsername,pszPassword)
1992 #else
1993 /*** IUnknown methods ***/
1994 static FORCEINLINE HRESULT IAuthenticate_QueryInterface(IAuthenticate* This,REFIID riid,void **ppvObject) {
1995     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
1996 }
1997 static FORCEINLINE ULONG IAuthenticate_AddRef(IAuthenticate* This) {
1998     return This->lpVtbl->AddRef(This);
1999 }
2000 static FORCEINLINE ULONG IAuthenticate_Release(IAuthenticate* This) {
2001     return This->lpVtbl->Release(This);
2002 }
2003 /*** IAuthenticate methods ***/
2004 static FORCEINLINE HRESULT IAuthenticate_Authenticate(IAuthenticate* This,HWND *phwnd,LPWSTR *pszUsername,LPWSTR *pszPassword) {
2005     return This->lpVtbl->Authenticate(This,phwnd,pszUsername,pszPassword);
2006 }
2007 #endif
2008 #endif
2009 
2010 #endif
2011 
2012 
2013 #endif  /* __IAuthenticate_INTERFACE_DEFINED__ */
2014 
2015 #endif
2016 
2017 #ifndef _LPAUTHENTICATIONEX_DEFINED
2018 #define _LPAUTHENTICATIONEX_DEFINED
2019 
2020 /*****************************************************************************
2021  * IAuthenticateEx interface
2022  */
2023 #ifndef __IAuthenticateEx_INTERFACE_DEFINED__
2024 #define __IAuthenticateEx_INTERFACE_DEFINED__
2025 
2026 typedef IAuthenticateEx *LPAUTHENTICATIONEX;
2027 
2028 typedef enum __WIDL_urlmon_generated_name_0000000A {
2029     AUTHENTICATEF_PROXY = 0x1,
2030     AUTHENTICATEF_BASIC = 0x2,
2031     AUTHENTICATEF_HTTP = 0x4
2032 } AUTHENTICATEF;
2033 
2034 typedef struct _tagAUTHENTICATEINFO {
2035     DWORD dwFlags;
2036     DWORD dwReserved;
2037 } AUTHENTICATEINFO;
2038 
2039 DEFINE_GUID(IID_IAuthenticateEx, 0x2ad1edaf, 0xd83d, 0x48b5, 0x9a,0xdf, 0x03,0xdb,0xe1,0x9f,0x53,0xbd);
2040 #if defined(__cplusplus) && !defined(CINTERFACE)
2041 MIDL_INTERFACE("2ad1edaf-d83d-48b5-9adf-03dbe19f53bd")
2042 IAuthenticateEx : public IAuthenticate
2043 {
2044     virtual HRESULT STDMETHODCALLTYPE AuthenticateEx(
2045         HWND *phwnd,
2046         LPWSTR *pszUsername,
2047         LPWSTR *pszPassword,
2048         AUTHENTICATEINFO *pauthinfo) = 0;
2049 
2050 };
2051 #ifdef __CRT_UUID_DECL
2052 __CRT_UUID_DECL(IAuthenticateEx, 0x2ad1edaf, 0xd83d, 0x48b5, 0x9a,0xdf, 0x03,0xdb,0xe1,0x9f,0x53,0xbd)
2053 #endif
2054 #else
2055 typedef struct IAuthenticateExVtbl {
2056     BEGIN_INTERFACE
2057 
2058     /*** IUnknown methods ***/
2059     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
2060         IAuthenticateEx *This,
2061         REFIID riid,
2062         void **ppvObject);
2063 
2064     ULONG (STDMETHODCALLTYPE *AddRef)(
2065         IAuthenticateEx *This);
2066 
2067     ULONG (STDMETHODCALLTYPE *Release)(
2068         IAuthenticateEx *This);
2069 
2070     /*** IAuthenticate methods ***/
2071     HRESULT (STDMETHODCALLTYPE *Authenticate)(
2072         IAuthenticateEx *This,
2073         HWND *phwnd,
2074         LPWSTR *pszUsername,
2075         LPWSTR *pszPassword);
2076 
2077     /*** IAuthenticateEx methods ***/
2078     HRESULT (STDMETHODCALLTYPE *AuthenticateEx)(
2079         IAuthenticateEx *This,
2080         HWND *phwnd,
2081         LPWSTR *pszUsername,
2082         LPWSTR *pszPassword,
2083         AUTHENTICATEINFO *pauthinfo);
2084 
2085     END_INTERFACE
2086 } IAuthenticateExVtbl;
2087 
2088 interface IAuthenticateEx {
2089     CONST_VTBL IAuthenticateExVtbl* lpVtbl;
2090 };
2091 
2092 #ifdef COBJMACROS
2093 #ifndef WIDL_C_INLINE_WRAPPERS
2094 /*** IUnknown methods ***/
2095 #define IAuthenticateEx_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
2096 #define IAuthenticateEx_AddRef(This) (This)->lpVtbl->AddRef(This)
2097 #define IAuthenticateEx_Release(This) (This)->lpVtbl->Release(This)
2098 /*** IAuthenticate methods ***/
2099 #define IAuthenticateEx_Authenticate(This,phwnd,pszUsername,pszPassword) (This)->lpVtbl->Authenticate(This,phwnd,pszUsername,pszPassword)
2100 /*** IAuthenticateEx methods ***/
2101 #define IAuthenticateEx_AuthenticateEx(This,phwnd,pszUsername,pszPassword,pauthinfo) (This)->lpVtbl->AuthenticateEx(This,phwnd,pszUsername,pszPassword,pauthinfo)
2102 #else
2103 /*** IUnknown methods ***/
2104 static FORCEINLINE HRESULT IAuthenticateEx_QueryInterface(IAuthenticateEx* This,REFIID riid,void **ppvObject) {
2105     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
2106 }
2107 static FORCEINLINE ULONG IAuthenticateEx_AddRef(IAuthenticateEx* This) {
2108     return This->lpVtbl->AddRef(This);
2109 }
2110 static FORCEINLINE ULONG IAuthenticateEx_Release(IAuthenticateEx* This) {
2111     return This->lpVtbl->Release(This);
2112 }
2113 /*** IAuthenticate methods ***/
2114 static FORCEINLINE HRESULT IAuthenticateEx_Authenticate(IAuthenticateEx* This,HWND *phwnd,LPWSTR *pszUsername,LPWSTR *pszPassword) {
2115     return This->lpVtbl->Authenticate(This,phwnd,pszUsername,pszPassword);
2116 }
2117 /*** IAuthenticateEx methods ***/
2118 static FORCEINLINE HRESULT IAuthenticateEx_AuthenticateEx(IAuthenticateEx* This,HWND *phwnd,LPWSTR *pszUsername,LPWSTR *pszPassword,AUTHENTICATEINFO *pauthinfo) {
2119     return This->lpVtbl->AuthenticateEx(This,phwnd,pszUsername,pszPassword,pauthinfo);
2120 }
2121 #endif
2122 #endif
2123 
2124 #endif
2125 
2126 
2127 #endif  /* __IAuthenticateEx_INTERFACE_DEFINED__ */
2128 
2129 #endif
2130 
2131 #ifndef _LPHTTPNEGOTIATE_DEFINED
2132 #define _LPHTTPNEGOTIATE_DEFINED
2133 
2134 /*****************************************************************************
2135  * IHttpNegotiate interface
2136  */
2137 #ifndef __IHttpNegotiate_INTERFACE_DEFINED__
2138 #define __IHttpNegotiate_INTERFACE_DEFINED__
2139 
2140 typedef IHttpNegotiate *LPHTTPNEGOTIATE;
2141 
2142 DEFINE_GUID(IID_IHttpNegotiate, 0x79eac9d2, 0xbaf9, 0x11ce, 0x8c,0x82, 0x00,0xaa,0x00,0x4b,0xa9,0x0b);
2143 #if defined(__cplusplus) && !defined(CINTERFACE)
2144 MIDL_INTERFACE("79eac9d2-baf9-11ce-8c82-00aa004ba90b")
2145 IHttpNegotiate : public IUnknown
2146 {
2147     virtual HRESULT STDMETHODCALLTYPE BeginningTransaction(
2148         LPCWSTR szURL,
2149         LPCWSTR szHeaders,
2150         DWORD dwReserved,
2151         LPWSTR *pszAdditionalHeaders) = 0;
2152 
2153     virtual HRESULT STDMETHODCALLTYPE OnResponse(
2154         DWORD dwResponseCode,
2155         LPCWSTR szResponseHeaders,
2156         LPCWSTR szRequestHeaders,
2157         LPWSTR *pszAdditionalRequestHeaders) = 0;
2158 
2159 };
2160 #ifdef __CRT_UUID_DECL
2161 __CRT_UUID_DECL(IHttpNegotiate, 0x79eac9d2, 0xbaf9, 0x11ce, 0x8c,0x82, 0x00,0xaa,0x00,0x4b,0xa9,0x0b)
2162 #endif
2163 #else
2164 typedef struct IHttpNegotiateVtbl {
2165     BEGIN_INTERFACE
2166 
2167     /*** IUnknown methods ***/
2168     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
2169         IHttpNegotiate *This,
2170         REFIID riid,
2171         void **ppvObject);
2172 
2173     ULONG (STDMETHODCALLTYPE *AddRef)(
2174         IHttpNegotiate *This);
2175 
2176     ULONG (STDMETHODCALLTYPE *Release)(
2177         IHttpNegotiate *This);
2178 
2179     /*** IHttpNegotiate methods ***/
2180     HRESULT (STDMETHODCALLTYPE *BeginningTransaction)(
2181         IHttpNegotiate *This,
2182         LPCWSTR szURL,
2183         LPCWSTR szHeaders,
2184         DWORD dwReserved,
2185         LPWSTR *pszAdditionalHeaders);
2186 
2187     HRESULT (STDMETHODCALLTYPE *OnResponse)(
2188         IHttpNegotiate *This,
2189         DWORD dwResponseCode,
2190         LPCWSTR szResponseHeaders,
2191         LPCWSTR szRequestHeaders,
2192         LPWSTR *pszAdditionalRequestHeaders);
2193 
2194     END_INTERFACE
2195 } IHttpNegotiateVtbl;
2196 
2197 interface IHttpNegotiate {
2198     CONST_VTBL IHttpNegotiateVtbl* lpVtbl;
2199 };
2200 
2201 #ifdef COBJMACROS
2202 #ifndef WIDL_C_INLINE_WRAPPERS
2203 /*** IUnknown methods ***/
2204 #define IHttpNegotiate_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
2205 #define IHttpNegotiate_AddRef(This) (This)->lpVtbl->AddRef(This)
2206 #define IHttpNegotiate_Release(This) (This)->lpVtbl->Release(This)
2207 /*** IHttpNegotiate methods ***/
2208 #define IHttpNegotiate_BeginningTransaction(This,szURL,szHeaders,dwReserved,pszAdditionalHeaders) (This)->lpVtbl->BeginningTransaction(This,szURL,szHeaders,dwReserved,pszAdditionalHeaders)
2209 #define IHttpNegotiate_OnResponse(This,dwResponseCode,szResponseHeaders,szRequestHeaders,pszAdditionalRequestHeaders) (This)->lpVtbl->OnResponse(This,dwResponseCode,szResponseHeaders,szRequestHeaders,pszAdditionalRequestHeaders)
2210 #else
2211 /*** IUnknown methods ***/
2212 static FORCEINLINE HRESULT IHttpNegotiate_QueryInterface(IHttpNegotiate* This,REFIID riid,void **ppvObject) {
2213     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
2214 }
2215 static FORCEINLINE ULONG IHttpNegotiate_AddRef(IHttpNegotiate* This) {
2216     return This->lpVtbl->AddRef(This);
2217 }
2218 static FORCEINLINE ULONG IHttpNegotiate_Release(IHttpNegotiate* This) {
2219     return This->lpVtbl->Release(This);
2220 }
2221 /*** IHttpNegotiate methods ***/
2222 static FORCEINLINE HRESULT IHttpNegotiate_BeginningTransaction(IHttpNegotiate* This,LPCWSTR szURL,LPCWSTR szHeaders,DWORD dwReserved,LPWSTR *pszAdditionalHeaders) {
2223     return This->lpVtbl->BeginningTransaction(This,szURL,szHeaders,dwReserved,pszAdditionalHeaders);
2224 }
2225 static FORCEINLINE HRESULT IHttpNegotiate_OnResponse(IHttpNegotiate* This,DWORD dwResponseCode,LPCWSTR szResponseHeaders,LPCWSTR szRequestHeaders,LPWSTR *pszAdditionalRequestHeaders) {
2226     return This->lpVtbl->OnResponse(This,dwResponseCode,szResponseHeaders,szRequestHeaders,pszAdditionalRequestHeaders);
2227 }
2228 #endif
2229 #endif
2230 
2231 #endif
2232 
2233 
2234 #endif  /* __IHttpNegotiate_INTERFACE_DEFINED__ */
2235 
2236 #endif
2237 
2238 #ifndef _LPHTTPNEGOTIATE2_DEFINED
2239 #define _LPHTTPNEGOTIATE2_DEFINED
2240 
2241 /*****************************************************************************
2242  * IHttpNegotiate2 interface
2243  */
2244 #ifndef __IHttpNegotiate2_INTERFACE_DEFINED__
2245 #define __IHttpNegotiate2_INTERFACE_DEFINED__
2246 
2247 typedef IHttpNegotiate2 *LPHTTPNEGOTIATE2;
2248 
2249 DEFINE_GUID(IID_IHttpNegotiate2, 0x4f9f9fcb, 0xe0f4, 0x48eb, 0xb7,0xab, 0xfa,0x2e,0xa9,0x36,0x5c,0xb4);
2250 #if defined(__cplusplus) && !defined(CINTERFACE)
2251 MIDL_INTERFACE("4f9f9fcb-e0f4-48eb-b7ab-fa2ea9365cb4")
2252 IHttpNegotiate2 : public IHttpNegotiate
2253 {
2254     virtual HRESULT STDMETHODCALLTYPE GetRootSecurityId(
2255         BYTE *pbSecurityId,
2256         DWORD *pcbSecurityId,
2257         DWORD_PTR dwReserved) = 0;
2258 
2259 };
2260 #ifdef __CRT_UUID_DECL
2261 __CRT_UUID_DECL(IHttpNegotiate2, 0x4f9f9fcb, 0xe0f4, 0x48eb, 0xb7,0xab, 0xfa,0x2e,0xa9,0x36,0x5c,0xb4)
2262 #endif
2263 #else
2264 typedef struct IHttpNegotiate2Vtbl {
2265     BEGIN_INTERFACE
2266 
2267     /*** IUnknown methods ***/
2268     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
2269         IHttpNegotiate2 *This,
2270         REFIID riid,
2271         void **ppvObject);
2272 
2273     ULONG (STDMETHODCALLTYPE *AddRef)(
2274         IHttpNegotiate2 *This);
2275 
2276     ULONG (STDMETHODCALLTYPE *Release)(
2277         IHttpNegotiate2 *This);
2278 
2279     /*** IHttpNegotiate methods ***/
2280     HRESULT (STDMETHODCALLTYPE *BeginningTransaction)(
2281         IHttpNegotiate2 *This,
2282         LPCWSTR szURL,
2283         LPCWSTR szHeaders,
2284         DWORD dwReserved,
2285         LPWSTR *pszAdditionalHeaders);
2286 
2287     HRESULT (STDMETHODCALLTYPE *OnResponse)(
2288         IHttpNegotiate2 *This,
2289         DWORD dwResponseCode,
2290         LPCWSTR szResponseHeaders,
2291         LPCWSTR szRequestHeaders,
2292         LPWSTR *pszAdditionalRequestHeaders);
2293 
2294     /*** IHttpNegotiate2 methods ***/
2295     HRESULT (STDMETHODCALLTYPE *GetRootSecurityId)(
2296         IHttpNegotiate2 *This,
2297         BYTE *pbSecurityId,
2298         DWORD *pcbSecurityId,
2299         DWORD_PTR dwReserved);
2300 
2301     END_INTERFACE
2302 } IHttpNegotiate2Vtbl;
2303 
2304 interface IHttpNegotiate2 {
2305     CONST_VTBL IHttpNegotiate2Vtbl* lpVtbl;
2306 };
2307 
2308 #ifdef COBJMACROS
2309 #ifndef WIDL_C_INLINE_WRAPPERS
2310 /*** IUnknown methods ***/
2311 #define IHttpNegotiate2_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
2312 #define IHttpNegotiate2_AddRef(This) (This)->lpVtbl->AddRef(This)
2313 #define IHttpNegotiate2_Release(This) (This)->lpVtbl->Release(This)
2314 /*** IHttpNegotiate methods ***/
2315 #define IHttpNegotiate2_BeginningTransaction(This,szURL,szHeaders,dwReserved,pszAdditionalHeaders) (This)->lpVtbl->BeginningTransaction(This,szURL,szHeaders,dwReserved,pszAdditionalHeaders)
2316 #define IHttpNegotiate2_OnResponse(This,dwResponseCode,szResponseHeaders,szRequestHeaders,pszAdditionalRequestHeaders) (This)->lpVtbl->OnResponse(This,dwResponseCode,szResponseHeaders,szRequestHeaders,pszAdditionalRequestHeaders)
2317 /*** IHttpNegotiate2 methods ***/
2318 #define IHttpNegotiate2_GetRootSecurityId(This,pbSecurityId,pcbSecurityId,dwReserved) (This)->lpVtbl->GetRootSecurityId(This,pbSecurityId,pcbSecurityId,dwReserved)
2319 #else
2320 /*** IUnknown methods ***/
2321 static FORCEINLINE HRESULT IHttpNegotiate2_QueryInterface(IHttpNegotiate2* This,REFIID riid,void **ppvObject) {
2322     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
2323 }
2324 static FORCEINLINE ULONG IHttpNegotiate2_AddRef(IHttpNegotiate2* This) {
2325     return This->lpVtbl->AddRef(This);
2326 }
2327 static FORCEINLINE ULONG IHttpNegotiate2_Release(IHttpNegotiate2* This) {
2328     return This->lpVtbl->Release(This);
2329 }
2330 /*** IHttpNegotiate methods ***/
2331 static FORCEINLINE HRESULT IHttpNegotiate2_BeginningTransaction(IHttpNegotiate2* This,LPCWSTR szURL,LPCWSTR szHeaders,DWORD dwReserved,LPWSTR *pszAdditionalHeaders) {
2332     return This->lpVtbl->BeginningTransaction(This,szURL,szHeaders,dwReserved,pszAdditionalHeaders);
2333 }
2334 static FORCEINLINE HRESULT IHttpNegotiate2_OnResponse(IHttpNegotiate2* This,DWORD dwResponseCode,LPCWSTR szResponseHeaders,LPCWSTR szRequestHeaders,LPWSTR *pszAdditionalRequestHeaders) {
2335     return This->lpVtbl->OnResponse(This,dwResponseCode,szResponseHeaders,szRequestHeaders,pszAdditionalRequestHeaders);
2336 }
2337 /*** IHttpNegotiate2 methods ***/
2338 static FORCEINLINE HRESULT IHttpNegotiate2_GetRootSecurityId(IHttpNegotiate2* This,BYTE *pbSecurityId,DWORD *pcbSecurityId,DWORD_PTR dwReserved) {
2339     return This->lpVtbl->GetRootSecurityId(This,pbSecurityId,pcbSecurityId,dwReserved);
2340 }
2341 #endif
2342 #endif
2343 
2344 #endif
2345 
2346 
2347 #endif  /* __IHttpNegotiate2_INTERFACE_DEFINED__ */
2348 
2349 #endif
2350 
2351 #ifndef _LPHTTPNEGOTIATE3_DEFINED
2352 #define _LPHTTPNEGOTIATE3_DEFINED
2353 
2354 /*****************************************************************************
2355  * IHttpNegotiate3 interface
2356  */
2357 #ifndef __IHttpNegotiate3_INTERFACE_DEFINED__
2358 #define __IHttpNegotiate3_INTERFACE_DEFINED__
2359 
2360 typedef IHttpNegotiate3 *LPHTTPNEGOTIATE3;
2361 
2362 DEFINE_GUID(IID_IHttpNegotiate3, 0x57b6c80a, 0x34c2, 0x4602, 0xbc,0x26, 0x66,0xa0,0x2f,0xc5,0x71,0x53);
2363 #if defined(__cplusplus) && !defined(CINTERFACE)
2364 MIDL_INTERFACE("57b6c80a-34c2-4602-bc26-66a02fc57153")
2365 IHttpNegotiate3 : public IHttpNegotiate2
2366 {
2367     virtual HRESULT STDMETHODCALLTYPE GetSerializedClientCertContext(
2368         BYTE **ppbCert,
2369         DWORD *pcbCert) = 0;
2370 
2371 };
2372 #ifdef __CRT_UUID_DECL
2373 __CRT_UUID_DECL(IHttpNegotiate3, 0x57b6c80a, 0x34c2, 0x4602, 0xbc,0x26, 0x66,0xa0,0x2f,0xc5,0x71,0x53)
2374 #endif
2375 #else
2376 typedef struct IHttpNegotiate3Vtbl {
2377     BEGIN_INTERFACE
2378 
2379     /*** IUnknown methods ***/
2380     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
2381         IHttpNegotiate3 *This,
2382         REFIID riid,
2383         void **ppvObject);
2384 
2385     ULONG (STDMETHODCALLTYPE *AddRef)(
2386         IHttpNegotiate3 *This);
2387 
2388     ULONG (STDMETHODCALLTYPE *Release)(
2389         IHttpNegotiate3 *This);
2390 
2391     /*** IHttpNegotiate methods ***/
2392     HRESULT (STDMETHODCALLTYPE *BeginningTransaction)(
2393         IHttpNegotiate3 *This,
2394         LPCWSTR szURL,
2395         LPCWSTR szHeaders,
2396         DWORD dwReserved,
2397         LPWSTR *pszAdditionalHeaders);
2398 
2399     HRESULT (STDMETHODCALLTYPE *OnResponse)(
2400         IHttpNegotiate3 *This,
2401         DWORD dwResponseCode,
2402         LPCWSTR szResponseHeaders,
2403         LPCWSTR szRequestHeaders,
2404         LPWSTR *pszAdditionalRequestHeaders);
2405 
2406     /*** IHttpNegotiate2 methods ***/
2407     HRESULT (STDMETHODCALLTYPE *GetRootSecurityId)(
2408         IHttpNegotiate3 *This,
2409         BYTE *pbSecurityId,
2410         DWORD *pcbSecurityId,
2411         DWORD_PTR dwReserved);
2412 
2413     /*** IHttpNegotiate3 methods ***/
2414     HRESULT (STDMETHODCALLTYPE *GetSerializedClientCertContext)(
2415         IHttpNegotiate3 *This,
2416         BYTE **ppbCert,
2417         DWORD *pcbCert);
2418 
2419     END_INTERFACE
2420 } IHttpNegotiate3Vtbl;
2421 
2422 interface IHttpNegotiate3 {
2423     CONST_VTBL IHttpNegotiate3Vtbl* lpVtbl;
2424 };
2425 
2426 #ifdef COBJMACROS
2427 #ifndef WIDL_C_INLINE_WRAPPERS
2428 /*** IUnknown methods ***/
2429 #define IHttpNegotiate3_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
2430 #define IHttpNegotiate3_AddRef(This) (This)->lpVtbl->AddRef(This)
2431 #define IHttpNegotiate3_Release(This) (This)->lpVtbl->Release(This)
2432 /*** IHttpNegotiate methods ***/
2433 #define IHttpNegotiate3_BeginningTransaction(This,szURL,szHeaders,dwReserved,pszAdditionalHeaders) (This)->lpVtbl->BeginningTransaction(This,szURL,szHeaders,dwReserved,pszAdditionalHeaders)
2434 #define IHttpNegotiate3_OnResponse(This,dwResponseCode,szResponseHeaders,szRequestHeaders,pszAdditionalRequestHeaders) (This)->lpVtbl->OnResponse(This,dwResponseCode,szResponseHeaders,szRequestHeaders,pszAdditionalRequestHeaders)
2435 /*** IHttpNegotiate2 methods ***/
2436 #define IHttpNegotiate3_GetRootSecurityId(This,pbSecurityId,pcbSecurityId,dwReserved) (This)->lpVtbl->GetRootSecurityId(This,pbSecurityId,pcbSecurityId,dwReserved)
2437 /*** IHttpNegotiate3 methods ***/
2438 #define IHttpNegotiate3_GetSerializedClientCertContext(This,ppbCert,pcbCert) (This)->lpVtbl->GetSerializedClientCertContext(This,ppbCert,pcbCert)
2439 #else
2440 /*** IUnknown methods ***/
2441 static FORCEINLINE HRESULT IHttpNegotiate3_QueryInterface(IHttpNegotiate3* This,REFIID riid,void **ppvObject) {
2442     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
2443 }
2444 static FORCEINLINE ULONG IHttpNegotiate3_AddRef(IHttpNegotiate3* This) {
2445     return This->lpVtbl->AddRef(This);
2446 }
2447 static FORCEINLINE ULONG IHttpNegotiate3_Release(IHttpNegotiate3* This) {
2448     return This->lpVtbl->Release(This);
2449 }
2450 /*** IHttpNegotiate methods ***/
2451 static FORCEINLINE HRESULT IHttpNegotiate3_BeginningTransaction(IHttpNegotiate3* This,LPCWSTR szURL,LPCWSTR szHeaders,DWORD dwReserved,LPWSTR *pszAdditionalHeaders) {
2452     return This->lpVtbl->BeginningTransaction(This,szURL,szHeaders,dwReserved,pszAdditionalHeaders);
2453 }
2454 static FORCEINLINE HRESULT IHttpNegotiate3_OnResponse(IHttpNegotiate3* This,DWORD dwResponseCode,LPCWSTR szResponseHeaders,LPCWSTR szRequestHeaders,LPWSTR *pszAdditionalRequestHeaders) {
2455     return This->lpVtbl->OnResponse(This,dwResponseCode,szResponseHeaders,szRequestHeaders,pszAdditionalRequestHeaders);
2456 }
2457 /*** IHttpNegotiate2 methods ***/
2458 static FORCEINLINE HRESULT IHttpNegotiate3_GetRootSecurityId(IHttpNegotiate3* This,BYTE *pbSecurityId,DWORD *pcbSecurityId,DWORD_PTR dwReserved) {
2459     return This->lpVtbl->GetRootSecurityId(This,pbSecurityId,pcbSecurityId,dwReserved);
2460 }
2461 /*** IHttpNegotiate3 methods ***/
2462 static FORCEINLINE HRESULT IHttpNegotiate3_GetSerializedClientCertContext(IHttpNegotiate3* This,BYTE **ppbCert,DWORD *pcbCert) {
2463     return This->lpVtbl->GetSerializedClientCertContext(This,ppbCert,pcbCert);
2464 }
2465 #endif
2466 #endif
2467 
2468 #endif
2469 
2470 
2471 #endif  /* __IHttpNegotiate3_INTERFACE_DEFINED__ */
2472 
2473 #endif
2474 
2475 #ifndef _LPWININETFILESTREAM_DEFINED
2476 #define _LPWININETFILESTREAM_DEFINED
2477 
2478 /*****************************************************************************
2479  * IWinInetFileStream interface
2480  */
2481 #ifndef __IWinInetFileStream_INTERFACE_DEFINED__
2482 #define __IWinInetFileStream_INTERFACE_DEFINED__
2483 
2484 typedef IWinInetFileStream *LPWININETFILESTREAM;
2485 
2486 DEFINE_GUID(IID_IWinInetFileStream, 0xf134c4b7, 0xb1f8, 0x4e75, 0xb8,0x86, 0x74,0xb9,0x09,0x43,0xbe,0xcb);
2487 #if defined(__cplusplus) && !defined(CINTERFACE)
2488 MIDL_INTERFACE("f134c4b7-b1f8-4e75-b886-74b90943becb")
2489 IWinInetFileStream : public IUnknown
2490 {
2491     virtual HRESULT STDMETHODCALLTYPE SetHandleForUnlock(
2492         DWORD_PTR hWinInetLockHandle,
2493         DWORD_PTR dwReserved) = 0;
2494 
2495     virtual HRESULT STDMETHODCALLTYPE SetDeleteFile(
2496         DWORD_PTR dwReserved) = 0;
2497 
2498 };
2499 #ifdef __CRT_UUID_DECL
2500 __CRT_UUID_DECL(IWinInetFileStream, 0xf134c4b7, 0xb1f8, 0x4e75, 0xb8,0x86, 0x74,0xb9,0x09,0x43,0xbe,0xcb)
2501 #endif
2502 #else
2503 typedef struct IWinInetFileStreamVtbl {
2504     BEGIN_INTERFACE
2505 
2506     /*** IUnknown methods ***/
2507     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
2508         IWinInetFileStream *This,
2509         REFIID riid,
2510         void **ppvObject);
2511 
2512     ULONG (STDMETHODCALLTYPE *AddRef)(
2513         IWinInetFileStream *This);
2514 
2515     ULONG (STDMETHODCALLTYPE *Release)(
2516         IWinInetFileStream *This);
2517 
2518     /*** IWinInetFileStream methods ***/
2519     HRESULT (STDMETHODCALLTYPE *SetHandleForUnlock)(
2520         IWinInetFileStream *This,
2521         DWORD_PTR hWinInetLockHandle,
2522         DWORD_PTR dwReserved);
2523 
2524     HRESULT (STDMETHODCALLTYPE *SetDeleteFile)(
2525         IWinInetFileStream *This,
2526         DWORD_PTR dwReserved);
2527 
2528     END_INTERFACE
2529 } IWinInetFileStreamVtbl;
2530 
2531 interface IWinInetFileStream {
2532     CONST_VTBL IWinInetFileStreamVtbl* lpVtbl;
2533 };
2534 
2535 #ifdef COBJMACROS
2536 #ifndef WIDL_C_INLINE_WRAPPERS
2537 /*** IUnknown methods ***/
2538 #define IWinInetFileStream_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
2539 #define IWinInetFileStream_AddRef(This) (This)->lpVtbl->AddRef(This)
2540 #define IWinInetFileStream_Release(This) (This)->lpVtbl->Release(This)
2541 /*** IWinInetFileStream methods ***/
2542 #define IWinInetFileStream_SetHandleForUnlock(This,hWinInetLockHandle,dwReserved) (This)->lpVtbl->SetHandleForUnlock(This,hWinInetLockHandle,dwReserved)
2543 #define IWinInetFileStream_SetDeleteFile(This,dwReserved) (This)->lpVtbl->SetDeleteFile(This,dwReserved)
2544 #else
2545 /*** IUnknown methods ***/
2546 static FORCEINLINE HRESULT IWinInetFileStream_QueryInterface(IWinInetFileStream* This,REFIID riid,void **ppvObject) {
2547     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
2548 }
2549 static FORCEINLINE ULONG IWinInetFileStream_AddRef(IWinInetFileStream* This) {
2550     return This->lpVtbl->AddRef(This);
2551 }
2552 static FORCEINLINE ULONG IWinInetFileStream_Release(IWinInetFileStream* This) {
2553     return This->lpVtbl->Release(This);
2554 }
2555 /*** IWinInetFileStream methods ***/
2556 static FORCEINLINE HRESULT IWinInetFileStream_SetHandleForUnlock(IWinInetFileStream* This,DWORD_PTR hWinInetLockHandle,DWORD_PTR dwReserved) {
2557     return This->lpVtbl->SetHandleForUnlock(This,hWinInetLockHandle,dwReserved);
2558 }
2559 static FORCEINLINE HRESULT IWinInetFileStream_SetDeleteFile(IWinInetFileStream* This,DWORD_PTR dwReserved) {
2560     return This->lpVtbl->SetDeleteFile(This,dwReserved);
2561 }
2562 #endif
2563 #endif
2564 
2565 #endif
2566 
2567 
2568 #endif  /* __IWinInetFileStream_INTERFACE_DEFINED__ */
2569 
2570 #endif
2571 
2572 #ifndef _LPWINDOWFORBINDINGUI_DEFINED
2573 #define _LPWINDOWFORBINDINGUI_DEFINED
2574 
2575 /*****************************************************************************
2576  * IWindowForBindingUI interface
2577  */
2578 #ifndef __IWindowForBindingUI_INTERFACE_DEFINED__
2579 #define __IWindowForBindingUI_INTERFACE_DEFINED__
2580 
2581 typedef IWindowForBindingUI *LPWINDOWFORBINDINGUI;
2582 
2583 DEFINE_GUID(IID_IWindowForBindingUI, 0x79eac9d5, 0xbafa, 0x11ce, 0x8c,0x82, 0x00,0xaa,0x00,0x4b,0xa9,0x0b);
2584 #if defined(__cplusplus) && !defined(CINTERFACE)
2585 MIDL_INTERFACE("79eac9d5-bafa-11ce-8c82-00aa004ba90b")
2586 IWindowForBindingUI : public IUnknown
2587 {
2588     virtual HRESULT STDMETHODCALLTYPE GetWindow(
2589         REFGUID rguidReason,
2590         HWND *phwnd) = 0;
2591 
2592 };
2593 #ifdef __CRT_UUID_DECL
2594 __CRT_UUID_DECL(IWindowForBindingUI, 0x79eac9d5, 0xbafa, 0x11ce, 0x8c,0x82, 0x00,0xaa,0x00,0x4b,0xa9,0x0b)
2595 #endif
2596 #else
2597 typedef struct IWindowForBindingUIVtbl {
2598     BEGIN_INTERFACE
2599 
2600     /*** IUnknown methods ***/
2601     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
2602         IWindowForBindingUI *This,
2603         REFIID riid,
2604         void **ppvObject);
2605 
2606     ULONG (STDMETHODCALLTYPE *AddRef)(
2607         IWindowForBindingUI *This);
2608 
2609     ULONG (STDMETHODCALLTYPE *Release)(
2610         IWindowForBindingUI *This);
2611 
2612     /*** IWindowForBindingUI methods ***/
2613     HRESULT (STDMETHODCALLTYPE *GetWindow)(
2614         IWindowForBindingUI *This,
2615         REFGUID rguidReason,
2616         HWND *phwnd);
2617 
2618     END_INTERFACE
2619 } IWindowForBindingUIVtbl;
2620 
2621 interface IWindowForBindingUI {
2622     CONST_VTBL IWindowForBindingUIVtbl* lpVtbl;
2623 };
2624 
2625 #ifdef COBJMACROS
2626 #ifndef WIDL_C_INLINE_WRAPPERS
2627 /*** IUnknown methods ***/
2628 #define IWindowForBindingUI_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
2629 #define IWindowForBindingUI_AddRef(This) (This)->lpVtbl->AddRef(This)
2630 #define IWindowForBindingUI_Release(This) (This)->lpVtbl->Release(This)
2631 /*** IWindowForBindingUI methods ***/
2632 #define IWindowForBindingUI_GetWindow(This,rguidReason,phwnd) (This)->lpVtbl->GetWindow(This,rguidReason,phwnd)
2633 #else
2634 /*** IUnknown methods ***/
2635 static FORCEINLINE HRESULT IWindowForBindingUI_QueryInterface(IWindowForBindingUI* This,REFIID riid,void **ppvObject) {
2636     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
2637 }
2638 static FORCEINLINE ULONG IWindowForBindingUI_AddRef(IWindowForBindingUI* This) {
2639     return This->lpVtbl->AddRef(This);
2640 }
2641 static FORCEINLINE ULONG IWindowForBindingUI_Release(IWindowForBindingUI* This) {
2642     return This->lpVtbl->Release(This);
2643 }
2644 /*** IWindowForBindingUI methods ***/
2645 static FORCEINLINE HRESULT IWindowForBindingUI_GetWindow(IWindowForBindingUI* This,REFGUID rguidReason,HWND *phwnd) {
2646     return This->lpVtbl->GetWindow(This,rguidReason,phwnd);
2647 }
2648 #endif
2649 #endif
2650 
2651 #endif
2652 
2653 
2654 #endif  /* __IWindowForBindingUI_INTERFACE_DEFINED__ */
2655 
2656 #endif
2657 
2658 #ifndef _LPCODEINSTALL_DEFINED
2659 #define _LPCODEINSTALL_DEFINED
2660 
2661 /*****************************************************************************
2662  * ICodeInstall interface
2663  */
2664 #ifndef __ICodeInstall_INTERFACE_DEFINED__
2665 #define __ICodeInstall_INTERFACE_DEFINED__
2666 
2667 typedef ICodeInstall *LPCODEINSTALL;
2668 
2669 typedef enum __WIDL_urlmon_generated_name_0000000B {
2670     CIP_DISK_FULL = 0,
2671     CIP_ACCESS_DENIED = 1,
2672     CIP_NEWER_VERSION_EXISTS = 2,
2673     CIP_OLDER_VERSION_EXISTS = 3,
2674     CIP_NAME_CONFLICT = 4,
2675     CIP_TRUST_VERIFICATION_COMPONENT_MISSING = 5,
2676     CIP_EXE_SELF_REGISTERATION_TIMEOUT = 6,
2677     CIP_UNSAFE_TO_ABORT = 7,
2678     CIP_NEED_REBOOT = 8,
2679     CIP_NEED_REBOOT_UI_PERMISSION = 9
2680 } CIP_STATUS;
2681 
2682 DEFINE_GUID(IID_ICodeInstall, 0x79eac9d1, 0xbaf9, 0x11ce, 0x8c,0x82, 0x00,0xaa,0x00,0x4b,0xa9,0x0b);
2683 #if defined(__cplusplus) && !defined(CINTERFACE)
2684 MIDL_INTERFACE("79eac9d1-baf9-11ce-8c82-00aa004ba90b")
2685 ICodeInstall : public IWindowForBindingUI
2686 {
2687     virtual HRESULT STDMETHODCALLTYPE OnCodeInstallProblem(
2688         ULONG ulStatusCode,
2689         LPCWSTR szDestination,
2690         LPCWSTR szSource,
2691         DWORD dwReserved) = 0;
2692 
2693 };
2694 #ifdef __CRT_UUID_DECL
2695 __CRT_UUID_DECL(ICodeInstall, 0x79eac9d1, 0xbaf9, 0x11ce, 0x8c,0x82, 0x00,0xaa,0x00,0x4b,0xa9,0x0b)
2696 #endif
2697 #else
2698 typedef struct ICodeInstallVtbl {
2699     BEGIN_INTERFACE
2700 
2701     /*** IUnknown methods ***/
2702     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
2703         ICodeInstall *This,
2704         REFIID riid,
2705         void **ppvObject);
2706 
2707     ULONG (STDMETHODCALLTYPE *AddRef)(
2708         ICodeInstall *This);
2709 
2710     ULONG (STDMETHODCALLTYPE *Release)(
2711         ICodeInstall *This);
2712 
2713     /*** IWindowForBindingUI methods ***/
2714     HRESULT (STDMETHODCALLTYPE *GetWindow)(
2715         ICodeInstall *This,
2716         REFGUID rguidReason,
2717         HWND *phwnd);
2718 
2719     /*** ICodeInstall methods ***/
2720     HRESULT (STDMETHODCALLTYPE *OnCodeInstallProblem)(
2721         ICodeInstall *This,
2722         ULONG ulStatusCode,
2723         LPCWSTR szDestination,
2724         LPCWSTR szSource,
2725         DWORD dwReserved);
2726 
2727     END_INTERFACE
2728 } ICodeInstallVtbl;
2729 
2730 interface ICodeInstall {
2731     CONST_VTBL ICodeInstallVtbl* lpVtbl;
2732 };
2733 
2734 #ifdef COBJMACROS
2735 #ifndef WIDL_C_INLINE_WRAPPERS
2736 /*** IUnknown methods ***/
2737 #define ICodeInstall_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
2738 #define ICodeInstall_AddRef(This) (This)->lpVtbl->AddRef(This)
2739 #define ICodeInstall_Release(This) (This)->lpVtbl->Release(This)
2740 /*** IWindowForBindingUI methods ***/
2741 #define ICodeInstall_GetWindow(This,rguidReason,phwnd) (This)->lpVtbl->GetWindow(This,rguidReason,phwnd)
2742 /*** ICodeInstall methods ***/
2743 #define ICodeInstall_OnCodeInstallProblem(This,ulStatusCode,szDestination,szSource,dwReserved) (This)->lpVtbl->OnCodeInstallProblem(This,ulStatusCode,szDestination,szSource,dwReserved)
2744 #else
2745 /*** IUnknown methods ***/
2746 static FORCEINLINE HRESULT ICodeInstall_QueryInterface(ICodeInstall* This,REFIID riid,void **ppvObject) {
2747     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
2748 }
2749 static FORCEINLINE ULONG ICodeInstall_AddRef(ICodeInstall* This) {
2750     return This->lpVtbl->AddRef(This);
2751 }
2752 static FORCEINLINE ULONG ICodeInstall_Release(ICodeInstall* This) {
2753     return This->lpVtbl->Release(This);
2754 }
2755 /*** IWindowForBindingUI methods ***/
2756 static FORCEINLINE HRESULT ICodeInstall_GetWindow(ICodeInstall* This,REFGUID rguidReason,HWND *phwnd) {
2757     return This->lpVtbl->GetWindow(This,rguidReason,phwnd);
2758 }
2759 /*** ICodeInstall methods ***/
2760 static FORCEINLINE HRESULT ICodeInstall_OnCodeInstallProblem(ICodeInstall* This,ULONG ulStatusCode,LPCWSTR szDestination,LPCWSTR szSource,DWORD dwReserved) {
2761     return This->lpVtbl->OnCodeInstallProblem(This,ulStatusCode,szDestination,szSource,dwReserved);
2762 }
2763 #endif
2764 #endif
2765 
2766 #endif
2767 
2768 
2769 #endif  /* __ICodeInstall_INTERFACE_DEFINED__ */
2770 
2771 #endif
2772 #endif
2773 
2774 #if (_WIN32_IE >= _WIN32_IE_IE70)
2775 #ifndef _LPUri_DEFINED
2776 #define _LPUri_DEFINED
2777 #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP)
2778 /*****************************************************************************
2779  * IUri interface
2780  */
2781 #ifndef __IUri_INTERFACE_DEFINED__
2782 #define __IUri_INTERFACE_DEFINED__
2783 
2784 typedef enum __WIDL_urlmon_generated_name_0000000C {
2785     Uri_PROPERTY_ABSOLUTE_URI = 0,
2786     Uri_PROPERTY_STRING_START = Uri_PROPERTY_ABSOLUTE_URI,
2787     Uri_PROPERTY_AUTHORITY = 1,
2788     Uri_PROPERTY_DISPLAY_URI = 2,
2789     Uri_PROPERTY_DOMAIN = 3,
2790     Uri_PROPERTY_EXTENSION = 4,
2791     Uri_PROPERTY_FRAGMENT = 5,
2792     Uri_PROPERTY_HOST = 6,
2793     Uri_PROPERTY_PASSWORD = 7,
2794     Uri_PROPERTY_PATH = 8,
2795     Uri_PROPERTY_PATH_AND_QUERY = 9,
2796     Uri_PROPERTY_QUERY = 10,
2797     Uri_PROPERTY_RAW_URI = 11,
2798     Uri_PROPERTY_SCHEME_NAME = 12,
2799     Uri_PROPERTY_USER_INFO = 13,
2800     Uri_PROPERTY_USER_NAME = 14,
2801     Uri_PROPERTY_STRING_LAST = Uri_PROPERTY_USER_NAME,
2802     Uri_PROPERTY_HOST_TYPE = 15,
2803     Uri_PROPERTY_DWORD_START = Uri_PROPERTY_HOST_TYPE,
2804     Uri_PROPERTY_PORT = 16,
2805     Uri_PROPERTY_SCHEME = 17,
2806     Uri_PROPERTY_ZONE = 18,
2807     Uri_PROPERTY_DWORD_LAST = Uri_PROPERTY_ZONE
2808 } Uri_PROPERTY;
2809 
2810 typedef enum __WIDL_urlmon_generated_name_0000000D {
2811     Uri_HOST_UNKNOWN = 0,
2812     Uri_HOST_DNS = 1,
2813     Uri_HOST_IPV4 = 2,
2814     Uri_HOST_IPV6 = 3,
2815     Uri_HOST_IDN = 4
2816 } Uri_HOST_TYPE;
2817 
2818 DEFINE_GUID(IID_IUri, 0xa39ee748, 0x6a27, 0x4817, 0xa6,0xf2, 0x13,0x91,0x4b,0xef,0x58,0x90);
2819 #if defined(__cplusplus) && !defined(CINTERFACE)
2820 MIDL_INTERFACE("a39ee748-6a27-4817-a6f2-13914bef5890")
2821 IUri : public IUnknown
2822 {
2823     virtual HRESULT STDMETHODCALLTYPE GetPropertyBSTR(
2824         Uri_PROPERTY uriProp,
2825         BSTR *pbstrProperty,
2826         DWORD dwFlags) = 0;
2827 
2828     virtual HRESULT STDMETHODCALLTYPE GetPropertyLength(
2829         Uri_PROPERTY uriProp,
2830         DWORD *pcchProperty,
2831         DWORD dwFlags) = 0;
2832 
2833     virtual HRESULT STDMETHODCALLTYPE GetPropertyDWORD(
2834         Uri_PROPERTY uriProp,
2835         DWORD *pdwProperty,
2836         DWORD dwFlags) = 0;
2837 
2838     virtual HRESULT STDMETHODCALLTYPE HasProperty(
2839         Uri_PROPERTY uriProp,
2840         WINBOOL *pfHasProperty) = 0;
2841 
2842     virtual HRESULT STDMETHODCALLTYPE GetAbsoluteUri(
2843         BSTR *pbstrAbsoluteUri) = 0;
2844 
2845     virtual HRESULT STDMETHODCALLTYPE GetAuthority(
2846         BSTR *pbstrAuthority) = 0;
2847 
2848     virtual HRESULT STDMETHODCALLTYPE GetDisplayUri(
2849         BSTR *pbstrDisplayString) = 0;
2850 
2851     virtual HRESULT STDMETHODCALLTYPE GetDomain(
2852         BSTR *pbstrDomain) = 0;
2853 
2854     virtual HRESULT STDMETHODCALLTYPE GetExtension(
2855         BSTR *pbstrExtension) = 0;
2856 
2857     virtual HRESULT STDMETHODCALLTYPE GetFragment(
2858         BSTR *pbstrFragment) = 0;
2859 
2860     virtual HRESULT STDMETHODCALLTYPE GetHost(
2861         BSTR *pbstrHost) = 0;
2862 
2863     virtual HRESULT STDMETHODCALLTYPE GetPassword(
2864         BSTR *pbstrPassword) = 0;
2865 
2866     virtual HRESULT STDMETHODCALLTYPE GetPath(
2867         BSTR *pbstrPath) = 0;
2868 
2869     virtual HRESULT STDMETHODCALLTYPE GetPathAndQuery(
2870         BSTR *pbstrPathAndQuery) = 0;
2871 
2872     virtual HRESULT STDMETHODCALLTYPE GetQuery(
2873         BSTR *pbstrQuery) = 0;
2874 
2875     virtual HRESULT STDMETHODCALLTYPE GetRawUri(
2876         BSTR *pbstrRawUri) = 0;
2877 
2878     virtual HRESULT STDMETHODCALLTYPE GetSchemeName(
2879         BSTR *pbstrSchemeName) = 0;
2880 
2881     virtual HRESULT STDMETHODCALLTYPE GetUserInfo(
2882         BSTR *pbstrUserInfo) = 0;
2883 
2884     virtual HRESULT STDMETHODCALLTYPE GetUserName(
2885         BSTR *pbstrUserName) = 0;
2886 
2887     virtual HRESULT STDMETHODCALLTYPE GetHostType(
2888         DWORD *pdwHostType) = 0;
2889 
2890     virtual HRESULT STDMETHODCALLTYPE GetPort(
2891         DWORD *pdwPort) = 0;
2892 
2893     virtual HRESULT STDMETHODCALLTYPE GetScheme(
2894         DWORD *pdwScheme) = 0;
2895 
2896     virtual HRESULT STDMETHODCALLTYPE GetZone(
2897         DWORD *pdwZone) = 0;
2898 
2899     virtual HRESULT STDMETHODCALLTYPE GetProperties(
2900         LPDWORD pdwFlags) = 0;
2901 
2902     virtual HRESULT STDMETHODCALLTYPE IsEqual(
2903         IUri *pUri,
2904         WINBOOL *pfEqual) = 0;
2905 
2906 };
2907 #ifdef __CRT_UUID_DECL
2908 __CRT_UUID_DECL(IUri, 0xa39ee748, 0x6a27, 0x4817, 0xa6,0xf2, 0x13,0x91,0x4b,0xef,0x58,0x90)
2909 #endif
2910 #else
2911 typedef struct IUriVtbl {
2912     BEGIN_INTERFACE
2913 
2914     /*** IUnknown methods ***/
2915     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
2916         IUri *This,
2917         REFIID riid,
2918         void **ppvObject);
2919 
2920     ULONG (STDMETHODCALLTYPE *AddRef)(
2921         IUri *This);
2922 
2923     ULONG (STDMETHODCALLTYPE *Release)(
2924         IUri *This);
2925 
2926     /*** IUri methods ***/
2927     HRESULT (STDMETHODCALLTYPE *GetPropertyBSTR)(
2928         IUri *This,
2929         Uri_PROPERTY uriProp,
2930         BSTR *pbstrProperty,
2931         DWORD dwFlags);
2932 
2933     HRESULT (STDMETHODCALLTYPE *GetPropertyLength)(
2934         IUri *This,
2935         Uri_PROPERTY uriProp,
2936         DWORD *pcchProperty,
2937         DWORD dwFlags);
2938 
2939     HRESULT (STDMETHODCALLTYPE *GetPropertyDWORD)(
2940         IUri *This,
2941         Uri_PROPERTY uriProp,
2942         DWORD *pdwProperty,
2943         DWORD dwFlags);
2944 
2945     HRESULT (STDMETHODCALLTYPE *HasProperty)(
2946         IUri *This,
2947         Uri_PROPERTY uriProp,
2948         WINBOOL *pfHasProperty);
2949 
2950     HRESULT (STDMETHODCALLTYPE *GetAbsoluteUri)(
2951         IUri *This,
2952         BSTR *pbstrAbsoluteUri);
2953 
2954     HRESULT (STDMETHODCALLTYPE *GetAuthority)(
2955         IUri *This,
2956         BSTR *pbstrAuthority);
2957 
2958     HRESULT (STDMETHODCALLTYPE *GetDisplayUri)(
2959         IUri *This,
2960         BSTR *pbstrDisplayString);
2961 
2962     HRESULT (STDMETHODCALLTYPE *GetDomain)(
2963         IUri *This,
2964         BSTR *pbstrDomain);
2965 
2966     HRESULT (STDMETHODCALLTYPE *GetExtension)(
2967         IUri *This,
2968         BSTR *pbstrExtension);
2969 
2970     HRESULT (STDMETHODCALLTYPE *GetFragment)(
2971         IUri *This,
2972         BSTR *pbstrFragment);
2973 
2974     HRESULT (STDMETHODCALLTYPE *GetHost)(
2975         IUri *This,
2976         BSTR *pbstrHost);
2977 
2978     HRESULT (STDMETHODCALLTYPE *GetPassword)(
2979         IUri *This,
2980         BSTR *pbstrPassword);
2981 
2982     HRESULT (STDMETHODCALLTYPE *GetPath)(
2983         IUri *This,
2984         BSTR *pbstrPath);
2985 
2986     HRESULT (STDMETHODCALLTYPE *GetPathAndQuery)(
2987         IUri *This,
2988         BSTR *pbstrPathAndQuery);
2989 
2990     HRESULT (STDMETHODCALLTYPE *GetQuery)(
2991         IUri *This,
2992         BSTR *pbstrQuery);
2993 
2994     HRESULT (STDMETHODCALLTYPE *GetRawUri)(
2995         IUri *This,
2996         BSTR *pbstrRawUri);
2997 
2998     HRESULT (STDMETHODCALLTYPE *GetSchemeName)(
2999         IUri *This,
3000         BSTR *pbstrSchemeName);
3001 
3002     HRESULT (STDMETHODCALLTYPE *GetUserInfo)(
3003         IUri *This,
3004         BSTR *pbstrUserInfo);
3005 
3006     HRESULT (STDMETHODCALLTYPE *GetUserName)(
3007         IUri *This,
3008         BSTR *pbstrUserName);
3009 
3010     HRESULT (STDMETHODCALLTYPE *GetHostType)(
3011         IUri *This,
3012         DWORD *pdwHostType);
3013 
3014     HRESULT (STDMETHODCALLTYPE *GetPort)(
3015         IUri *This,
3016         DWORD *pdwPort);
3017 
3018     HRESULT (STDMETHODCALLTYPE *GetScheme)(
3019         IUri *This,
3020         DWORD *pdwScheme);
3021 
3022     HRESULT (STDMETHODCALLTYPE *GetZone)(
3023         IUri *This,
3024         DWORD *pdwZone);
3025 
3026     HRESULT (STDMETHODCALLTYPE *GetProperties)(
3027         IUri *This,
3028         LPDWORD pdwFlags);
3029 
3030     HRESULT (STDMETHODCALLTYPE *IsEqual)(
3031         IUri *This,
3032         IUri *pUri,
3033         WINBOOL *pfEqual);
3034 
3035     END_INTERFACE
3036 } IUriVtbl;
3037 
3038 interface IUri {
3039     CONST_VTBL IUriVtbl* lpVtbl;
3040 };
3041 
3042 #ifdef COBJMACROS
3043 #ifndef WIDL_C_INLINE_WRAPPERS
3044 /*** IUnknown methods ***/
3045 #define IUri_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
3046 #define IUri_AddRef(This) (This)->lpVtbl->AddRef(This)
3047 #define IUri_Release(This) (This)->lpVtbl->Release(This)
3048 /*** IUri methods ***/
3049 #define IUri_GetPropertyBSTR(This,uriProp,pbstrProperty,dwFlags) (This)->lpVtbl->GetPropertyBSTR(This,uriProp,pbstrProperty,dwFlags)
3050 #define IUri_GetPropertyLength(This,uriProp,pcchProperty,dwFlags) (This)->lpVtbl->GetPropertyLength(This,uriProp,pcchProperty,dwFlags)
3051 #define IUri_GetPropertyDWORD(This,uriProp,pdwProperty,dwFlags) (This)->lpVtbl->GetPropertyDWORD(This,uriProp,pdwProperty,dwFlags)
3052 #define IUri_HasProperty(This,uriProp,pfHasProperty) (This)->lpVtbl->HasProperty(This,uriProp,pfHasProperty)
3053 #define IUri_GetAbsoluteUri(This,pbstrAbsoluteUri) (This)->lpVtbl->GetAbsoluteUri(This,pbstrAbsoluteUri)
3054 #define IUri_GetAuthority(This,pbstrAuthority) (This)->lpVtbl->GetAuthority(This,pbstrAuthority)
3055 #define IUri_GetDisplayUri(This,pbstrDisplayString) (This)->lpVtbl->GetDisplayUri(This,pbstrDisplayString)
3056 #define IUri_GetDomain(This,pbstrDomain) (This)->lpVtbl->GetDomain(This,pbstrDomain)
3057 #define IUri_GetExtension(This,pbstrExtension) (This)->lpVtbl->GetExtension(This,pbstrExtension)
3058 #define IUri_GetFragment(This,pbstrFragment) (This)->lpVtbl->GetFragment(This,pbstrFragment)
3059 #define IUri_GetHost(This,pbstrHost) (This)->lpVtbl->GetHost(This,pbstrHost)
3060 #define IUri_GetPassword(This,pbstrPassword) (This)->lpVtbl->GetPassword(This,pbstrPassword)
3061 #define IUri_GetPath(This,pbstrPath) (This)->lpVtbl->GetPath(This,pbstrPath)
3062 #define IUri_GetPathAndQuery(This,pbstrPathAndQuery) (This)->lpVtbl->GetPathAndQuery(This,pbstrPathAndQuery)
3063 #define IUri_GetQuery(This,pbstrQuery) (This)->lpVtbl->GetQuery(This,pbstrQuery)
3064 #define IUri_GetRawUri(This,pbstrRawUri) (This)->lpVtbl->GetRawUri(This,pbstrRawUri)
3065 #define IUri_GetSchemeName(This,pbstrSchemeName) (This)->lpVtbl->GetSchemeName(This,pbstrSchemeName)
3066 #define IUri_GetUserInfo(This,pbstrUserInfo) (This)->lpVtbl->GetUserInfo(This,pbstrUserInfo)
3067 #define IUri_GetUserName(This,pbstrUserName) (This)->lpVtbl->GetUserName(This,pbstrUserName)
3068 #define IUri_GetHostType(This,pdwHostType) (This)->lpVtbl->GetHostType(This,pdwHostType)
3069 #define IUri_GetPort(This,pdwPort) (This)->lpVtbl->GetPort(This,pdwPort)
3070 #define IUri_GetScheme(This,pdwScheme) (This)->lpVtbl->GetScheme(This,pdwScheme)
3071 #define IUri_GetZone(This,pdwZone) (This)->lpVtbl->GetZone(This,pdwZone)
3072 #define IUri_GetProperties(This,pdwFlags) (This)->lpVtbl->GetProperties(This,pdwFlags)
3073 #define IUri_IsEqual(This,pUri,pfEqual) (This)->lpVtbl->IsEqual(This,pUri,pfEqual)
3074 #else
3075 /*** IUnknown methods ***/
3076 static FORCEINLINE HRESULT IUri_QueryInterface(IUri* This,REFIID riid,void **ppvObject) {
3077     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
3078 }
3079 static FORCEINLINE ULONG IUri_AddRef(IUri* This) {
3080     return This->lpVtbl->AddRef(This);
3081 }
3082 static FORCEINLINE ULONG IUri_Release(IUri* This) {
3083     return This->lpVtbl->Release(This);
3084 }
3085 /*** IUri methods ***/
3086 static FORCEINLINE HRESULT IUri_GetPropertyBSTR(IUri* This,Uri_PROPERTY uriProp,BSTR *pbstrProperty,DWORD dwFlags) {
3087     return This->lpVtbl->GetPropertyBSTR(This,uriProp,pbstrProperty,dwFlags);
3088 }
3089 static FORCEINLINE HRESULT IUri_GetPropertyLength(IUri* This,Uri_PROPERTY uriProp,DWORD *pcchProperty,DWORD dwFlags) {
3090     return This->lpVtbl->GetPropertyLength(This,uriProp,pcchProperty,dwFlags);
3091 }
3092 static FORCEINLINE HRESULT IUri_GetPropertyDWORD(IUri* This,Uri_PROPERTY uriProp,DWORD *pdwProperty,DWORD dwFlags) {
3093     return This->lpVtbl->GetPropertyDWORD(This,uriProp,pdwProperty,dwFlags);
3094 }
3095 static FORCEINLINE HRESULT IUri_HasProperty(IUri* This,Uri_PROPERTY uriProp,WINBOOL *pfHasProperty) {
3096     return This->lpVtbl->HasProperty(This,uriProp,pfHasProperty);
3097 }
3098 static FORCEINLINE HRESULT IUri_GetAbsoluteUri(IUri* This,BSTR *pbstrAbsoluteUri) {
3099     return This->lpVtbl->GetAbsoluteUri(This,pbstrAbsoluteUri);
3100 }
3101 static FORCEINLINE HRESULT IUri_GetAuthority(IUri* This,BSTR *pbstrAuthority) {
3102     return This->lpVtbl->GetAuthority(This,pbstrAuthority);
3103 }
3104 static FORCEINLINE HRESULT IUri_GetDisplayUri(IUri* This,BSTR *pbstrDisplayString) {
3105     return This->lpVtbl->GetDisplayUri(This,pbstrDisplayString);
3106 }
3107 static FORCEINLINE HRESULT IUri_GetDomain(IUri* This,BSTR *pbstrDomain) {
3108     return This->lpVtbl->GetDomain(This,pbstrDomain);
3109 }
3110 static FORCEINLINE HRESULT IUri_GetExtension(IUri* This,BSTR *pbstrExtension) {
3111     return This->lpVtbl->GetExtension(This,pbstrExtension);
3112 }
3113 static FORCEINLINE HRESULT IUri_GetFragment(IUri* This,BSTR *pbstrFragment) {
3114     return This->lpVtbl->GetFragment(This,pbstrFragment);
3115 }
3116 static FORCEINLINE HRESULT IUri_GetHost(IUri* This,BSTR *pbstrHost) {
3117     return This->lpVtbl->GetHost(This,pbstrHost);
3118 }
3119 static FORCEINLINE HRESULT IUri_GetPassword(IUri* This,BSTR *pbstrPassword) {
3120     return This->lpVtbl->GetPassword(This,pbstrPassword);
3121 }
3122 static FORCEINLINE HRESULT IUri_GetPath(IUri* This,BSTR *pbstrPath) {
3123     return This->lpVtbl->GetPath(This,pbstrPath);
3124 }
3125 static FORCEINLINE HRESULT IUri_GetPathAndQuery(IUri* This,BSTR *pbstrPathAndQuery) {
3126     return This->lpVtbl->GetPathAndQuery(This,pbstrPathAndQuery);
3127 }
3128 static FORCEINLINE HRESULT IUri_GetQuery(IUri* This,BSTR *pbstrQuery) {
3129     return This->lpVtbl->GetQuery(This,pbstrQuery);
3130 }
3131 static FORCEINLINE HRESULT IUri_GetRawUri(IUri* This,BSTR *pbstrRawUri) {
3132     return This->lpVtbl->GetRawUri(This,pbstrRawUri);
3133 }
3134 static FORCEINLINE HRESULT IUri_GetSchemeName(IUri* This,BSTR *pbstrSchemeName) {
3135     return This->lpVtbl->GetSchemeName(This,pbstrSchemeName);
3136 }
3137 static FORCEINLINE HRESULT IUri_GetUserInfo(IUri* This,BSTR *pbstrUserInfo) {
3138     return This->lpVtbl->GetUserInfo(This,pbstrUserInfo);
3139 }
3140 static FORCEINLINE HRESULT IUri_GetUserName(IUri* This,BSTR *pbstrUserName) {
3141     return This->lpVtbl->GetUserName(This,pbstrUserName);
3142 }
3143 static FORCEINLINE HRESULT IUri_GetHostType(IUri* This,DWORD *pdwHostType) {
3144     return This->lpVtbl->GetHostType(This,pdwHostType);
3145 }
3146 static FORCEINLINE HRESULT IUri_GetPort(IUri* This,DWORD *pdwPort) {
3147     return This->lpVtbl->GetPort(This,pdwPort);
3148 }
3149 static FORCEINLINE HRESULT IUri_GetScheme(IUri* This,DWORD *pdwScheme) {
3150     return This->lpVtbl->GetScheme(This,pdwScheme);
3151 }
3152 static FORCEINLINE HRESULT IUri_GetZone(IUri* This,DWORD *pdwZone) {
3153     return This->lpVtbl->GetZone(This,pdwZone);
3154 }
3155 static FORCEINLINE HRESULT IUri_GetProperties(IUri* This,LPDWORD pdwFlags) {
3156     return This->lpVtbl->GetProperties(This,pdwFlags);
3157 }
3158 static FORCEINLINE HRESULT IUri_IsEqual(IUri* This,IUri *pUri,WINBOOL *pfEqual) {
3159     return This->lpVtbl->IsEqual(This,pUri,pfEqual);
3160 }
3161 #endif
3162 #endif
3163 
3164 #endif
3165 
3166 
3167 #endif  /* __IUri_INTERFACE_DEFINED__ */
3168 
3169 
3170 STDAPI CreateUri(LPCWSTR pwzURI, DWORD dwFlags, DWORD_PTR dwReserved, IUri **ppURI);
3171 STDAPI CreateUriWithFragment(
3172 LPCWSTR pwzURI, LPCWSTR pwzFragment, DWORD dwFlags, DWORD_PTR dwReserved, IUri **ppURI);
3173 #endif
3174 #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
3175 STDAPI CreateUriFromMultiByteString(LPCSTR pszANSIInputUri, DWORD dwEncodingFlags, DWORD dwCodePage, DWORD dwCreateFlags, DWORD_PTR dwReserved, IUri **ppUri);
3176 #endif
3177 
3178 #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP)
3179 #define Uri_HAS_ABSOLUTE_URI (1 << Uri_PROPERTY_ABSOLUTE_URI)
3180 #define Uri_HAS_AUTHORITY (1 << Uri_PROPERTY_AUTHORITY)
3181 #define Uri_HAS_DISPLAY_URI (1 << Uri_PROPERTY_DISPLAY_URI)
3182 #define Uri_HAS_DOMAIN (1 << Uri_PROPERTY_DOMAIN)
3183 #define Uri_HAS_EXTENSION (1 << Uri_PROPERTY_EXTENSION)
3184 #define Uri_HAS_FRAGMENT (1 << Uri_PROPERTY_FRAGMENT)
3185 #define Uri_HAS_HOST (1 << Uri_PROPERTY_HOST)
3186 #define Uri_HAS_PASSWORD (1 << Uri_PROPERTY_PASSWORD)
3187 #define Uri_HAS_PATH (1 << Uri_PROPERTY_PATH)
3188 #define Uri_HAS_QUERY (1 << Uri_PROPERTY_QUERY)
3189 #define Uri_HAS_RAW_URI (1 << Uri_PROPERTY_RAW_URI)
3190 #define Uri_HAS_SCHEME_NAME (1 << Uri_PROPERTY_SCHEME_NAME)
3191 #define Uri_HAS_USER_NAME (1 << Uri_PROPERTY_USER_NAME)
3192 #define Uri_HAS_PATH_AND_QUERY (1 << Uri_PROPERTY_PATH_AND_QUERY)
3193 #define Uri_HAS_USER_INFO (1 << Uri_PROPERTY_USER_INFO)
3194 #define Uri_HAS_HOST_TYPE (1 << Uri_PROPERTY_HOST_TYPE)
3195 #define Uri_HAS_PORT (1 << Uri_PROPERTY_PORT)
3196 #define Uri_HAS_SCHEME (1 << Uri_PROPERTY_SCHEME)
3197 #define Uri_HAS_ZONE (1 << Uri_PROPERTY_ZONE)
3198 
3199 #define Uri_CREATE_ALLOW_RELATIVE 0x1
3200 #define Uri_CREATE_ALLOW_IMPLICIT_WILDCARD_SCHEME 0x2
3201 #define Uri_CREATE_ALLOW_IMPLICIT_FILE_SCHEME 0x4
3202 #define Uri_CREATE_NOFRAG 0x8
3203 #define Uri_CREATE_NO_CANONICALIZE 0x10
3204 #define Uri_CREATE_CANONICALIZE 0x100
3205 #define Uri_CREATE_FILE_USE_DOS_PATH 0x20
3206 #define Uri_CREATE_DECODE_EXTRA_INFO 0x40
3207 #define Uri_CREATE_NO_DECODE_EXTRA_INFO 0x80
3208 #define Uri_CREATE_CRACK_UNKNOWN_SCHEMES 0x200
3209 #define Uri_CREATE_NO_CRACK_UNKNOWN_SCHEMES 0x400
3210 #define Uri_CREATE_PRE_PROCESS_HTML_URI 0x800
3211 #define Uri_CREATE_NO_PRE_PROCESS_HTML_URI 0x1000
3212 #define Uri_CREATE_IE_SETTINGS 0x2000
3213 #define Uri_CREATE_NO_IE_SETTINGS 0x4000
3214 #define Uri_CREATE_NO_ENCODE_FORBIDDEN_CHARACTERS 0x8000
3215 #define Uri_CREATE_NORMALIZE_INTL_CHARACTERS 0x10000
3216 #define Uri_CREATE_CANONICALIZE_ABSOLUTE 0x20000
3217 
3218 #define Uri_DISPLAY_NO_FRAGMENT 0x1
3219 #define Uri_PUNYCODE_IDN_HOST 0x2
3220 #define Uri_DISPLAY_IDN_HOST 0x4
3221 #define Uri_DISPLAY_NO_PUNYCODE 0x8
3222 
3223 #define Uri_ENCODING_USER_INFO_AND_PATH_IS_PERCENT_ENCODED_UTF8 0x1
3224 #define Uri_ENCODING_USER_INFO_AND_PATH_IS_CP 0x2
3225 #define Uri_ENCODING_HOST_IS_IDN 0x4
3226 #define Uri_ENCODING_HOST_IS_PERCENT_ENCODED_UTF8 0x8
3227 #define Uri_ENCODING_HOST_IS_PERCENT_ENCODED_CP 0x10
3228 #define Uri_ENCODING_QUERY_AND_FRAGMENT_IS_PERCENT_ENCODED_UTF8 0x20
3229 #define Uri_ENCODING_QUERY_AND_FRAGMENT_IS_CP 0x40
3230 
3231 #define Uri_ENCODING_RFC (Uri_ENCODING_USER_INFO_AND_PATH_IS_PERCENT_ENCODED_UTF8 | Uri_ENCODING_HOST_IS_PERCENT_ENCODED_UTF8 | Uri_ENCODING_QUERY_AND_FRAGMENT_IS_PERCENT_ENCODED_UTF8)
3232 
3233 #define UriBuilder_USE_ORIGINAL_FLAGS 0x1
3234 #endif
3235 #endif
3236 
3237 #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
3238 /*****************************************************************************
3239  * IUriContainer interface
3240  */
3241 #ifndef __IUriContainer_INTERFACE_DEFINED__
3242 #define __IUriContainer_INTERFACE_DEFINED__
3243 
3244 DEFINE_GUID(IID_IUriContainer, 0xa158a630, 0xed6f, 0x45fb, 0xb9,0x87, 0xf6,0x86,0x76,0xf5,0x77,0x52);
3245 #if defined(__cplusplus) && !defined(CINTERFACE)
3246 MIDL_INTERFACE("a158a630-ed6f-45fb-b987-f68676f57752")
3247 IUriContainer : public IUnknown
3248 {
3249     virtual HRESULT STDMETHODCALLTYPE GetIUri(
3250         IUri **ppIUri) = 0;
3251 
3252 };
3253 #ifdef __CRT_UUID_DECL
3254 __CRT_UUID_DECL(IUriContainer, 0xa158a630, 0xed6f, 0x45fb, 0xb9,0x87, 0xf6,0x86,0x76,0xf5,0x77,0x52)
3255 #endif
3256 #else
3257 typedef struct IUriContainerVtbl {
3258     BEGIN_INTERFACE
3259 
3260     /*** IUnknown methods ***/
3261     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
3262         IUriContainer *This,
3263         REFIID riid,
3264         void **ppvObject);
3265 
3266     ULONG (STDMETHODCALLTYPE *AddRef)(
3267         IUriContainer *This);
3268 
3269     ULONG (STDMETHODCALLTYPE *Release)(
3270         IUriContainer *This);
3271 
3272     /*** IUriContainer methods ***/
3273     HRESULT (STDMETHODCALLTYPE *GetIUri)(
3274         IUriContainer *This,
3275         IUri **ppIUri);
3276 
3277     END_INTERFACE
3278 } IUriContainerVtbl;
3279 
3280 interface IUriContainer {
3281     CONST_VTBL IUriContainerVtbl* lpVtbl;
3282 };
3283 
3284 #ifdef COBJMACROS
3285 #ifndef WIDL_C_INLINE_WRAPPERS
3286 /*** IUnknown methods ***/
3287 #define IUriContainer_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
3288 #define IUriContainer_AddRef(This) (This)->lpVtbl->AddRef(This)
3289 #define IUriContainer_Release(This) (This)->lpVtbl->Release(This)
3290 /*** IUriContainer methods ***/
3291 #define IUriContainer_GetIUri(This,ppIUri) (This)->lpVtbl->GetIUri(This,ppIUri)
3292 #else
3293 /*** IUnknown methods ***/
3294 static FORCEINLINE HRESULT IUriContainer_QueryInterface(IUriContainer* This,REFIID riid,void **ppvObject) {
3295     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
3296 }
3297 static FORCEINLINE ULONG IUriContainer_AddRef(IUriContainer* This) {
3298     return This->lpVtbl->AddRef(This);
3299 }
3300 static FORCEINLINE ULONG IUriContainer_Release(IUriContainer* This) {
3301     return This->lpVtbl->Release(This);
3302 }
3303 /*** IUriContainer methods ***/
3304 static FORCEINLINE HRESULT IUriContainer_GetIUri(IUriContainer* This,IUri **ppIUri) {
3305     return This->lpVtbl->GetIUri(This,ppIUri);
3306 }
3307 #endif
3308 #endif
3309 
3310 #endif
3311 
3312 
3313 #endif  /* __IUriContainer_INTERFACE_DEFINED__ */
3314 
3315 
3316 /*****************************************************************************
3317  * IUriBuilder interface
3318  */
3319 #ifndef __IUriBuilder_INTERFACE_DEFINED__
3320 #define __IUriBuilder_INTERFACE_DEFINED__
3321 
3322 DEFINE_GUID(IID_IUriBuilder, 0x4221b2e1, 0x8955, 0x46c0, 0xbd,0x5b, 0xde,0x98,0x97,0x56,0x5d,0xe7);
3323 #if defined(__cplusplus) && !defined(CINTERFACE)
3324 MIDL_INTERFACE("4221b2e1-8955-46c0-bd5b-de9897565de7")
3325 IUriBuilder : public IUnknown
3326 {
3327     virtual HRESULT STDMETHODCALLTYPE CreateUriSimple(
3328         DWORD dwAllowEncodingPropertyMask,
3329         DWORD_PTR dwReserved,
3330         IUri **ppIUri) = 0;
3331 
3332     virtual HRESULT STDMETHODCALLTYPE CreateUri(
3333         DWORD dwCreateFlags,
3334         DWORD dwAllowEncodingPropertyMask,
3335         DWORD_PTR dwReserved,
3336         IUri **ppIUri) = 0;
3337 
3338     virtual HRESULT STDMETHODCALLTYPE CreateUriWithFlags(
3339         DWORD dwCreateFlags,
3340         DWORD dwUriBuilderFlags,
3341         DWORD dwAllowEncodingPropertyMask,
3342         DWORD_PTR dwReserved,
3343         IUri **ppIUri) = 0;
3344 
3345     virtual HRESULT STDMETHODCALLTYPE GetIUri(
3346         IUri **ppIUri) = 0;
3347 
3348     virtual HRESULT STDMETHODCALLTYPE SetIUri(
3349         IUri *pIUri) = 0;
3350 
3351     virtual HRESULT STDMETHODCALLTYPE GetFragment(
3352         DWORD *pcchFragment,
3353         LPCWSTR *ppwzFragment) = 0;
3354 
3355     virtual HRESULT STDMETHODCALLTYPE GetHost(
3356         DWORD *pcchHost,
3357         LPCWSTR *ppwzHost) = 0;
3358 
3359     virtual HRESULT STDMETHODCALLTYPE GetPassword(
3360         DWORD *pcchPassword,
3361         LPCWSTR *ppwzPassword) = 0;
3362 
3363     virtual HRESULT STDMETHODCALLTYPE GetPath(
3364         DWORD *pcchPath,
3365         LPCWSTR *ppwzPath) = 0;
3366 
3367     virtual HRESULT STDMETHODCALLTYPE GetPort(
3368         WINBOOL *pfHasPort,
3369         DWORD *pdwPort) = 0;
3370 
3371     virtual HRESULT STDMETHODCALLTYPE GetQuery(
3372         DWORD *pcchQuery,
3373         LPCWSTR *ppwzQuery) = 0;
3374 
3375     virtual HRESULT STDMETHODCALLTYPE GetSchemeName(
3376         DWORD *pcchSchemeName,
3377         LPCWSTR *ppwzSchemeName) = 0;
3378 
3379     virtual HRESULT STDMETHODCALLTYPE GetUserName(
3380         DWORD *pcchUserName,
3381         LPCWSTR *ppwzUserName) = 0;
3382 
3383     virtual HRESULT STDMETHODCALLTYPE SetFragment(
3384         LPCWSTR pwzNewValue) = 0;
3385 
3386     virtual HRESULT STDMETHODCALLTYPE SetHost(
3387         LPCWSTR pwzNewValue) = 0;
3388 
3389     virtual HRESULT STDMETHODCALLTYPE SetPassword(
3390         LPCWSTR pwzNewValue) = 0;
3391 
3392     virtual HRESULT STDMETHODCALLTYPE SetPath(
3393         LPCWSTR pwzNewValue) = 0;
3394 
3395     virtual HRESULT STDMETHODCALLTYPE SetPort(
3396         WINBOOL fHasPort,
3397         DWORD dwNewValue) = 0;
3398 
3399     virtual HRESULT STDMETHODCALLTYPE SetQuery(
3400         LPCWSTR pwzNewValue) = 0;
3401 
3402     virtual HRESULT STDMETHODCALLTYPE SetSchemeName(
3403         LPCWSTR pwzNewValue) = 0;
3404 
3405     virtual HRESULT STDMETHODCALLTYPE SetUserName(
3406         LPCWSTR pwzNewValue) = 0;
3407 
3408     virtual HRESULT STDMETHODCALLTYPE RemoveProperties(
3409         DWORD dwPropertyMask) = 0;
3410 
3411     virtual HRESULT STDMETHODCALLTYPE HasBeenModified(
3412         WINBOOL *pfModified) = 0;
3413 
3414 };
3415 #ifdef __CRT_UUID_DECL
3416 __CRT_UUID_DECL(IUriBuilder, 0x4221b2e1, 0x8955, 0x46c0, 0xbd,0x5b, 0xde,0x98,0x97,0x56,0x5d,0xe7)
3417 #endif
3418 #else
3419 typedef struct IUriBuilderVtbl {
3420     BEGIN_INTERFACE
3421 
3422     /*** IUnknown methods ***/
3423     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
3424         IUriBuilder *This,
3425         REFIID riid,
3426         void **ppvObject);
3427 
3428     ULONG (STDMETHODCALLTYPE *AddRef)(
3429         IUriBuilder *This);
3430 
3431     ULONG (STDMETHODCALLTYPE *Release)(
3432         IUriBuilder *This);
3433 
3434     /*** IUriBuilder methods ***/
3435     HRESULT (STDMETHODCALLTYPE *CreateUriSimple)(
3436         IUriBuilder *This,
3437         DWORD dwAllowEncodingPropertyMask,
3438         DWORD_PTR dwReserved,
3439         IUri **ppIUri);
3440 
3441     HRESULT (STDMETHODCALLTYPE *CreateUri)(
3442         IUriBuilder *This,
3443         DWORD dwCreateFlags,
3444         DWORD dwAllowEncodingPropertyMask,
3445         DWORD_PTR dwReserved,
3446         IUri **ppIUri);
3447 
3448     HRESULT (STDMETHODCALLTYPE *CreateUriWithFlags)(
3449         IUriBuilder *This,
3450         DWORD dwCreateFlags,
3451         DWORD dwUriBuilderFlags,
3452         DWORD dwAllowEncodingPropertyMask,
3453         DWORD_PTR dwReserved,
3454         IUri **ppIUri);
3455 
3456     HRESULT (STDMETHODCALLTYPE *GetIUri)(
3457         IUriBuilder *This,
3458         IUri **ppIUri);
3459 
3460     HRESULT (STDMETHODCALLTYPE *SetIUri)(
3461         IUriBuilder *This,
3462         IUri *pIUri);
3463 
3464     HRESULT (STDMETHODCALLTYPE *GetFragment)(
3465         IUriBuilder *This,
3466         DWORD *pcchFragment,
3467         LPCWSTR *ppwzFragment);
3468 
3469     HRESULT (STDMETHODCALLTYPE *GetHost)(
3470         IUriBuilder *This,
3471         DWORD *pcchHost,
3472         LPCWSTR *ppwzHost);
3473 
3474     HRESULT (STDMETHODCALLTYPE *GetPassword)(
3475         IUriBuilder *This,
3476         DWORD *pcchPassword,
3477         LPCWSTR *ppwzPassword);
3478 
3479     HRESULT (STDMETHODCALLTYPE *GetPath)(
3480         IUriBuilder *This,
3481         DWORD *pcchPath,
3482         LPCWSTR *ppwzPath);
3483 
3484     HRESULT (STDMETHODCALLTYPE *GetPort)(
3485         IUriBuilder *This,
3486         WINBOOL *pfHasPort,
3487         DWORD *pdwPort);
3488 
3489     HRESULT (STDMETHODCALLTYPE *GetQuery)(
3490         IUriBuilder *This,
3491         DWORD *pcchQuery,
3492         LPCWSTR *ppwzQuery);
3493 
3494     HRESULT (STDMETHODCALLTYPE *GetSchemeName)(
3495         IUriBuilder *This,
3496         DWORD *pcchSchemeName,
3497         LPCWSTR *ppwzSchemeName);
3498 
3499     HRESULT (STDMETHODCALLTYPE *GetUserName)(
3500         IUriBuilder *This,
3501         DWORD *pcchUserName,
3502         LPCWSTR *ppwzUserName);
3503 
3504     HRESULT (STDMETHODCALLTYPE *SetFragment)(
3505         IUriBuilder *This,
3506         LPCWSTR pwzNewValue);
3507 
3508     HRESULT (STDMETHODCALLTYPE *SetHost)(
3509         IUriBuilder *This,
3510         LPCWSTR pwzNewValue);
3511 
3512     HRESULT (STDMETHODCALLTYPE *SetPassword)(
3513         IUriBuilder *This,
3514         LPCWSTR pwzNewValue);
3515 
3516     HRESULT (STDMETHODCALLTYPE *SetPath)(
3517         IUriBuilder *This,
3518         LPCWSTR pwzNewValue);
3519 
3520     HRESULT (STDMETHODCALLTYPE *SetPort)(
3521         IUriBuilder *This,
3522         WINBOOL fHasPort,
3523         DWORD dwNewValue);
3524 
3525     HRESULT (STDMETHODCALLTYPE *SetQuery)(
3526         IUriBuilder *This,
3527         LPCWSTR pwzNewValue);
3528 
3529     HRESULT (STDMETHODCALLTYPE *SetSchemeName)(
3530         IUriBuilder *This,
3531         LPCWSTR pwzNewValue);
3532 
3533     HRESULT (STDMETHODCALLTYPE *SetUserName)(
3534         IUriBuilder *This,
3535         LPCWSTR pwzNewValue);
3536 
3537     HRESULT (STDMETHODCALLTYPE *RemoveProperties)(
3538         IUriBuilder *This,
3539         DWORD dwPropertyMask);
3540 
3541     HRESULT (STDMETHODCALLTYPE *HasBeenModified)(
3542         IUriBuilder *This,
3543         WINBOOL *pfModified);
3544 
3545     END_INTERFACE
3546 } IUriBuilderVtbl;
3547 
3548 interface IUriBuilder {
3549     CONST_VTBL IUriBuilderVtbl* lpVtbl;
3550 };
3551 
3552 #ifdef COBJMACROS
3553 #ifndef WIDL_C_INLINE_WRAPPERS
3554 /*** IUnknown methods ***/
3555 #define IUriBuilder_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
3556 #define IUriBuilder_AddRef(This) (This)->lpVtbl->AddRef(This)
3557 #define IUriBuilder_Release(This) (This)->lpVtbl->Release(This)
3558 /*** IUriBuilder methods ***/
3559 #define IUriBuilder_CreateUriSimple(This,dwAllowEncodingPropertyMask,dwReserved,ppIUri) (This)->lpVtbl->CreateUriSimple(This,dwAllowEncodingPropertyMask,dwReserved,ppIUri)
3560 #define IUriBuilder_CreateUri(This,dwCreateFlags,dwAllowEncodingPropertyMask,dwReserved,ppIUri) (This)->lpVtbl->CreateUri(This,dwCreateFlags,dwAllowEncodingPropertyMask,dwReserved,ppIUri)
3561 #define IUriBuilder_CreateUriWithFlags(This,dwCreateFlags,dwUriBuilderFlags,dwAllowEncodingPropertyMask,dwReserved,ppIUri) (This)->lpVtbl->CreateUriWithFlags(This,dwCreateFlags,dwUriBuilderFlags,dwAllowEncodingPropertyMask,dwReserved,ppIUri)
3562 #define IUriBuilder_GetIUri(This,ppIUri) (This)->lpVtbl->GetIUri(This,ppIUri)
3563 #define IUriBuilder_SetIUri(This,pIUri) (This)->lpVtbl->SetIUri(This,pIUri)
3564 #define IUriBuilder_GetFragment(This,pcchFragment,ppwzFragment) (This)->lpVtbl->GetFragment(This,pcchFragment,ppwzFragment)
3565 #define IUriBuilder_GetHost(This,pcchHost,ppwzHost) (This)->lpVtbl->GetHost(This,pcchHost,ppwzHost)
3566 #define IUriBuilder_GetPassword(This,pcchPassword,ppwzPassword) (This)->lpVtbl->GetPassword(This,pcchPassword,ppwzPassword)
3567 #define IUriBuilder_GetPath(This,pcchPath,ppwzPath) (This)->lpVtbl->GetPath(This,pcchPath,ppwzPath)
3568 #define IUriBuilder_GetPort(This,pfHasPort,pdwPort) (This)->lpVtbl->GetPort(This,pfHasPort,pdwPort)
3569 #define IUriBuilder_GetQuery(This,pcchQuery,ppwzQuery) (This)->lpVtbl->GetQuery(This,pcchQuery,ppwzQuery)
3570 #define IUriBuilder_GetSchemeName(This,pcchSchemeName,ppwzSchemeName) (This)->lpVtbl->GetSchemeName(This,pcchSchemeName,ppwzSchemeName)
3571 #define IUriBuilder_GetUserName(This,pcchUserName,ppwzUserName) (This)->lpVtbl->GetUserName(This,pcchUserName,ppwzUserName)
3572 #define IUriBuilder_SetFragment(This,pwzNewValue) (This)->lpVtbl->SetFragment(This,pwzNewValue)
3573 #define IUriBuilder_SetHost(This,pwzNewValue) (This)->lpVtbl->SetHost(This,pwzNewValue)
3574 #define IUriBuilder_SetPassword(This,pwzNewValue) (This)->lpVtbl->SetPassword(This,pwzNewValue)
3575 #define IUriBuilder_SetPath(This,pwzNewValue) (This)->lpVtbl->SetPath(This,pwzNewValue)
3576 #define IUriBuilder_SetPort(This,fHasPort,dwNewValue) (This)->lpVtbl->SetPort(This,fHasPort,dwNewValue)
3577 #define IUriBuilder_SetQuery(This,pwzNewValue) (This)->lpVtbl->SetQuery(This,pwzNewValue)
3578 #define IUriBuilder_SetSchemeName(This,pwzNewValue) (This)->lpVtbl->SetSchemeName(This,pwzNewValue)
3579 #define IUriBuilder_SetUserName(This,pwzNewValue) (This)->lpVtbl->SetUserName(This,pwzNewValue)
3580 #define IUriBuilder_RemoveProperties(This,dwPropertyMask) (This)->lpVtbl->RemoveProperties(This,dwPropertyMask)
3581 #define IUriBuilder_HasBeenModified(This,pfModified) (This)->lpVtbl->HasBeenModified(This,pfModified)
3582 #else
3583 /*** IUnknown methods ***/
3584 static FORCEINLINE HRESULT IUriBuilder_QueryInterface(IUriBuilder* This,REFIID riid,void **ppvObject) {
3585     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
3586 }
3587 static FORCEINLINE ULONG IUriBuilder_AddRef(IUriBuilder* This) {
3588     return This->lpVtbl->AddRef(This);
3589 }
3590 static FORCEINLINE ULONG IUriBuilder_Release(IUriBuilder* This) {
3591     return This->lpVtbl->Release(This);
3592 }
3593 /*** IUriBuilder methods ***/
3594 static FORCEINLINE HRESULT IUriBuilder_CreateUriSimple(IUriBuilder* This,DWORD dwAllowEncodingPropertyMask,DWORD_PTR dwReserved,IUri **ppIUri) {
3595     return This->lpVtbl->CreateUriSimple(This,dwAllowEncodingPropertyMask,dwReserved,ppIUri);
3596 }
3597 static FORCEINLINE HRESULT IUriBuilder_CreateUri(IUriBuilder* This,DWORD dwCreateFlags,DWORD dwAllowEncodingPropertyMask,DWORD_PTR dwReserved,IUri **ppIUri) {
3598     return This->lpVtbl->CreateUri(This,dwCreateFlags,dwAllowEncodingPropertyMask,dwReserved,ppIUri);
3599 }
3600 static FORCEINLINE HRESULT IUriBuilder_CreateUriWithFlags(IUriBuilder* This,DWORD dwCreateFlags,DWORD dwUriBuilderFlags,DWORD dwAllowEncodingPropertyMask,DWORD_PTR dwReserved,IUri **ppIUri) {
3601     return This->lpVtbl->CreateUriWithFlags(This,dwCreateFlags,dwUriBuilderFlags,dwAllowEncodingPropertyMask,dwReserved,ppIUri);
3602 }
3603 static FORCEINLINE HRESULT IUriBuilder_GetIUri(IUriBuilder* This,IUri **ppIUri) {
3604     return This->lpVtbl->GetIUri(This,ppIUri);
3605 }
3606 static FORCEINLINE HRESULT IUriBuilder_SetIUri(IUriBuilder* This,IUri *pIUri) {
3607     return This->lpVtbl->SetIUri(This,pIUri);
3608 }
3609 static FORCEINLINE HRESULT IUriBuilder_GetFragment(IUriBuilder* This,DWORD *pcchFragment,LPCWSTR *ppwzFragment) {
3610     return This->lpVtbl->GetFragment(This,pcchFragment,ppwzFragment);
3611 }
3612 static FORCEINLINE HRESULT IUriBuilder_GetHost(IUriBuilder* This,DWORD *pcchHost,LPCWSTR *ppwzHost) {
3613     return This->lpVtbl->GetHost(This,pcchHost,ppwzHost);
3614 }
3615 static FORCEINLINE HRESULT IUriBuilder_GetPassword(IUriBuilder* This,DWORD *pcchPassword,LPCWSTR *ppwzPassword) {
3616     return This->lpVtbl->GetPassword(This,pcchPassword,ppwzPassword);
3617 }
3618 static FORCEINLINE HRESULT IUriBuilder_GetPath(IUriBuilder* This,DWORD *pcchPath,LPCWSTR *ppwzPath) {
3619     return This->lpVtbl->GetPath(This,pcchPath,ppwzPath);
3620 }
3621 static FORCEINLINE HRESULT IUriBuilder_GetPort(IUriBuilder* This,WINBOOL *pfHasPort,DWORD *pdwPort) {
3622     return This->lpVtbl->GetPort(This,pfHasPort,pdwPort);
3623 }
3624 static FORCEINLINE HRESULT IUriBuilder_GetQuery(IUriBuilder* This,DWORD *pcchQuery,LPCWSTR *ppwzQuery) {
3625     return This->lpVtbl->GetQuery(This,pcchQuery,ppwzQuery);
3626 }
3627 static FORCEINLINE HRESULT IUriBuilder_GetSchemeName(IUriBuilder* This,DWORD *pcchSchemeName,LPCWSTR *ppwzSchemeName) {
3628     return This->lpVtbl->GetSchemeName(This,pcchSchemeName,ppwzSchemeName);
3629 }
3630 static FORCEINLINE HRESULT IUriBuilder_GetUserName(IUriBuilder* This,DWORD *pcchUserName,LPCWSTR *ppwzUserName) {
3631     return This->lpVtbl->GetUserName(This,pcchUserName,ppwzUserName);
3632 }
3633 static FORCEINLINE HRESULT IUriBuilder_SetFragment(IUriBuilder* This,LPCWSTR pwzNewValue) {
3634     return This->lpVtbl->SetFragment(This,pwzNewValue);
3635 }
3636 static FORCEINLINE HRESULT IUriBuilder_SetHost(IUriBuilder* This,LPCWSTR pwzNewValue) {
3637     return This->lpVtbl->SetHost(This,pwzNewValue);
3638 }
3639 static FORCEINLINE HRESULT IUriBuilder_SetPassword(IUriBuilder* This,LPCWSTR pwzNewValue) {
3640     return This->lpVtbl->SetPassword(This,pwzNewValue);
3641 }
3642 static FORCEINLINE HRESULT IUriBuilder_SetPath(IUriBuilder* This,LPCWSTR pwzNewValue) {
3643     return This->lpVtbl->SetPath(This,pwzNewValue);
3644 }
3645 static FORCEINLINE HRESULT IUriBuilder_SetPort(IUriBuilder* This,WINBOOL fHasPort,DWORD dwNewValue) {
3646     return This->lpVtbl->SetPort(This,fHasPort,dwNewValue);
3647 }
3648 static FORCEINLINE HRESULT IUriBuilder_SetQuery(IUriBuilder* This,LPCWSTR pwzNewValue) {
3649     return This->lpVtbl->SetQuery(This,pwzNewValue);
3650 }
3651 static FORCEINLINE HRESULT IUriBuilder_SetSchemeName(IUriBuilder* This,LPCWSTR pwzNewValue) {
3652     return This->lpVtbl->SetSchemeName(This,pwzNewValue);
3653 }
3654 static FORCEINLINE HRESULT IUriBuilder_SetUserName(IUriBuilder* This,LPCWSTR pwzNewValue) {
3655     return This->lpVtbl->SetUserName(This,pwzNewValue);
3656 }
3657 static FORCEINLINE HRESULT IUriBuilder_RemoveProperties(IUriBuilder* This,DWORD dwPropertyMask) {
3658     return This->lpVtbl->RemoveProperties(This,dwPropertyMask);
3659 }
3660 static FORCEINLINE HRESULT IUriBuilder_HasBeenModified(IUriBuilder* This,WINBOOL *pfModified) {
3661     return This->lpVtbl->HasBeenModified(This,pfModified);
3662 }
3663 #endif
3664 #endif
3665 
3666 #endif
3667 
3668 
3669 #endif  /* __IUriBuilder_INTERFACE_DEFINED__ */
3670 
3671 
3672 /*****************************************************************************
3673  * IUriBuilderFactory interface
3674  */
3675 #ifndef __IUriBuilderFactory_INTERFACE_DEFINED__
3676 #define __IUriBuilderFactory_INTERFACE_DEFINED__
3677 
3678 DEFINE_GUID(IID_IUriBuilderFactory, 0xe982ce48, 0x0b96, 0x440c, 0xbc,0x37, 0x0c,0x86,0x9b,0x27,0xa2,0x9e);
3679 #if defined(__cplusplus) && !defined(CINTERFACE)
3680 MIDL_INTERFACE("e982ce48-0b96-440c-bc37-0c869b27a29e")
3681 IUriBuilderFactory : public IUnknown
3682 {
3683     virtual HRESULT STDMETHODCALLTYPE CreateIUriBuilder(
3684         DWORD dwFlags,
3685         DWORD_PTR dwReserved,
3686         IUriBuilder **ppIUriBuilder) = 0;
3687 
3688     virtual HRESULT STDMETHODCALLTYPE CreateInitializedIUriBuilder(
3689         DWORD dwFlags,
3690         DWORD_PTR dwReserved,
3691         IUriBuilder **ppIUriBuilder) = 0;
3692 
3693 };
3694 #ifdef __CRT_UUID_DECL
3695 __CRT_UUID_DECL(IUriBuilderFactory, 0xe982ce48, 0x0b96, 0x440c, 0xbc,0x37, 0x0c,0x86,0x9b,0x27,0xa2,0x9e)
3696 #endif
3697 #else
3698 typedef struct IUriBuilderFactoryVtbl {
3699     BEGIN_INTERFACE
3700 
3701     /*** IUnknown methods ***/
3702     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
3703         IUriBuilderFactory *This,
3704         REFIID riid,
3705         void **ppvObject);
3706 
3707     ULONG (STDMETHODCALLTYPE *AddRef)(
3708         IUriBuilderFactory *This);
3709 
3710     ULONG (STDMETHODCALLTYPE *Release)(
3711         IUriBuilderFactory *This);
3712 
3713     /*** IUriBuilderFactory methods ***/
3714     HRESULT (STDMETHODCALLTYPE *CreateIUriBuilder)(
3715         IUriBuilderFactory *This,
3716         DWORD dwFlags,
3717         DWORD_PTR dwReserved,
3718         IUriBuilder **ppIUriBuilder);
3719 
3720     HRESULT (STDMETHODCALLTYPE *CreateInitializedIUriBuilder)(
3721         IUriBuilderFactory *This,
3722         DWORD dwFlags,
3723         DWORD_PTR dwReserved,
3724         IUriBuilder **ppIUriBuilder);
3725 
3726     END_INTERFACE
3727 } IUriBuilderFactoryVtbl;
3728 
3729 interface IUriBuilderFactory {
3730     CONST_VTBL IUriBuilderFactoryVtbl* lpVtbl;
3731 };
3732 
3733 #ifdef COBJMACROS
3734 #ifndef WIDL_C_INLINE_WRAPPERS
3735 /*** IUnknown methods ***/
3736 #define IUriBuilderFactory_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
3737 #define IUriBuilderFactory_AddRef(This) (This)->lpVtbl->AddRef(This)
3738 #define IUriBuilderFactory_Release(This) (This)->lpVtbl->Release(This)
3739 /*** IUriBuilderFactory methods ***/
3740 #define IUriBuilderFactory_CreateIUriBuilder(This,dwFlags,dwReserved,ppIUriBuilder) (This)->lpVtbl->CreateIUriBuilder(This,dwFlags,dwReserved,ppIUriBuilder)
3741 #define IUriBuilderFactory_CreateInitializedIUriBuilder(This,dwFlags,dwReserved,ppIUriBuilder) (This)->lpVtbl->CreateInitializedIUriBuilder(This,dwFlags,dwReserved,ppIUriBuilder)
3742 #else
3743 /*** IUnknown methods ***/
3744 static FORCEINLINE HRESULT IUriBuilderFactory_QueryInterface(IUriBuilderFactory* This,REFIID riid,void **ppvObject) {
3745     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
3746 }
3747 static FORCEINLINE ULONG IUriBuilderFactory_AddRef(IUriBuilderFactory* This) {
3748     return This->lpVtbl->AddRef(This);
3749 }
3750 static FORCEINLINE ULONG IUriBuilderFactory_Release(IUriBuilderFactory* This) {
3751     return This->lpVtbl->Release(This);
3752 }
3753 /*** IUriBuilderFactory methods ***/
3754 static FORCEINLINE HRESULT IUriBuilderFactory_CreateIUriBuilder(IUriBuilderFactory* This,DWORD dwFlags,DWORD_PTR dwReserved,IUriBuilder **ppIUriBuilder) {
3755     return This->lpVtbl->CreateIUriBuilder(This,dwFlags,dwReserved,ppIUriBuilder);
3756 }
3757 static FORCEINLINE HRESULT IUriBuilderFactory_CreateInitializedIUriBuilder(IUriBuilderFactory* This,DWORD dwFlags,DWORD_PTR dwReserved,IUriBuilder **ppIUriBuilder) {
3758     return This->lpVtbl->CreateInitializedIUriBuilder(This,dwFlags,dwReserved,ppIUriBuilder);
3759 }
3760 #endif
3761 #endif
3762 
3763 #endif
3764 
3765 
3766 #endif  /* __IUriBuilderFactory_INTERFACE_DEFINED__ */
3767 
3768 
3769 STDAPI CreateIUriBuilder(IUri *pIUri, DWORD dwFlags, DWORD_PTR dwReserved, IUriBuilder **ppIUriBuilder);
3770 #endif
3771 #endif
3772 
3773 #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
3774 #ifndef _LPWININETINFO_DEFINED
3775 #define _LPWININETINFO_DEFINED
3776 
3777 /*****************************************************************************
3778  * IWinInetInfo interface
3779  */
3780 #ifndef __IWinInetInfo_INTERFACE_DEFINED__
3781 #define __IWinInetInfo_INTERFACE_DEFINED__
3782 
3783 typedef IWinInetInfo *LPWININETINFO;
3784 DEFINE_GUID(IID_IWinInetInfo, 0x79eac9d6, 0xbafa, 0x11ce, 0x8c,0x82, 0x00,0xaa,0x00,0x4b,0xa9,0x0b);
3785 #if defined(__cplusplus) && !defined(CINTERFACE)
3786 MIDL_INTERFACE("79eac9d6-bafa-11ce-8c82-00aa004ba90b")
3787 IWinInetInfo : public IUnknown
3788 {
3789     virtual HRESULT STDMETHODCALLTYPE QueryOption(
3790         DWORD dwOption,
3791         LPVOID pBuffer,
3792         DWORD *pcbBuf) = 0;
3793 
3794 };
3795 #ifdef __CRT_UUID_DECL
3796 __CRT_UUID_DECL(IWinInetInfo, 0x79eac9d6, 0xbafa, 0x11ce, 0x8c,0x82, 0x00,0xaa,0x00,0x4b,0xa9,0x0b)
3797 #endif
3798 #else
3799 typedef struct IWinInetInfoVtbl {
3800     BEGIN_INTERFACE
3801 
3802     /*** IUnknown methods ***/
3803     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
3804         IWinInetInfo *This,
3805         REFIID riid,
3806         void **ppvObject);
3807 
3808     ULONG (STDMETHODCALLTYPE *AddRef)(
3809         IWinInetInfo *This);
3810 
3811     ULONG (STDMETHODCALLTYPE *Release)(
3812         IWinInetInfo *This);
3813 
3814     /*** IWinInetInfo methods ***/
3815     HRESULT (STDMETHODCALLTYPE *QueryOption)(
3816         IWinInetInfo *This,
3817         DWORD dwOption,
3818         LPVOID pBuffer,
3819         DWORD *pcbBuf);
3820 
3821     END_INTERFACE
3822 } IWinInetInfoVtbl;
3823 
3824 interface IWinInetInfo {
3825     CONST_VTBL IWinInetInfoVtbl* lpVtbl;
3826 };
3827 
3828 #ifdef COBJMACROS
3829 #ifndef WIDL_C_INLINE_WRAPPERS
3830 /*** IUnknown methods ***/
3831 #define IWinInetInfo_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
3832 #define IWinInetInfo_AddRef(This) (This)->lpVtbl->AddRef(This)
3833 #define IWinInetInfo_Release(This) (This)->lpVtbl->Release(This)
3834 /*** IWinInetInfo methods ***/
3835 #define IWinInetInfo_QueryOption(This,dwOption,pBuffer,pcbBuf) (This)->lpVtbl->QueryOption(This,dwOption,pBuffer,pcbBuf)
3836 #else
3837 /*** IUnknown methods ***/
3838 static FORCEINLINE HRESULT IWinInetInfo_QueryInterface(IWinInetInfo* This,REFIID riid,void **ppvObject) {
3839     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
3840 }
3841 static FORCEINLINE ULONG IWinInetInfo_AddRef(IWinInetInfo* This) {
3842     return This->lpVtbl->AddRef(This);
3843 }
3844 static FORCEINLINE ULONG IWinInetInfo_Release(IWinInetInfo* This) {
3845     return This->lpVtbl->Release(This);
3846 }
3847 /*** IWinInetInfo methods ***/
3848 static FORCEINLINE HRESULT IWinInetInfo_QueryOption(IWinInetInfo* This,DWORD dwOption,LPVOID pBuffer,DWORD *pcbBuf) {
3849     return This->lpVtbl->QueryOption(This,dwOption,pBuffer,pcbBuf);
3850 }
3851 #endif
3852 #endif
3853 
3854 #endif
3855 
3856 HRESULT STDMETHODCALLTYPE IWinInetInfo_RemoteQueryOption_Proxy(
3857     IWinInetInfo* This,
3858     DWORD dwOption,
3859     BYTE *pBuffer,
3860     DWORD *pcbBuf);
3861 void __RPC_STUB IWinInetInfo_RemoteQueryOption_Stub(
3862     IRpcStubBuffer* This,
3863     IRpcChannelBuffer* pRpcChannelBuffer,
3864     PRPC_MESSAGE pRpcMessage,
3865     DWORD* pdwStubPhase);
3866 HRESULT CALLBACK IWinInetInfo_QueryOption_Proxy(
3867     IWinInetInfo* This,
3868     DWORD dwOption,
3869     LPVOID pBuffer,
3870     DWORD *pcbBuf);
3871 HRESULT __RPC_STUB IWinInetInfo_QueryOption_Stub(
3872     IWinInetInfo* This,
3873     DWORD dwOption,
3874     BYTE *pBuffer,
3875     DWORD *pcbBuf);
3876 
3877 #endif  /* __IWinInetInfo_INTERFACE_DEFINED__ */
3878 
3879 #endif
3880 
3881 #define WININETINFO_OPTION_LOCK_HANDLE 65534
3882 
3883 #ifndef _LPHTTPSECURITY_DEFINED
3884 #define _LPHTTPSECURITY_DEFINED
3885 
3886 /*****************************************************************************
3887  * IHttpSecurity interface
3888  */
3889 #ifndef __IHttpSecurity_INTERFACE_DEFINED__
3890 #define __IHttpSecurity_INTERFACE_DEFINED__
3891 
3892 typedef IHttpSecurity *LPHTTPSECURITY;
3893 
3894 DEFINE_GUID(IID_IHttpSecurity, 0x79eac9d7, 0xbafa, 0x11ce, 0x8c,0x82, 0x00,0xaa,0x00,0x4b,0xa9,0x0b);
3895 #if defined(__cplusplus) && !defined(CINTERFACE)
3896 MIDL_INTERFACE("79eac9d7-bafa-11ce-8c82-00aa004ba90b")
3897 IHttpSecurity : public IWindowForBindingUI
3898 {
3899     virtual HRESULT STDMETHODCALLTYPE OnSecurityProblem(
3900         DWORD dwProblem) = 0;
3901 
3902 };
3903 #ifdef __CRT_UUID_DECL
3904 __CRT_UUID_DECL(IHttpSecurity, 0x79eac9d7, 0xbafa, 0x11ce, 0x8c,0x82, 0x00,0xaa,0x00,0x4b,0xa9,0x0b)
3905 #endif
3906 #else
3907 typedef struct IHttpSecurityVtbl {
3908     BEGIN_INTERFACE
3909 
3910     /*** IUnknown methods ***/
3911     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
3912         IHttpSecurity *This,
3913         REFIID riid,
3914         void **ppvObject);
3915 
3916     ULONG (STDMETHODCALLTYPE *AddRef)(
3917         IHttpSecurity *This);
3918 
3919     ULONG (STDMETHODCALLTYPE *Release)(
3920         IHttpSecurity *This);
3921 
3922     /*** IWindowForBindingUI methods ***/
3923     HRESULT (STDMETHODCALLTYPE *GetWindow)(
3924         IHttpSecurity *This,
3925         REFGUID rguidReason,
3926         HWND *phwnd);
3927 
3928     /*** IHttpSecurity methods ***/
3929     HRESULT (STDMETHODCALLTYPE *OnSecurityProblem)(
3930         IHttpSecurity *This,
3931         DWORD dwProblem);
3932 
3933     END_INTERFACE
3934 } IHttpSecurityVtbl;
3935 
3936 interface IHttpSecurity {
3937     CONST_VTBL IHttpSecurityVtbl* lpVtbl;
3938 };
3939 
3940 #ifdef COBJMACROS
3941 #ifndef WIDL_C_INLINE_WRAPPERS
3942 /*** IUnknown methods ***/
3943 #define IHttpSecurity_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
3944 #define IHttpSecurity_AddRef(This) (This)->lpVtbl->AddRef(This)
3945 #define IHttpSecurity_Release(This) (This)->lpVtbl->Release(This)
3946 /*** IWindowForBindingUI methods ***/
3947 #define IHttpSecurity_GetWindow(This,rguidReason,phwnd) (This)->lpVtbl->GetWindow(This,rguidReason,phwnd)
3948 /*** IHttpSecurity methods ***/
3949 #define IHttpSecurity_OnSecurityProblem(This,dwProblem) (This)->lpVtbl->OnSecurityProblem(This,dwProblem)
3950 #else
3951 /*** IUnknown methods ***/
3952 static FORCEINLINE HRESULT IHttpSecurity_QueryInterface(IHttpSecurity* This,REFIID riid,void **ppvObject) {
3953     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
3954 }
3955 static FORCEINLINE ULONG IHttpSecurity_AddRef(IHttpSecurity* This) {
3956     return This->lpVtbl->AddRef(This);
3957 }
3958 static FORCEINLINE ULONG IHttpSecurity_Release(IHttpSecurity* This) {
3959     return This->lpVtbl->Release(This);
3960 }
3961 /*** IWindowForBindingUI methods ***/
3962 static FORCEINLINE HRESULT IHttpSecurity_GetWindow(IHttpSecurity* This,REFGUID rguidReason,HWND *phwnd) {
3963     return This->lpVtbl->GetWindow(This,rguidReason,phwnd);
3964 }
3965 /*** IHttpSecurity methods ***/
3966 static FORCEINLINE HRESULT IHttpSecurity_OnSecurityProblem(IHttpSecurity* This,DWORD dwProblem) {
3967     return This->lpVtbl->OnSecurityProblem(This,dwProblem);
3968 }
3969 #endif
3970 #endif
3971 
3972 #endif
3973 
3974 
3975 #endif  /* __IHttpSecurity_INTERFACE_DEFINED__ */
3976 
3977 #endif
3978 
3979 #ifndef _LPWININETHTTPINFO_DEFINED
3980 #define _LPWININETHTTPINFO_DEFINED
3981 
3982 /*****************************************************************************
3983  * IWinInetHttpInfo interface
3984  */
3985 #ifndef __IWinInetHttpInfo_INTERFACE_DEFINED__
3986 #define __IWinInetHttpInfo_INTERFACE_DEFINED__
3987 
3988 typedef IWinInetHttpInfo *LPWININETHTTPINFO;
3989 
3990 DEFINE_GUID(IID_IWinInetHttpInfo, 0x79eac9d8, 0xbafa, 0x11ce, 0x8c,0x82, 0x00,0xaa,0x00,0x4b,0xa9,0x0b);
3991 #if defined(__cplusplus) && !defined(CINTERFACE)
3992 MIDL_INTERFACE("79eac9d8-bafa-11ce-8c82-00aa004ba90b")
3993 IWinInetHttpInfo : public IWinInetInfo
3994 {
3995     virtual HRESULT STDMETHODCALLTYPE QueryInfo(
3996         DWORD dwOption,
3997         LPVOID pBuffer,
3998         DWORD *pcbBuf,
3999         DWORD *pdwFlags,
4000         DWORD *pdwReserved) = 0;
4001 
4002 };
4003 #ifdef __CRT_UUID_DECL
4004 __CRT_UUID_DECL(IWinInetHttpInfo, 0x79eac9d8, 0xbafa, 0x11ce, 0x8c,0x82, 0x00,0xaa,0x00,0x4b,0xa9,0x0b)
4005 #endif
4006 #else
4007 typedef struct IWinInetHttpInfoVtbl {
4008     BEGIN_INTERFACE
4009 
4010     /*** IUnknown methods ***/
4011     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
4012         IWinInetHttpInfo *This,
4013         REFIID riid,
4014         void **ppvObject);
4015 
4016     ULONG (STDMETHODCALLTYPE *AddRef)(
4017         IWinInetHttpInfo *This);
4018 
4019     ULONG (STDMETHODCALLTYPE *Release)(
4020         IWinInetHttpInfo *This);
4021 
4022     /*** IWinInetInfo methods ***/
4023     HRESULT (STDMETHODCALLTYPE *QueryOption)(
4024         IWinInetHttpInfo *This,
4025         DWORD dwOption,
4026         LPVOID pBuffer,
4027         DWORD *pcbBuf);
4028 
4029     /*** IWinInetHttpInfo methods ***/
4030     HRESULT (STDMETHODCALLTYPE *QueryInfo)(
4031         IWinInetHttpInfo *This,
4032         DWORD dwOption,
4033         LPVOID pBuffer,
4034         DWORD *pcbBuf,
4035         DWORD *pdwFlags,
4036         DWORD *pdwReserved);
4037 
4038     END_INTERFACE
4039 } IWinInetHttpInfoVtbl;
4040 
4041 interface IWinInetHttpInfo {
4042     CONST_VTBL IWinInetHttpInfoVtbl* lpVtbl;
4043 };
4044 
4045 #ifdef COBJMACROS
4046 #ifndef WIDL_C_INLINE_WRAPPERS
4047 /*** IUnknown methods ***/
4048 #define IWinInetHttpInfo_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
4049 #define IWinInetHttpInfo_AddRef(This) (This)->lpVtbl->AddRef(This)
4050 #define IWinInetHttpInfo_Release(This) (This)->lpVtbl->Release(This)
4051 /*** IWinInetInfo methods ***/
4052 #define IWinInetHttpInfo_QueryOption(This,dwOption,pBuffer,pcbBuf) (This)->lpVtbl->QueryOption(This,dwOption,pBuffer,pcbBuf)
4053 /*** IWinInetHttpInfo methods ***/
4054 #define IWinInetHttpInfo_QueryInfo(This,dwOption,pBuffer,pcbBuf,pdwFlags,pdwReserved) (This)->lpVtbl->QueryInfo(This,dwOption,pBuffer,pcbBuf,pdwFlags,pdwReserved)
4055 #else
4056 /*** IUnknown methods ***/
4057 static FORCEINLINE HRESULT IWinInetHttpInfo_QueryInterface(IWinInetHttpInfo* This,REFIID riid,void **ppvObject) {
4058     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
4059 }
4060 static FORCEINLINE ULONG IWinInetHttpInfo_AddRef(IWinInetHttpInfo* This) {
4061     return This->lpVtbl->AddRef(This);
4062 }
4063 static FORCEINLINE ULONG IWinInetHttpInfo_Release(IWinInetHttpInfo* This) {
4064     return This->lpVtbl->Release(This);
4065 }
4066 /*** IWinInetInfo methods ***/
4067 static FORCEINLINE HRESULT IWinInetHttpInfo_QueryOption(IWinInetHttpInfo* This,DWORD dwOption,LPVOID pBuffer,DWORD *pcbBuf) {
4068     return This->lpVtbl->QueryOption(This,dwOption,pBuffer,pcbBuf);
4069 }
4070 /*** IWinInetHttpInfo methods ***/
4071 static FORCEINLINE HRESULT IWinInetHttpInfo_QueryInfo(IWinInetHttpInfo* This,DWORD dwOption,LPVOID pBuffer,DWORD *pcbBuf,DWORD *pdwFlags,DWORD *pdwReserved) {
4072     return This->lpVtbl->QueryInfo(This,dwOption,pBuffer,pcbBuf,pdwFlags,pdwReserved);
4073 }
4074 #endif
4075 #endif
4076 
4077 #endif
4078 
4079 HRESULT STDMETHODCALLTYPE IWinInetHttpInfo_RemoteQueryInfo_Proxy(
4080     IWinInetHttpInfo* This,
4081     DWORD dwOption,
4082     BYTE *pBuffer,
4083     DWORD *pcbBuf,
4084     DWORD *pdwFlags,
4085     DWORD *pdwReserved);
4086 void __RPC_STUB IWinInetHttpInfo_RemoteQueryInfo_Stub(
4087     IRpcStubBuffer* This,
4088     IRpcChannelBuffer* pRpcChannelBuffer,
4089     PRPC_MESSAGE pRpcMessage,
4090     DWORD* pdwStubPhase);
4091 HRESULT CALLBACK IWinInetHttpInfo_QueryInfo_Proxy(
4092     IWinInetHttpInfo* This,
4093     DWORD dwOption,
4094     LPVOID pBuffer,
4095     DWORD *pcbBuf,
4096     DWORD *pdwFlags,
4097     DWORD *pdwReserved);
4098 HRESULT __RPC_STUB IWinInetHttpInfo_QueryInfo_Stub(
4099     IWinInetHttpInfo* This,
4100     DWORD dwOption,
4101     BYTE *pBuffer,
4102     DWORD *pcbBuf,
4103     DWORD *pdwFlags,
4104     DWORD *pdwReserved);
4105 
4106 #endif  /* __IWinInetHttpInfo_INTERFACE_DEFINED__ */
4107 
4108 #endif
4109 
4110 #ifndef _LPWININETHTTPTIMEOUTS_DEFINED
4111 #define _LPWININETHTTPTIMEOUTS_DEFINED
4112 /*****************************************************************************
4113  * IWinInetHttpTimeouts interface
4114  */
4115 #ifndef __IWinInetHttpTimeouts_INTERFACE_DEFINED__
4116 #define __IWinInetHttpTimeouts_INTERFACE_DEFINED__
4117 
4118 DEFINE_GUID(IID_IWinInetHttpTimeouts, 0xf286fa56, 0xc1fd, 0x4270, 0x8e,0x67, 0xb3,0xeb,0x79,0x0a,0x81,0xe8);
4119 #if defined(__cplusplus) && !defined(CINTERFACE)
4120 MIDL_INTERFACE("f286fa56-c1fd-4270-8e67-b3eb790a81e8")
4121 IWinInetHttpTimeouts : public IUnknown
4122 {
4123     virtual HRESULT STDMETHODCALLTYPE GetRequestTimeouts(
4124         DWORD *pdwConnectTimeout,
4125         DWORD *pdwSendTimeout,
4126         DWORD *pdwReceiveTimeout) = 0;
4127 
4128 };
4129 #ifdef __CRT_UUID_DECL
4130 __CRT_UUID_DECL(IWinInetHttpTimeouts, 0xf286fa56, 0xc1fd, 0x4270, 0x8e,0x67, 0xb3,0xeb,0x79,0x0a,0x81,0xe8)
4131 #endif
4132 #else
4133 typedef struct IWinInetHttpTimeoutsVtbl {
4134     BEGIN_INTERFACE
4135 
4136     /*** IUnknown methods ***/
4137     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
4138         IWinInetHttpTimeouts *This,
4139         REFIID riid,
4140         void **ppvObject);
4141 
4142     ULONG (STDMETHODCALLTYPE *AddRef)(
4143         IWinInetHttpTimeouts *This);
4144 
4145     ULONG (STDMETHODCALLTYPE *Release)(
4146         IWinInetHttpTimeouts *This);
4147 
4148     /*** IWinInetHttpTimeouts methods ***/
4149     HRESULT (STDMETHODCALLTYPE *GetRequestTimeouts)(
4150         IWinInetHttpTimeouts *This,
4151         DWORD *pdwConnectTimeout,
4152         DWORD *pdwSendTimeout,
4153         DWORD *pdwReceiveTimeout);
4154 
4155     END_INTERFACE
4156 } IWinInetHttpTimeoutsVtbl;
4157 
4158 interface IWinInetHttpTimeouts {
4159     CONST_VTBL IWinInetHttpTimeoutsVtbl* lpVtbl;
4160 };
4161 
4162 #ifdef COBJMACROS
4163 #ifndef WIDL_C_INLINE_WRAPPERS
4164 /*** IUnknown methods ***/
4165 #define IWinInetHttpTimeouts_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
4166 #define IWinInetHttpTimeouts_AddRef(This) (This)->lpVtbl->AddRef(This)
4167 #define IWinInetHttpTimeouts_Release(This) (This)->lpVtbl->Release(This)
4168 /*** IWinInetHttpTimeouts methods ***/
4169 #define IWinInetHttpTimeouts_GetRequestTimeouts(This,pdwConnectTimeout,pdwSendTimeout,pdwReceiveTimeout) (This)->lpVtbl->GetRequestTimeouts(This,pdwConnectTimeout,pdwSendTimeout,pdwReceiveTimeout)
4170 #else
4171 /*** IUnknown methods ***/
4172 static FORCEINLINE HRESULT IWinInetHttpTimeouts_QueryInterface(IWinInetHttpTimeouts* This,REFIID riid,void **ppvObject) {
4173     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
4174 }
4175 static FORCEINLINE ULONG IWinInetHttpTimeouts_AddRef(IWinInetHttpTimeouts* This) {
4176     return This->lpVtbl->AddRef(This);
4177 }
4178 static FORCEINLINE ULONG IWinInetHttpTimeouts_Release(IWinInetHttpTimeouts* This) {
4179     return This->lpVtbl->Release(This);
4180 }
4181 /*** IWinInetHttpTimeouts methods ***/
4182 static FORCEINLINE HRESULT IWinInetHttpTimeouts_GetRequestTimeouts(IWinInetHttpTimeouts* This,DWORD *pdwConnectTimeout,DWORD *pdwSendTimeout,DWORD *pdwReceiveTimeout) {
4183     return This->lpVtbl->GetRequestTimeouts(This,pdwConnectTimeout,pdwSendTimeout,pdwReceiveTimeout);
4184 }
4185 #endif
4186 #endif
4187 
4188 #endif
4189 
4190 
4191 #endif  /* __IWinInetHttpTimeouts_INTERFACE_DEFINED__ */
4192 
4193 #endif
4194 
4195 #if (_WIN32_IE >= _WIN32_IE_IE60SP2)
4196 #ifndef _LPWININETCACHEHINTS_DEFINED
4197 #define _LPWININETCACHEHINTS_DEFINED
4198 
4199 /*****************************************************************************
4200  * IWinInetCacheHints interface
4201  */
4202 #ifndef __IWinInetCacheHints_INTERFACE_DEFINED__
4203 #define __IWinInetCacheHints_INTERFACE_DEFINED__
4204 
4205 typedef IWinInetCacheHints *LPWININETCACHEHINTS;
4206 
4207 DEFINE_GUID(IID_IWinInetCacheHints, 0xdd1ec3b3, 0x8391, 0x4fdb, 0xa9,0xe6, 0x34,0x7c,0x3c,0xaa,0xa7,0xdd);
4208 #if defined(__cplusplus) && !defined(CINTERFACE)
4209 MIDL_INTERFACE("dd1ec3b3-8391-4fdb-a9e6-347c3caaa7dd")
4210 IWinInetCacheHints : public IUnknown
4211 {
4212     virtual HRESULT STDMETHODCALLTYPE SetCacheExtension(
4213         LPCWSTR pwzExt,
4214         LPVOID pszCacheFile,
4215         DWORD *pcbCacheFile,
4216         DWORD *pdwWinInetError,
4217         DWORD *pdwReserved) = 0;
4218 
4219 };
4220 #ifdef __CRT_UUID_DECL
4221 __CRT_UUID_DECL(IWinInetCacheHints, 0xdd1ec3b3, 0x8391, 0x4fdb, 0xa9,0xe6, 0x34,0x7c,0x3c,0xaa,0xa7,0xdd)
4222 #endif
4223 #else
4224 typedef struct IWinInetCacheHintsVtbl {
4225     BEGIN_INTERFACE
4226 
4227     /*** IUnknown methods ***/
4228     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
4229         IWinInetCacheHints *This,
4230         REFIID riid,
4231         void **ppvObject);
4232 
4233     ULONG (STDMETHODCALLTYPE *AddRef)(
4234         IWinInetCacheHints *This);
4235 
4236     ULONG (STDMETHODCALLTYPE *Release)(
4237         IWinInetCacheHints *This);
4238 
4239     /*** IWinInetCacheHints methods ***/
4240     HRESULT (STDMETHODCALLTYPE *SetCacheExtension)(
4241         IWinInetCacheHints *This,
4242         LPCWSTR pwzExt,
4243         LPVOID pszCacheFile,
4244         DWORD *pcbCacheFile,
4245         DWORD *pdwWinInetError,
4246         DWORD *pdwReserved);
4247 
4248     END_INTERFACE
4249 } IWinInetCacheHintsVtbl;
4250 
4251 interface IWinInetCacheHints {
4252     CONST_VTBL IWinInetCacheHintsVtbl* lpVtbl;
4253 };
4254 
4255 #ifdef COBJMACROS
4256 #ifndef WIDL_C_INLINE_WRAPPERS
4257 /*** IUnknown methods ***/
4258 #define IWinInetCacheHints_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
4259 #define IWinInetCacheHints_AddRef(This) (This)->lpVtbl->AddRef(This)
4260 #define IWinInetCacheHints_Release(This) (This)->lpVtbl->Release(This)
4261 /*** IWinInetCacheHints methods ***/
4262 #define IWinInetCacheHints_SetCacheExtension(This,pwzExt,pszCacheFile,pcbCacheFile,pdwWinInetError,pdwReserved) (This)->lpVtbl->SetCacheExtension(This,pwzExt,pszCacheFile,pcbCacheFile,pdwWinInetError,pdwReserved)
4263 #else
4264 /*** IUnknown methods ***/
4265 static FORCEINLINE HRESULT IWinInetCacheHints_QueryInterface(IWinInetCacheHints* This,REFIID riid,void **ppvObject) {
4266     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
4267 }
4268 static FORCEINLINE ULONG IWinInetCacheHints_AddRef(IWinInetCacheHints* This) {
4269     return This->lpVtbl->AddRef(This);
4270 }
4271 static FORCEINLINE ULONG IWinInetCacheHints_Release(IWinInetCacheHints* This) {
4272     return This->lpVtbl->Release(This);
4273 }
4274 /*** IWinInetCacheHints methods ***/
4275 static FORCEINLINE HRESULT IWinInetCacheHints_SetCacheExtension(IWinInetCacheHints* This,LPCWSTR pwzExt,LPVOID pszCacheFile,DWORD *pcbCacheFile,DWORD *pdwWinInetError,DWORD *pdwReserved) {
4276     return This->lpVtbl->SetCacheExtension(This,pwzExt,pszCacheFile,pcbCacheFile,pdwWinInetError,pdwReserved);
4277 }
4278 #endif
4279 #endif
4280 
4281 #endif
4282 
4283 
4284 #endif  /* __IWinInetCacheHints_INTERFACE_DEFINED__ */
4285 
4286 #endif
4287 #endif
4288 
4289 #if (_WIN32_IE >= _WIN32_IE_IE70)
4290 #ifndef _LPWININETCACHEHINTS2_DEFINED
4291 #define _LPWININETCACHEHINTS2_DEFINED
4292 
4293 /*****************************************************************************
4294  * IWinInetCacheHints2 interface
4295  */
4296 #ifndef __IWinInetCacheHints2_INTERFACE_DEFINED__
4297 #define __IWinInetCacheHints2_INTERFACE_DEFINED__
4298 
4299 typedef IWinInetCacheHints2 *LPWININETCACHEHINTS2;
4300 
4301 DEFINE_GUID(IID_IWinInetCacheHints2, 0x7857aeac, 0xd31f, 0x49bf, 0x88,0x4e, 0xdd,0x46,0xdf,0x36,0x78,0x0a);
4302 #if defined(__cplusplus) && !defined(CINTERFACE)
4303 MIDL_INTERFACE("7857aeac-d31f-49bf-884e-dd46df36780a")
4304 IWinInetCacheHints2 : public IWinInetCacheHints
4305 {
4306     virtual HRESULT STDMETHODCALLTYPE SetCacheExtension2(
4307         LPCWSTR pwzExt,
4308         WCHAR *pwzCacheFile,
4309         DWORD *pcchCacheFile,
4310         DWORD *pdwWinInetError,
4311         DWORD *pdwReserved) = 0;
4312 
4313 };
4314 #ifdef __CRT_UUID_DECL
4315 __CRT_UUID_DECL(IWinInetCacheHints2, 0x7857aeac, 0xd31f, 0x49bf, 0x88,0x4e, 0xdd,0x46,0xdf,0x36,0x78,0x0a)
4316 #endif
4317 #else
4318 typedef struct IWinInetCacheHints2Vtbl {
4319     BEGIN_INTERFACE
4320 
4321     /*** IUnknown methods ***/
4322     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
4323         IWinInetCacheHints2 *This,
4324         REFIID riid,
4325         void **ppvObject);
4326 
4327     ULONG (STDMETHODCALLTYPE *AddRef)(
4328         IWinInetCacheHints2 *This);
4329 
4330     ULONG (STDMETHODCALLTYPE *Release)(
4331         IWinInetCacheHints2 *This);
4332 
4333     /*** IWinInetCacheHints methods ***/
4334     HRESULT (STDMETHODCALLTYPE *SetCacheExtension)(
4335         IWinInetCacheHints2 *This,
4336         LPCWSTR pwzExt,
4337         LPVOID pszCacheFile,
4338         DWORD *pcbCacheFile,
4339         DWORD *pdwWinInetError,
4340         DWORD *pdwReserved);
4341 
4342     /*** IWinInetCacheHints2 methods ***/
4343     HRESULT (STDMETHODCALLTYPE *SetCacheExtension2)(
4344         IWinInetCacheHints2 *This,
4345         LPCWSTR pwzExt,
4346         WCHAR *pwzCacheFile,
4347         DWORD *pcchCacheFile,
4348         DWORD *pdwWinInetError,
4349         DWORD *pdwReserved);
4350 
4351     END_INTERFACE
4352 } IWinInetCacheHints2Vtbl;
4353 
4354 interface IWinInetCacheHints2 {
4355     CONST_VTBL IWinInetCacheHints2Vtbl* lpVtbl;
4356 };
4357 
4358 #ifdef COBJMACROS
4359 #ifndef WIDL_C_INLINE_WRAPPERS
4360 /*** IUnknown methods ***/
4361 #define IWinInetCacheHints2_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
4362 #define IWinInetCacheHints2_AddRef(This) (This)->lpVtbl->AddRef(This)
4363 #define IWinInetCacheHints2_Release(This) (This)->lpVtbl->Release(This)
4364 /*** IWinInetCacheHints methods ***/
4365 #define IWinInetCacheHints2_SetCacheExtension(This,pwzExt,pszCacheFile,pcbCacheFile,pdwWinInetError,pdwReserved) (This)->lpVtbl->SetCacheExtension(This,pwzExt,pszCacheFile,pcbCacheFile,pdwWinInetError,pdwReserved)
4366 /*** IWinInetCacheHints2 methods ***/
4367 #define IWinInetCacheHints2_SetCacheExtension2(This,pwzExt,pwzCacheFile,pcchCacheFile,pdwWinInetError,pdwReserved) (This)->lpVtbl->SetCacheExtension2(This,pwzExt,pwzCacheFile,pcchCacheFile,pdwWinInetError,pdwReserved)
4368 #else
4369 /*** IUnknown methods ***/
4370 static FORCEINLINE HRESULT IWinInetCacheHints2_QueryInterface(IWinInetCacheHints2* This,REFIID riid,void **ppvObject) {
4371     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
4372 }
4373 static FORCEINLINE ULONG IWinInetCacheHints2_AddRef(IWinInetCacheHints2* This) {
4374     return This->lpVtbl->AddRef(This);
4375 }
4376 static FORCEINLINE ULONG IWinInetCacheHints2_Release(IWinInetCacheHints2* This) {
4377     return This->lpVtbl->Release(This);
4378 }
4379 /*** IWinInetCacheHints methods ***/
4380 static FORCEINLINE HRESULT IWinInetCacheHints2_SetCacheExtension(IWinInetCacheHints2* This,LPCWSTR pwzExt,LPVOID pszCacheFile,DWORD *pcbCacheFile,DWORD *pdwWinInetError,DWORD *pdwReserved) {
4381     return This->lpVtbl->SetCacheExtension(This,pwzExt,pszCacheFile,pcbCacheFile,pdwWinInetError,pdwReserved);
4382 }
4383 /*** IWinInetCacheHints2 methods ***/
4384 static FORCEINLINE HRESULT IWinInetCacheHints2_SetCacheExtension2(IWinInetCacheHints2* This,LPCWSTR pwzExt,WCHAR *pwzCacheFile,DWORD *pcchCacheFile,DWORD *pdwWinInetError,DWORD *pdwReserved) {
4385     return This->lpVtbl->SetCacheExtension2(This,pwzExt,pwzCacheFile,pcchCacheFile,pdwWinInetError,pdwReserved);
4386 }
4387 #endif
4388 #endif
4389 
4390 #endif
4391 
4392 
4393 #endif  /* __IWinInetCacheHints2_INTERFACE_DEFINED__ */
4394 
4395 #endif
4396 #endif
4397 
4398 #define SID_IBindHost IID_IBindHost
4399 #define SID_SBindHost IID_IBindHost
4400 
4401 #ifndef _LPBINDHOST_DEFINED
4402 #define _LPBINDHOST_DEFINED
4403 
4404 EXTERN_C const GUID SID_BindHost;
4405 
4406 /*****************************************************************************
4407  * IBindHost interface
4408  */
4409 #ifndef __IBindHost_INTERFACE_DEFINED__
4410 #define __IBindHost_INTERFACE_DEFINED__
4411 
4412 typedef IBindHost *LPBINDHOST;
4413 
4414 DEFINE_GUID(IID_IBindHost, 0xfc4801a1, 0x2ba9, 0x11cf, 0xa2,0x29, 0x00,0xaa,0x00,0x3d,0x73,0x52);
4415 #if defined(__cplusplus) && !defined(CINTERFACE)
4416 MIDL_INTERFACE("fc4801a1-2ba9-11cf-a229-00aa003d7352")
4417 IBindHost : public IUnknown
4418 {
4419     virtual HRESULT STDMETHODCALLTYPE CreateMoniker(
4420         LPOLESTR szName,
4421         IBindCtx *pBC,
4422         IMoniker **ppmk,
4423         DWORD dwReserved) = 0;
4424 
4425     virtual HRESULT STDMETHODCALLTYPE MonikerBindToStorage(
4426         IMoniker *pMk,
4427         IBindCtx *pBC,
4428         IBindStatusCallback *pBSC,
4429         REFIID riid,
4430         void **ppvObj) = 0;
4431 
4432     virtual HRESULT STDMETHODCALLTYPE MonikerBindToObject(
4433         IMoniker *pMk,
4434         IBindCtx *pBC,
4435         IBindStatusCallback *pBSC,
4436         REFIID riid,
4437         void **ppvObj) = 0;
4438 
4439 };
4440 #ifdef __CRT_UUID_DECL
4441 __CRT_UUID_DECL(IBindHost, 0xfc4801a1, 0x2ba9, 0x11cf, 0xa2,0x29, 0x00,0xaa,0x00,0x3d,0x73,0x52)
4442 #endif
4443 #else
4444 typedef struct IBindHostVtbl {
4445     BEGIN_INTERFACE
4446 
4447     /*** IUnknown methods ***/
4448     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
4449         IBindHost *This,
4450         REFIID riid,
4451         void **ppvObject);
4452 
4453     ULONG (STDMETHODCALLTYPE *AddRef)(
4454         IBindHost *This);
4455 
4456     ULONG (STDMETHODCALLTYPE *Release)(
4457         IBindHost *This);
4458 
4459     /*** IBindHost methods ***/
4460     HRESULT (STDMETHODCALLTYPE *CreateMoniker)(
4461         IBindHost *This,
4462         LPOLESTR szName,
4463         IBindCtx *pBC,
4464         IMoniker **ppmk,
4465         DWORD dwReserved);
4466 
4467     HRESULT (STDMETHODCALLTYPE *MonikerBindToStorage)(
4468         IBindHost *This,
4469         IMoniker *pMk,
4470         IBindCtx *pBC,
4471         IBindStatusCallback *pBSC,
4472         REFIID riid,
4473         void **ppvObj);
4474 
4475     HRESULT (STDMETHODCALLTYPE *MonikerBindToObject)(
4476         IBindHost *This,
4477         IMoniker *pMk,
4478         IBindCtx *pBC,
4479         IBindStatusCallback *pBSC,
4480         REFIID riid,
4481         void **ppvObj);
4482 
4483     END_INTERFACE
4484 } IBindHostVtbl;
4485 
4486 interface IBindHost {
4487     CONST_VTBL IBindHostVtbl* lpVtbl;
4488 };
4489 
4490 #ifdef COBJMACROS
4491 #ifndef WIDL_C_INLINE_WRAPPERS
4492 /*** IUnknown methods ***/
4493 #define IBindHost_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
4494 #define IBindHost_AddRef(This) (This)->lpVtbl->AddRef(This)
4495 #define IBindHost_Release(This) (This)->lpVtbl->Release(This)
4496 /*** IBindHost methods ***/
4497 #define IBindHost_CreateMoniker(This,szName,pBC,ppmk,dwReserved) (This)->lpVtbl->CreateMoniker(This,szName,pBC,ppmk,dwReserved)
4498 #define IBindHost_MonikerBindToStorage(This,pMk,pBC,pBSC,riid,ppvObj) (This)->lpVtbl->MonikerBindToStorage(This,pMk,pBC,pBSC,riid,ppvObj)
4499 #define IBindHost_MonikerBindToObject(This,pMk,pBC,pBSC,riid,ppvObj) (This)->lpVtbl->MonikerBindToObject(This,pMk,pBC,pBSC,riid,ppvObj)
4500 #else
4501 /*** IUnknown methods ***/
4502 static FORCEINLINE HRESULT IBindHost_QueryInterface(IBindHost* This,REFIID riid,void **ppvObject) {
4503     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
4504 }
4505 static FORCEINLINE ULONG IBindHost_AddRef(IBindHost* This) {
4506     return This->lpVtbl->AddRef(This);
4507 }
4508 static FORCEINLINE ULONG IBindHost_Release(IBindHost* This) {
4509     return This->lpVtbl->Release(This);
4510 }
4511 /*** IBindHost methods ***/
4512 static FORCEINLINE HRESULT IBindHost_CreateMoniker(IBindHost* This,LPOLESTR szName,IBindCtx *pBC,IMoniker **ppmk,DWORD dwReserved) {
4513     return This->lpVtbl->CreateMoniker(This,szName,pBC,ppmk,dwReserved);
4514 }
4515 static FORCEINLINE HRESULT IBindHost_MonikerBindToStorage(IBindHost* This,IMoniker *pMk,IBindCtx *pBC,IBindStatusCallback *pBSC,REFIID riid,void **ppvObj) {
4516     return This->lpVtbl->MonikerBindToStorage(This,pMk,pBC,pBSC,riid,ppvObj);
4517 }
4518 static FORCEINLINE HRESULT IBindHost_MonikerBindToObject(IBindHost* This,IMoniker *pMk,IBindCtx *pBC,IBindStatusCallback *pBSC,REFIID riid,void **ppvObj) {
4519     return This->lpVtbl->MonikerBindToObject(This,pMk,pBC,pBSC,riid,ppvObj);
4520 }
4521 #endif
4522 #endif
4523 
4524 #endif
4525 
4526 HRESULT STDMETHODCALLTYPE IBindHost_RemoteMonikerBindToStorage_Proxy(
4527     IBindHost* This,
4528     IMoniker *pMk,
4529     IBindCtx *pBC,
4530     IBindStatusCallback *pBSC,
4531     REFIID riid,
4532     IUnknown **ppvObj);
4533 void __RPC_STUB IBindHost_RemoteMonikerBindToStorage_Stub(
4534     IRpcStubBuffer* This,
4535     IRpcChannelBuffer* pRpcChannelBuffer,
4536     PRPC_MESSAGE pRpcMessage,
4537     DWORD* pdwStubPhase);
4538 HRESULT STDMETHODCALLTYPE IBindHost_RemoteMonikerBindToObject_Proxy(
4539     IBindHost* This,
4540     IMoniker *pMk,
4541     IBindCtx *pBC,
4542     IBindStatusCallback *pBSC,
4543     REFIID riid,
4544     IUnknown **ppvObj);
4545 void __RPC_STUB IBindHost_RemoteMonikerBindToObject_Stub(
4546     IRpcStubBuffer* This,
4547     IRpcChannelBuffer* pRpcChannelBuffer,
4548     PRPC_MESSAGE pRpcMessage,
4549     DWORD* pdwStubPhase);
4550 HRESULT CALLBACK IBindHost_MonikerBindToStorage_Proxy(
4551     IBindHost* This,
4552     IMoniker *pMk,
4553     IBindCtx *pBC,
4554     IBindStatusCallback *pBSC,
4555     REFIID riid,
4556     void **ppvObj);
4557 HRESULT __RPC_STUB IBindHost_MonikerBindToStorage_Stub(
4558     IBindHost* This,
4559     IMoniker *pMk,
4560     IBindCtx *pBC,
4561     IBindStatusCallback *pBSC,
4562     REFIID riid,
4563     IUnknown **ppvObj);
4564 HRESULT CALLBACK IBindHost_MonikerBindToObject_Proxy(
4565     IBindHost* This,
4566     IMoniker *pMk,
4567     IBindCtx *pBC,
4568     IBindStatusCallback *pBSC,
4569     REFIID riid,
4570     void **ppvObj);
4571 HRESULT __RPC_STUB IBindHost_MonikerBindToObject_Stub(
4572     IBindHost* This,
4573     IMoniker *pMk,
4574     IBindCtx *pBC,
4575     IBindStatusCallback *pBSC,
4576     REFIID riid,
4577     IUnknown **ppvObj);
4578 
4579 #endif  /* __IBindHost_INTERFACE_DEFINED__ */
4580 
4581 #endif
4582 
4583 #define URLOSTRM_USECACHEDCOPY_ONLY 0x1
4584 #define URLOSTRM_USECACHEDCOPY 0x2
4585 #define URLOSTRM_GETNEWESTVERSION 0x3
4586 
4587 struct IBindStatusCallback;
4588 STDAPI HlinkSimpleNavigateToString(LPCWSTR szTarget, LPCWSTR szLocation, LPCWSTR szTargetFrameName, IUnknown *pUnk, IBindCtx *pbc, IBindStatusCallback *, DWORD grfHLNF, DWORD dwReserved);
4589 STDAPI HlinkSimpleNavigateToMoniker(IMoniker *pmkTarget, LPCWSTR szLocation, LPCWSTR szTargetFrameName, IUnknown *pUnk, IBindCtx *pbc, IBindStatusCallback *, DWORD grfHLNF, DWORD dwReserved);
4590 STDAPI URLOpenStreamA(LPUNKNOWN,LPCSTR,DWORD,LPBINDSTATUSCALLBACK);
4591 STDAPI URLOpenStreamW(LPUNKNOWN,LPCWSTR,DWORD,LPBINDSTATUSCALLBACK);
4592 STDAPI URLOpenPullStreamA(LPUNKNOWN,LPCSTR,DWORD,LPBINDSTATUSCALLBACK);
4593 STDAPI URLOpenPullStreamW(LPUNKNOWN,LPCWSTR,DWORD,LPBINDSTATUSCALLBACK);
4594 STDAPI URLDownloadToFileA(LPUNKNOWN,LPCSTR,LPCSTR,DWORD,LPBINDSTATUSCALLBACK);
4595 STDAPI URLDownloadToFileW(LPUNKNOWN,LPCWSTR,LPCWSTR,DWORD,LPBINDSTATUSCALLBACK);
4596 STDAPI URLDownloadToCacheFileA(LPUNKNOWN, LPCSTR,  LPSTR,  DWORD, DWORD, LPBINDSTATUSCALLBACK);
4597 STDAPI URLDownloadToCacheFileW(LPUNKNOWN, LPCWSTR, LPWSTR, DWORD, DWORD, LPBINDSTATUSCALLBACK);
4598 STDAPI URLOpenBlockingStreamA(LPUNKNOWN,LPCSTR,LPSTREAM*,DWORD,LPBINDSTATUSCALLBACK);
4599 STDAPI URLOpenBlockingStreamW(LPUNKNOWN,LPCWSTR,LPSTREAM*,DWORD,LPBINDSTATUSCALLBACK);
4600 
4601 #define URLOpenStream __MINGW_NAME_AW(URLOpenStream)
4602 #define URLOpenPullStream __MINGW_NAME_AW(URLOpenPullStream)
4603 #define URLDownloadToFile __MINGW_NAME_AW(URLDownloadToFile)
4604 #define URLDownloadToCacheFile __MINGW_NAME_AW(URLDownloadToCacheFile)
4605 #define URLOpenBlockingStream __MINGW_NAME_AW(URLOpenBlockingStream)
4606 
4607 STDAPI HlinkGoBack(IUnknown *pUnk);
4608 STDAPI HlinkGoForward(IUnknown *pUnk);
4609 STDAPI HlinkNavigateString(IUnknown *pUnk, LPCWSTR szTarget);
4610 STDAPI HlinkNavigateMoniker(IUnknown *pUnk, IMoniker *pmkTarget);
4611 
4612 #ifndef  _URLMON_NO_ASYNC_PLUGABLE_PROTOCOLS_
4613 #ifndef __IInternet_FWD_DEFINED__
4614 #define __IInternet_FWD_DEFINED__
4615 typedef interface IInternet IInternet;
4616 #ifdef __cplusplus
4617 interface IInternet;
4618 #endif /* __cplusplus */
4619 #endif
4620 
4621 #ifndef __IInternetBindInfo_FWD_DEFINED__
4622 #define __IInternetBindInfo_FWD_DEFINED__
4623 typedef interface IInternetBindInfo IInternetBindInfo;
4624 #ifdef __cplusplus
4625 interface IInternetBindInfo;
4626 #endif /* __cplusplus */
4627 #endif
4628 
4629 #ifndef __IInternetBindInfoEx_FWD_DEFINED__
4630 #define __IInternetBindInfoEx_FWD_DEFINED__
4631 typedef interface IInternetBindInfoEx IInternetBindInfoEx;
4632 #ifdef __cplusplus
4633 interface IInternetBindInfoEx;
4634 #endif /* __cplusplus */
4635 #endif
4636 
4637 #ifndef __IInternetProtocolRoot_FWD_DEFINED__
4638 #define __IInternetProtocolRoot_FWD_DEFINED__
4639 typedef interface IInternetProtocolRoot IInternetProtocolRoot;
4640 #ifdef __cplusplus
4641 interface IInternetProtocolRoot;
4642 #endif /* __cplusplus */
4643 #endif
4644 
4645 #ifndef __IInternetProtocol_FWD_DEFINED__
4646 #define __IInternetProtocol_FWD_DEFINED__
4647 typedef interface IInternetProtocol IInternetProtocol;
4648 #ifdef __cplusplus
4649 interface IInternetProtocol;
4650 #endif /* __cplusplus */
4651 #endif
4652 
4653 #ifndef __IInternetProtocolEx_FWD_DEFINED__
4654 #define __IInternetProtocolEx_FWD_DEFINED__
4655 typedef interface IInternetProtocolEx IInternetProtocolEx;
4656 #ifdef __cplusplus
4657 interface IInternetProtocolEx;
4658 #endif /* __cplusplus */
4659 #endif
4660 
4661 #ifndef __IInternetProtocolSink_FWD_DEFINED__
4662 #define __IInternetProtocolSink_FWD_DEFINED__
4663 typedef interface IInternetProtocolSink IInternetProtocolSink;
4664 #ifdef __cplusplus
4665 interface IInternetProtocolSink;
4666 #endif /* __cplusplus */
4667 #endif
4668 
4669 #ifndef __IInternetProtocolInfo_FWD_DEFINED__
4670 #define __IInternetProtocolInfo_FWD_DEFINED__
4671 typedef interface IInternetProtocolInfo IInternetProtocolInfo;
4672 #ifdef __cplusplus
4673 interface IInternetProtocolInfo;
4674 #endif /* __cplusplus */
4675 #endif
4676 
4677 #ifndef __IInternetSession_FWD_DEFINED__
4678 #define __IInternetSession_FWD_DEFINED__
4679 typedef interface IInternetSession IInternetSession;
4680 #ifdef __cplusplus
4681 interface IInternetSession;
4682 #endif /* __cplusplus */
4683 #endif
4684 
4685 #ifndef __IInternetProtocolSinkStackable_FWD_DEFINED__
4686 #define __IInternetProtocolSinkStackable_FWD_DEFINED__
4687 typedef interface IInternetProtocolSinkStackable IInternetProtocolSinkStackable;
4688 #ifdef __cplusplus
4689 interface IInternetProtocolSinkStackable;
4690 #endif /* __cplusplus */
4691 #endif
4692 
4693 
4694 #ifndef _LPIINTERNET
4695 #define _LPIINTERNET
4696 
4697 /*****************************************************************************
4698  * IInternet interface
4699  */
4700 #ifndef __IInternet_INTERFACE_DEFINED__
4701 #define __IInternet_INTERFACE_DEFINED__
4702 
4703 typedef IInternet *LPIINTERNET;
4704 DEFINE_GUID(IID_IInternet, 0x79eac9e0, 0xbaf9, 0x11ce, 0x8c,0x82, 0x00,0xaa,0x00,0x4b,0xa9,0x0b);
4705 #if defined(__cplusplus) && !defined(CINTERFACE)
4706 MIDL_INTERFACE("79eac9e0-baf9-11ce-8c82-00aa004ba90b")
4707 IInternet : public IUnknown
4708 {
4709 };
4710 #ifdef __CRT_UUID_DECL
4711 __CRT_UUID_DECL(IInternet, 0x79eac9e0, 0xbaf9, 0x11ce, 0x8c,0x82, 0x00,0xaa,0x00,0x4b,0xa9,0x0b)
4712 #endif
4713 #else
4714 typedef struct IInternetVtbl {
4715     BEGIN_INTERFACE
4716 
4717     /*** IUnknown methods ***/
4718     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
4719         IInternet *This,
4720         REFIID riid,
4721         void **ppvObject);
4722 
4723     ULONG (STDMETHODCALLTYPE *AddRef)(
4724         IInternet *This);
4725 
4726     ULONG (STDMETHODCALLTYPE *Release)(
4727         IInternet *This);
4728 
4729     END_INTERFACE
4730 } IInternetVtbl;
4731 
4732 interface IInternet {
4733     CONST_VTBL IInternetVtbl* lpVtbl;
4734 };
4735 
4736 #ifdef COBJMACROS
4737 #ifndef WIDL_C_INLINE_WRAPPERS
4738 /*** IUnknown methods ***/
4739 #define IInternet_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
4740 #define IInternet_AddRef(This) (This)->lpVtbl->AddRef(This)
4741 #define IInternet_Release(This) (This)->lpVtbl->Release(This)
4742 #else
4743 /*** IUnknown methods ***/
4744 static FORCEINLINE HRESULT IInternet_QueryInterface(IInternet* This,REFIID riid,void **ppvObject) {
4745     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
4746 }
4747 static FORCEINLINE ULONG IInternet_AddRef(IInternet* This) {
4748     return This->lpVtbl->AddRef(This);
4749 }
4750 static FORCEINLINE ULONG IInternet_Release(IInternet* This) {
4751     return This->lpVtbl->Release(This);
4752 }
4753 #endif
4754 #endif
4755 
4756 #endif
4757 
4758 
4759 #endif  /* __IInternet_INTERFACE_DEFINED__ */
4760 
4761 #endif
4762 
4763 #ifndef _LPIINTERNETBINDINFO
4764 #define _LPIINTERNETBINDINFO
4765 
4766 /*****************************************************************************
4767  * IInternetBindInfo interface
4768  */
4769 #ifndef __IInternetBindInfo_INTERFACE_DEFINED__
4770 #define __IInternetBindInfo_INTERFACE_DEFINED__
4771 
4772 typedef IInternetBindInfo *LPIINTERNETBINDINFO;
4773 
4774 typedef enum tagBINDSTRING {
4775     BINDSTRING_HEADERS = 1,
4776     BINDSTRING_ACCEPT_MIMES = 2,
4777     BINDSTRING_EXTRA_URL = 3,
4778     BINDSTRING_LANGUAGE = 4,
4779     BINDSTRING_USERNAME = 5,
4780     BINDSTRING_PASSWORD = 6,
4781     BINDSTRING_UA_PIXELS = 7,
4782     BINDSTRING_UA_COLOR = 8,
4783     BINDSTRING_OS = 9,
4784     BINDSTRING_USER_AGENT = 10,
4785     BINDSTRING_ACCEPT_ENCODINGS = 11,
4786     BINDSTRING_POST_COOKIE = 12,
4787     BINDSTRING_POST_DATA_MIME = 13,
4788     BINDSTRING_URL = 14,
4789     BINDSTRING_IID = 15,
4790     BINDSTRING_FLAG_BIND_TO_OBJECT = 16,
4791     BINDSTRING_PTR_BIND_CONTEXT = 17,
4792     BINDSTRING_XDR_ORIGIN = 18,
4793     BINDSTRING_DOWNLOADPATH = 19,
4794     BINDSTRING_ROOTDOC_URL = 20,
4795     BINDSTRING_INITIAL_FILENAME = 21,
4796     BINDSTRING_PROXY_USERNAME = 22,
4797     BINDSTRING_PROXY_PASSWORD = 23
4798 } BINDSTRING;
4799 
4800 DEFINE_GUID(IID_IInternetBindInfo, 0x79eac9e1, 0xbaf9, 0x11ce, 0x8c,0x82, 0x00,0xaa,0x00,0x4b,0xa9,0x0b);
4801 #if defined(__cplusplus) && !defined(CINTERFACE)
4802 MIDL_INTERFACE("79eac9e1-baf9-11ce-8c82-00aa004ba90b")
4803 IInternetBindInfo : public IUnknown
4804 {
4805     virtual HRESULT STDMETHODCALLTYPE GetBindInfo(
4806         DWORD *grfBINDF,
4807         BINDINFO *pbindinfo) = 0;
4808 
4809     virtual HRESULT STDMETHODCALLTYPE GetBindString(
4810         ULONG ulStringType,
4811         LPOLESTR *ppwzStr,
4812         ULONG cEl,
4813         ULONG *pcElFetched) = 0;
4814 
4815 };
4816 #ifdef __CRT_UUID_DECL
4817 __CRT_UUID_DECL(IInternetBindInfo, 0x79eac9e1, 0xbaf9, 0x11ce, 0x8c,0x82, 0x00,0xaa,0x00,0x4b,0xa9,0x0b)
4818 #endif
4819 #else
4820 typedef struct IInternetBindInfoVtbl {
4821     BEGIN_INTERFACE
4822 
4823     /*** IUnknown methods ***/
4824     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
4825         IInternetBindInfo *This,
4826         REFIID riid,
4827         void **ppvObject);
4828 
4829     ULONG (STDMETHODCALLTYPE *AddRef)(
4830         IInternetBindInfo *This);
4831 
4832     ULONG (STDMETHODCALLTYPE *Release)(
4833         IInternetBindInfo *This);
4834 
4835     /*** IInternetBindInfo methods ***/
4836     HRESULT (STDMETHODCALLTYPE *GetBindInfo)(
4837         IInternetBindInfo *This,
4838         DWORD *grfBINDF,
4839         BINDINFO *pbindinfo);
4840 
4841     HRESULT (STDMETHODCALLTYPE *GetBindString)(
4842         IInternetBindInfo *This,
4843         ULONG ulStringType,
4844         LPOLESTR *ppwzStr,
4845         ULONG cEl,
4846         ULONG *pcElFetched);
4847 
4848     END_INTERFACE
4849 } IInternetBindInfoVtbl;
4850 
4851 interface IInternetBindInfo {
4852     CONST_VTBL IInternetBindInfoVtbl* lpVtbl;
4853 };
4854 
4855 #ifdef COBJMACROS
4856 #ifndef WIDL_C_INLINE_WRAPPERS
4857 /*** IUnknown methods ***/
4858 #define IInternetBindInfo_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
4859 #define IInternetBindInfo_AddRef(This) (This)->lpVtbl->AddRef(This)
4860 #define IInternetBindInfo_Release(This) (This)->lpVtbl->Release(This)
4861 /*** IInternetBindInfo methods ***/
4862 #define IInternetBindInfo_GetBindInfo(This,grfBINDF,pbindinfo) (This)->lpVtbl->GetBindInfo(This,grfBINDF,pbindinfo)
4863 #define IInternetBindInfo_GetBindString(This,ulStringType,ppwzStr,cEl,pcElFetched) (This)->lpVtbl->GetBindString(This,ulStringType,ppwzStr,cEl,pcElFetched)
4864 #else
4865 /*** IUnknown methods ***/
4866 static FORCEINLINE HRESULT IInternetBindInfo_QueryInterface(IInternetBindInfo* This,REFIID riid,void **ppvObject) {
4867     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
4868 }
4869 static FORCEINLINE ULONG IInternetBindInfo_AddRef(IInternetBindInfo* This) {
4870     return This->lpVtbl->AddRef(This);
4871 }
4872 static FORCEINLINE ULONG IInternetBindInfo_Release(IInternetBindInfo* This) {
4873     return This->lpVtbl->Release(This);
4874 }
4875 /*** IInternetBindInfo methods ***/
4876 static FORCEINLINE HRESULT IInternetBindInfo_GetBindInfo(IInternetBindInfo* This,DWORD *grfBINDF,BINDINFO *pbindinfo) {
4877     return This->lpVtbl->GetBindInfo(This,grfBINDF,pbindinfo);
4878 }
4879 static FORCEINLINE HRESULT IInternetBindInfo_GetBindString(IInternetBindInfo* This,ULONG ulStringType,LPOLESTR *ppwzStr,ULONG cEl,ULONG *pcElFetched) {
4880     return This->lpVtbl->GetBindString(This,ulStringType,ppwzStr,cEl,pcElFetched);
4881 }
4882 #endif
4883 #endif
4884 
4885 #endif
4886 
4887 
4888 #endif  /* __IInternetBindInfo_INTERFACE_DEFINED__ */
4889 
4890 #endif
4891 
4892 #ifndef _LPIINTERNETBINDINFOEX
4893 #define _LPIINTERNETBINDINFOEX
4894 
4895 /*****************************************************************************
4896  * IInternetBindInfoEx interface
4897  */
4898 #ifndef __IInternetBindInfoEx_INTERFACE_DEFINED__
4899 #define __IInternetBindInfoEx_INTERFACE_DEFINED__
4900 
4901 typedef IInternetBindInfoEx *LPIINTERNETBINDINFOEX;
4902 
4903 DEFINE_GUID(IID_IInternetBindInfoEx, 0xa3e015b7, 0xa82c, 0x4dcd, 0xa1,0x50, 0x56,0x9a,0xee,0xed,0x36,0xab);
4904 #if defined(__cplusplus) && !defined(CINTERFACE)
4905 MIDL_INTERFACE("a3e015b7-a82c-4dcd-a150-569aeeed36ab")
4906 IInternetBindInfoEx : public IInternetBindInfo
4907 {
4908     virtual HRESULT STDMETHODCALLTYPE GetBindInfoEx(
4909         DWORD *grfBINDF,
4910         BINDINFO *pbindinfo,
4911         DWORD *grfBINDF2,
4912         DWORD *pdwReserved) = 0;
4913 
4914 };
4915 #ifdef __CRT_UUID_DECL
4916 __CRT_UUID_DECL(IInternetBindInfoEx, 0xa3e015b7, 0xa82c, 0x4dcd, 0xa1,0x50, 0x56,0x9a,0xee,0xed,0x36,0xab)
4917 #endif
4918 #else
4919 typedef struct IInternetBindInfoExVtbl {
4920     BEGIN_INTERFACE
4921 
4922     /*** IUnknown methods ***/
4923     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
4924         IInternetBindInfoEx *This,
4925         REFIID riid,
4926         void **ppvObject);
4927 
4928     ULONG (STDMETHODCALLTYPE *AddRef)(
4929         IInternetBindInfoEx *This);
4930 
4931     ULONG (STDMETHODCALLTYPE *Release)(
4932         IInternetBindInfoEx *This);
4933 
4934     /*** IInternetBindInfo methods ***/
4935     HRESULT (STDMETHODCALLTYPE *GetBindInfo)(
4936         IInternetBindInfoEx *This,
4937         DWORD *grfBINDF,
4938         BINDINFO *pbindinfo);
4939 
4940     HRESULT (STDMETHODCALLTYPE *GetBindString)(
4941         IInternetBindInfoEx *This,
4942         ULONG ulStringType,
4943         LPOLESTR *ppwzStr,
4944         ULONG cEl,
4945         ULONG *pcElFetched);
4946 
4947     /*** IInternetBindInfoEx methods ***/
4948     HRESULT (STDMETHODCALLTYPE *GetBindInfoEx)(
4949         IInternetBindInfoEx *This,
4950         DWORD *grfBINDF,
4951         BINDINFO *pbindinfo,
4952         DWORD *grfBINDF2,
4953         DWORD *pdwReserved);
4954 
4955     END_INTERFACE
4956 } IInternetBindInfoExVtbl;
4957 
4958 interface IInternetBindInfoEx {
4959     CONST_VTBL IInternetBindInfoExVtbl* lpVtbl;
4960 };
4961 
4962 #ifdef COBJMACROS
4963 #ifndef WIDL_C_INLINE_WRAPPERS
4964 /*** IUnknown methods ***/
4965 #define IInternetBindInfoEx_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
4966 #define IInternetBindInfoEx_AddRef(This) (This)->lpVtbl->AddRef(This)
4967 #define IInternetBindInfoEx_Release(This) (This)->lpVtbl->Release(This)
4968 /*** IInternetBindInfo methods ***/
4969 #define IInternetBindInfoEx_GetBindInfo(This,grfBINDF,pbindinfo) (This)->lpVtbl->GetBindInfo(This,grfBINDF,pbindinfo)
4970 #define IInternetBindInfoEx_GetBindString(This,ulStringType,ppwzStr,cEl,pcElFetched) (This)->lpVtbl->GetBindString(This,ulStringType,ppwzStr,cEl,pcElFetched)
4971 /*** IInternetBindInfoEx methods ***/
4972 #define IInternetBindInfoEx_GetBindInfoEx(This,grfBINDF,pbindinfo,grfBINDF2,pdwReserved) (This)->lpVtbl->GetBindInfoEx(This,grfBINDF,pbindinfo,grfBINDF2,pdwReserved)
4973 #else
4974 /*** IUnknown methods ***/
4975 static FORCEINLINE HRESULT IInternetBindInfoEx_QueryInterface(IInternetBindInfoEx* This,REFIID riid,void **ppvObject) {
4976     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
4977 }
4978 static FORCEINLINE ULONG IInternetBindInfoEx_AddRef(IInternetBindInfoEx* This) {
4979     return This->lpVtbl->AddRef(This);
4980 }
4981 static FORCEINLINE ULONG IInternetBindInfoEx_Release(IInternetBindInfoEx* This) {
4982     return This->lpVtbl->Release(This);
4983 }
4984 /*** IInternetBindInfo methods ***/
4985 static FORCEINLINE HRESULT IInternetBindInfoEx_GetBindInfo(IInternetBindInfoEx* This,DWORD *grfBINDF,BINDINFO *pbindinfo) {
4986     return This->lpVtbl->GetBindInfo(This,grfBINDF,pbindinfo);
4987 }
4988 static FORCEINLINE HRESULT IInternetBindInfoEx_GetBindString(IInternetBindInfoEx* This,ULONG ulStringType,LPOLESTR *ppwzStr,ULONG cEl,ULONG *pcElFetched) {
4989     return This->lpVtbl->GetBindString(This,ulStringType,ppwzStr,cEl,pcElFetched);
4990 }
4991 /*** IInternetBindInfoEx methods ***/
4992 static FORCEINLINE HRESULT IInternetBindInfoEx_GetBindInfoEx(IInternetBindInfoEx* This,DWORD *grfBINDF,BINDINFO *pbindinfo,DWORD *grfBINDF2,DWORD *pdwReserved) {
4993     return This->lpVtbl->GetBindInfoEx(This,grfBINDF,pbindinfo,grfBINDF2,pdwReserved);
4994 }
4995 #endif
4996 #endif
4997 
4998 #endif
4999 
5000 
5001 #endif  /* __IInternetBindInfoEx_INTERFACE_DEFINED__ */
5002 
5003 #endif
5004 
5005 #ifndef _LPIINTERNETPROTOCOLROOT_DEFINED
5006 #define _LPIINTERNETPROTOCOLROOT_DEFINED
5007 
5008 /*****************************************************************************
5009  * IInternetProtocolRoot interface
5010  */
5011 #ifndef __IInternetProtocolRoot_INTERFACE_DEFINED__
5012 #define __IInternetProtocolRoot_INTERFACE_DEFINED__
5013 
5014 typedef IInternetProtocolRoot *LPIINTERNETPROTOCOLROOT;
5015 
5016 typedef enum _tagPI_FLAGS {
5017     PI_PARSE_URL = 0x1,
5018     PI_FILTER_MODE = 0x2,
5019     PI_FORCE_ASYNC = 0x4,
5020     PI_USE_WORKERTHREAD = 0x8,
5021     PI_MIMEVERIFICATION = 0x10,
5022     PI_CLSIDLOOKUP = 0x20,
5023     PI_DATAPROGRESS = 0x40,
5024     PI_SYNCHRONOUS = 0x80,
5025     PI_APARTMENTTHREADED = 0x100,
5026     PI_CLASSINSTALL = 0x200,
5027     PI_PASSONBINDCTX = 0x2000,
5028     PI_NOMIMEHANDLER = 0x8000,
5029     PI_LOADAPPDIRECT = 0x4000,
5030     PD_FORCE_SWITCH = 0x10000,
5031     PI_PREFERDEFAULTHANDLER = 0x20000
5032 } PI_FLAGS;
5033 typedef struct _tagPROTOCOLDATA {
5034     DWORD grfFlags;
5035     DWORD dwState;
5036     LPVOID pData;
5037     ULONG cbData;
5038 } PROTOCOLDATA;
5039 
5040 typedef struct _tagStartParam {
5041     IID iid;
5042     IBindCtx *pIBindCtx;
5043     IUnknown *pItf;
5044 } StartParam;
5045 
5046 DEFINE_GUID(IID_IInternetProtocolRoot, 0x79eac9e3, 0xbaf9, 0x11ce, 0x8c,0x82, 0x00,0xaa,0x00,0x4b,0xa9,0x0b);
5047 #if defined(__cplusplus) && !defined(CINTERFACE)
5048 MIDL_INTERFACE("79eac9e3-baf9-11ce-8c82-00aa004ba90b")
5049 IInternetProtocolRoot : public IUnknown
5050 {
5051     virtual HRESULT STDMETHODCALLTYPE Start(
5052         LPCWSTR szUrl,
5053         IInternetProtocolSink *pOIProtSink,
5054         IInternetBindInfo *pOIBindInfo,
5055         DWORD grfPI,
5056         HANDLE_PTR dwReserved) = 0;
5057 
5058     virtual HRESULT STDMETHODCALLTYPE Continue(
5059         PROTOCOLDATA *pProtocolData) = 0;
5060 
5061     virtual HRESULT STDMETHODCALLTYPE Abort(
5062         HRESULT hrReason,
5063         DWORD dwOptions) = 0;
5064 
5065     virtual HRESULT STDMETHODCALLTYPE Terminate(
5066         DWORD dwOptions) = 0;
5067 
5068     virtual HRESULT STDMETHODCALLTYPE Suspend(
5069         ) = 0;
5070 
5071     virtual HRESULT STDMETHODCALLTYPE Resume(
5072         ) = 0;
5073 
5074 };
5075 #ifdef __CRT_UUID_DECL
5076 __CRT_UUID_DECL(IInternetProtocolRoot, 0x79eac9e3, 0xbaf9, 0x11ce, 0x8c,0x82, 0x00,0xaa,0x00,0x4b,0xa9,0x0b)
5077 #endif
5078 #else
5079 typedef struct IInternetProtocolRootVtbl {
5080     BEGIN_INTERFACE
5081 
5082     /*** IUnknown methods ***/
5083     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
5084         IInternetProtocolRoot *This,
5085         REFIID riid,
5086         void **ppvObject);
5087 
5088     ULONG (STDMETHODCALLTYPE *AddRef)(
5089         IInternetProtocolRoot *This);
5090 
5091     ULONG (STDMETHODCALLTYPE *Release)(
5092         IInternetProtocolRoot *This);
5093 
5094     /*** IInternetProtocolRoot methods ***/
5095     HRESULT (STDMETHODCALLTYPE *Start)(
5096         IInternetProtocolRoot *This,
5097         LPCWSTR szUrl,
5098         IInternetProtocolSink *pOIProtSink,
5099         IInternetBindInfo *pOIBindInfo,
5100         DWORD grfPI,
5101         HANDLE_PTR dwReserved);
5102 
5103     HRESULT (STDMETHODCALLTYPE *Continue)(
5104         IInternetProtocolRoot *This,
5105         PROTOCOLDATA *pProtocolData);
5106 
5107     HRESULT (STDMETHODCALLTYPE *Abort)(
5108         IInternetProtocolRoot *This,
5109         HRESULT hrReason,
5110         DWORD dwOptions);
5111 
5112     HRESULT (STDMETHODCALLTYPE *Terminate)(
5113         IInternetProtocolRoot *This,
5114         DWORD dwOptions);
5115 
5116     HRESULT (STDMETHODCALLTYPE *Suspend)(
5117         IInternetProtocolRoot *This);
5118 
5119     HRESULT (STDMETHODCALLTYPE *Resume)(
5120         IInternetProtocolRoot *This);
5121 
5122     END_INTERFACE
5123 } IInternetProtocolRootVtbl;
5124 
5125 interface IInternetProtocolRoot {
5126     CONST_VTBL IInternetProtocolRootVtbl* lpVtbl;
5127 };
5128 
5129 #ifdef COBJMACROS
5130 #ifndef WIDL_C_INLINE_WRAPPERS
5131 /*** IUnknown methods ***/
5132 #define IInternetProtocolRoot_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
5133 #define IInternetProtocolRoot_AddRef(This) (This)->lpVtbl->AddRef(This)
5134 #define IInternetProtocolRoot_Release(This) (This)->lpVtbl->Release(This)
5135 /*** IInternetProtocolRoot methods ***/
5136 #define IInternetProtocolRoot_Start(This,szUrl,pOIProtSink,pOIBindInfo,grfPI,dwReserved) (This)->lpVtbl->Start(This,szUrl,pOIProtSink,pOIBindInfo,grfPI,dwReserved)
5137 #define IInternetProtocolRoot_Continue(This,pProtocolData) (This)->lpVtbl->Continue(This,pProtocolData)
5138 #define IInternetProtocolRoot_Abort(This,hrReason,dwOptions) (This)->lpVtbl->Abort(This,hrReason,dwOptions)
5139 #define IInternetProtocolRoot_Terminate(This,dwOptions) (This)->lpVtbl->Terminate(This,dwOptions)
5140 #define IInternetProtocolRoot_Suspend(This) (This)->lpVtbl->Suspend(This)
5141 #define IInternetProtocolRoot_Resume(This) (This)->lpVtbl->Resume(This)
5142 #else
5143 /*** IUnknown methods ***/
5144 static FORCEINLINE HRESULT IInternetProtocolRoot_QueryInterface(IInternetProtocolRoot* This,REFIID riid,void **ppvObject) {
5145     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
5146 }
5147 static FORCEINLINE ULONG IInternetProtocolRoot_AddRef(IInternetProtocolRoot* This) {
5148     return This->lpVtbl->AddRef(This);
5149 }
5150 static FORCEINLINE ULONG IInternetProtocolRoot_Release(IInternetProtocolRoot* This) {
5151     return This->lpVtbl->Release(This);
5152 }
5153 /*** IInternetProtocolRoot methods ***/
5154 static FORCEINLINE HRESULT IInternetProtocolRoot_Start(IInternetProtocolRoot* This,LPCWSTR szUrl,IInternetProtocolSink *pOIProtSink,IInternetBindInfo *pOIBindInfo,DWORD grfPI,HANDLE_PTR dwReserved) {
5155     return This->lpVtbl->Start(This,szUrl,pOIProtSink,pOIBindInfo,grfPI,dwReserved);
5156 }
5157 static FORCEINLINE HRESULT IInternetProtocolRoot_Continue(IInternetProtocolRoot* This,PROTOCOLDATA *pProtocolData) {
5158     return This->lpVtbl->Continue(This,pProtocolData);
5159 }
5160 static FORCEINLINE HRESULT IInternetProtocolRoot_Abort(IInternetProtocolRoot* This,HRESULT hrReason,DWORD dwOptions) {
5161     return This->lpVtbl->Abort(This,hrReason,dwOptions);
5162 }
5163 static FORCEINLINE HRESULT IInternetProtocolRoot_Terminate(IInternetProtocolRoot* This,DWORD dwOptions) {
5164     return This->lpVtbl->Terminate(This,dwOptions);
5165 }
5166 static FORCEINLINE HRESULT IInternetProtocolRoot_Suspend(IInternetProtocolRoot* This) {
5167     return This->lpVtbl->Suspend(This);
5168 }
5169 static FORCEINLINE HRESULT IInternetProtocolRoot_Resume(IInternetProtocolRoot* This) {
5170     return This->lpVtbl->Resume(This);
5171 }
5172 #endif
5173 #endif
5174 
5175 #endif
5176 
5177 
5178 #endif  /* __IInternetProtocolRoot_INTERFACE_DEFINED__ */
5179 
5180 #endif
5181 
5182 #ifndef _LPIINTERNETPROTOCOL_DEFINED
5183 #define _LPIINTERNETPROTOCOL_DEFINED
5184 
5185 /*****************************************************************************
5186  * IInternetProtocol interface
5187  */
5188 #ifndef __IInternetProtocol_INTERFACE_DEFINED__
5189 #define __IInternetProtocol_INTERFACE_DEFINED__
5190 
5191 typedef IInternetProtocol *LPIINTERNETPROTOCOL;
5192 
5193 DEFINE_GUID(IID_IInternetProtocol, 0x79eac9e4, 0xbaf9, 0x11ce, 0x8c,0x82, 0x00,0xaa,0x00,0x4b,0xa9,0x0b);
5194 #if defined(__cplusplus) && !defined(CINTERFACE)
5195 MIDL_INTERFACE("79eac9e4-baf9-11ce-8c82-00aa004ba90b")
5196 IInternetProtocol : public IInternetProtocolRoot
5197 {
5198     virtual HRESULT STDMETHODCALLTYPE Read(
5199         void *pv,
5200         ULONG cb,
5201         ULONG *pcbRead) = 0;
5202 
5203     virtual HRESULT STDMETHODCALLTYPE Seek(
5204         LARGE_INTEGER dlibMove,
5205         DWORD dwOrigin,
5206         ULARGE_INTEGER *plibNewPosition) = 0;
5207 
5208     virtual HRESULT STDMETHODCALLTYPE LockRequest(
5209         DWORD dwOptions) = 0;
5210 
5211     virtual HRESULT STDMETHODCALLTYPE UnlockRequest(
5212         ) = 0;
5213 
5214 };
5215 #ifdef __CRT_UUID_DECL
5216 __CRT_UUID_DECL(IInternetProtocol, 0x79eac9e4, 0xbaf9, 0x11ce, 0x8c,0x82, 0x00,0xaa,0x00,0x4b,0xa9,0x0b)
5217 #endif
5218 #else
5219 typedef struct IInternetProtocolVtbl {
5220     BEGIN_INTERFACE
5221 
5222     /*** IUnknown methods ***/
5223     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
5224         IInternetProtocol *This,
5225         REFIID riid,
5226         void **ppvObject);
5227 
5228     ULONG (STDMETHODCALLTYPE *AddRef)(
5229         IInternetProtocol *This);
5230 
5231     ULONG (STDMETHODCALLTYPE *Release)(
5232         IInternetProtocol *This);
5233 
5234     /*** IInternetProtocolRoot methods ***/
5235     HRESULT (STDMETHODCALLTYPE *Start)(
5236         IInternetProtocol *This,
5237         LPCWSTR szUrl,
5238         IInternetProtocolSink *pOIProtSink,
5239         IInternetBindInfo *pOIBindInfo,
5240         DWORD grfPI,
5241         HANDLE_PTR dwReserved);
5242 
5243     HRESULT (STDMETHODCALLTYPE *Continue)(
5244         IInternetProtocol *This,
5245         PROTOCOLDATA *pProtocolData);
5246 
5247     HRESULT (STDMETHODCALLTYPE *Abort)(
5248         IInternetProtocol *This,
5249         HRESULT hrReason,
5250         DWORD dwOptions);
5251 
5252     HRESULT (STDMETHODCALLTYPE *Terminate)(
5253         IInternetProtocol *This,
5254         DWORD dwOptions);
5255 
5256     HRESULT (STDMETHODCALLTYPE *Suspend)(
5257         IInternetProtocol *This);
5258 
5259     HRESULT (STDMETHODCALLTYPE *Resume)(
5260         IInternetProtocol *This);
5261 
5262     /*** IInternetProtocol methods ***/
5263     HRESULT (STDMETHODCALLTYPE *Read)(
5264         IInternetProtocol *This,
5265         void *pv,
5266         ULONG cb,
5267         ULONG *pcbRead);
5268 
5269     HRESULT (STDMETHODCALLTYPE *Seek)(
5270         IInternetProtocol *This,
5271         LARGE_INTEGER dlibMove,
5272         DWORD dwOrigin,
5273         ULARGE_INTEGER *plibNewPosition);
5274 
5275     HRESULT (STDMETHODCALLTYPE *LockRequest)(
5276         IInternetProtocol *This,
5277         DWORD dwOptions);
5278 
5279     HRESULT (STDMETHODCALLTYPE *UnlockRequest)(
5280         IInternetProtocol *This);
5281 
5282     END_INTERFACE
5283 } IInternetProtocolVtbl;
5284 
5285 interface IInternetProtocol {
5286     CONST_VTBL IInternetProtocolVtbl* lpVtbl;
5287 };
5288 
5289 #ifdef COBJMACROS
5290 #ifndef WIDL_C_INLINE_WRAPPERS
5291 /*** IUnknown methods ***/
5292 #define IInternetProtocol_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
5293 #define IInternetProtocol_AddRef(This) (This)->lpVtbl->AddRef(This)
5294 #define IInternetProtocol_Release(This) (This)->lpVtbl->Release(This)
5295 /*** IInternetProtocolRoot methods ***/
5296 #define IInternetProtocol_Start(This,szUrl,pOIProtSink,pOIBindInfo,grfPI,dwReserved) (This)->lpVtbl->Start(This,szUrl,pOIProtSink,pOIBindInfo,grfPI,dwReserved)
5297 #define IInternetProtocol_Continue(This,pProtocolData) (This)->lpVtbl->Continue(This,pProtocolData)
5298 #define IInternetProtocol_Abort(This,hrReason,dwOptions) (This)->lpVtbl->Abort(This,hrReason,dwOptions)
5299 #define IInternetProtocol_Terminate(This,dwOptions) (This)->lpVtbl->Terminate(This,dwOptions)
5300 #define IInternetProtocol_Suspend(This) (This)->lpVtbl->Suspend(This)
5301 #define IInternetProtocol_Resume(This) (This)->lpVtbl->Resume(This)
5302 /*** IInternetProtocol methods ***/
5303 #define IInternetProtocol_Read(This,pv,cb,pcbRead) (This)->lpVtbl->Read(This,pv,cb,pcbRead)
5304 #define IInternetProtocol_Seek(This,dlibMove,dwOrigin,plibNewPosition) (This)->lpVtbl->Seek(This,dlibMove,dwOrigin,plibNewPosition)
5305 #define IInternetProtocol_LockRequest(This,dwOptions) (This)->lpVtbl->LockRequest(This,dwOptions)
5306 #define IInternetProtocol_UnlockRequest(This) (This)->lpVtbl->UnlockRequest(This)
5307 #else
5308 /*** IUnknown methods ***/
5309 static FORCEINLINE HRESULT IInternetProtocol_QueryInterface(IInternetProtocol* This,REFIID riid,void **ppvObject) {
5310     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
5311 }
5312 static FORCEINLINE ULONG IInternetProtocol_AddRef(IInternetProtocol* This) {
5313     return This->lpVtbl->AddRef(This);
5314 }
5315 static FORCEINLINE ULONG IInternetProtocol_Release(IInternetProtocol* This) {
5316     return This->lpVtbl->Release(This);
5317 }
5318 /*** IInternetProtocolRoot methods ***/
5319 static FORCEINLINE HRESULT IInternetProtocol_Start(IInternetProtocol* This,LPCWSTR szUrl,IInternetProtocolSink *pOIProtSink,IInternetBindInfo *pOIBindInfo,DWORD grfPI,HANDLE_PTR dwReserved) {
5320     return This->lpVtbl->Start(This,szUrl,pOIProtSink,pOIBindInfo,grfPI,dwReserved);
5321 }
5322 static FORCEINLINE HRESULT IInternetProtocol_Continue(IInternetProtocol* This,PROTOCOLDATA *pProtocolData) {
5323     return This->lpVtbl->Continue(This,pProtocolData);
5324 }
5325 static FORCEINLINE HRESULT IInternetProtocol_Abort(IInternetProtocol* This,HRESULT hrReason,DWORD dwOptions) {
5326     return This->lpVtbl->Abort(This,hrReason,dwOptions);
5327 }
5328 static FORCEINLINE HRESULT IInternetProtocol_Terminate(IInternetProtocol* This,DWORD dwOptions) {
5329     return This->lpVtbl->Terminate(This,dwOptions);
5330 }
5331 static FORCEINLINE HRESULT IInternetProtocol_Suspend(IInternetProtocol* This) {
5332     return This->lpVtbl->Suspend(This);
5333 }
5334 static FORCEINLINE HRESULT IInternetProtocol_Resume(IInternetProtocol* This) {
5335     return This->lpVtbl->Resume(This);
5336 }
5337 /*** IInternetProtocol methods ***/
5338 static FORCEINLINE HRESULT IInternetProtocol_Read(IInternetProtocol* This,void *pv,ULONG cb,ULONG *pcbRead) {
5339     return This->lpVtbl->Read(This,pv,cb,pcbRead);
5340 }
5341 static FORCEINLINE HRESULT IInternetProtocol_Seek(IInternetProtocol* This,LARGE_INTEGER dlibMove,DWORD dwOrigin,ULARGE_INTEGER *plibNewPosition) {
5342     return This->lpVtbl->Seek(This,dlibMove,dwOrigin,plibNewPosition);
5343 }
5344 static FORCEINLINE HRESULT IInternetProtocol_LockRequest(IInternetProtocol* This,DWORD dwOptions) {
5345     return This->lpVtbl->LockRequest(This,dwOptions);
5346 }
5347 static FORCEINLINE HRESULT IInternetProtocol_UnlockRequest(IInternetProtocol* This) {
5348     return This->lpVtbl->UnlockRequest(This);
5349 }
5350 #endif
5351 #endif
5352 
5353 #endif
5354 
5355 
5356 #endif  /* __IInternetProtocol_INTERFACE_DEFINED__ */
5357 
5358 #endif
5359 
5360 #if (_WIN32_IE >= _WIN32_IE_IE70)
5361 #ifndef _LPIINTERNETPROTOCOLEX_DEFINED
5362 #define _LPIINTERNETPROTOCOLEX_DEFINED
5363 
5364 /*****************************************************************************
5365  * IInternetProtocolEx interface
5366  */
5367 #ifndef __IInternetProtocolEx_INTERFACE_DEFINED__
5368 #define __IInternetProtocolEx_INTERFACE_DEFINED__
5369 
5370 DEFINE_GUID(IID_IInternetProtocolEx, 0xc7a98e66, 0x1010, 0x492c, 0xa1,0xc8, 0xc8,0x09,0xe1,0xf7,0x59,0x05);
5371 #if defined(__cplusplus) && !defined(CINTERFACE)
5372 MIDL_INTERFACE("c7a98e66-1010-492c-a1c8-c809e1f75905")
5373 IInternetProtocolEx : public IInternetProtocol
5374 {
5375     virtual HRESULT STDMETHODCALLTYPE StartEx(
5376         IUri *pUri,
5377         IInternetProtocolSink *pOIProtSink,
5378         IInternetBindInfo *pOIBindInfo,
5379         DWORD grfPI,
5380         HANDLE_PTR dwReserved) = 0;
5381 
5382 };
5383 #ifdef __CRT_UUID_DECL
5384 __CRT_UUID_DECL(IInternetProtocolEx, 0xc7a98e66, 0x1010, 0x492c, 0xa1,0xc8, 0xc8,0x09,0xe1,0xf7,0x59,0x05)
5385 #endif
5386 #else
5387 typedef struct IInternetProtocolExVtbl {
5388     BEGIN_INTERFACE
5389 
5390     /*** IUnknown methods ***/
5391     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
5392         IInternetProtocolEx *This,
5393         REFIID riid,
5394         void **ppvObject);
5395 
5396     ULONG (STDMETHODCALLTYPE *AddRef)(
5397         IInternetProtocolEx *This);
5398 
5399     ULONG (STDMETHODCALLTYPE *Release)(
5400         IInternetProtocolEx *This);
5401 
5402     /*** IInternetProtocolRoot methods ***/
5403     HRESULT (STDMETHODCALLTYPE *Start)(
5404         IInternetProtocolEx *This,
5405         LPCWSTR szUrl,
5406         IInternetProtocolSink *pOIProtSink,
5407         IInternetBindInfo *pOIBindInfo,
5408         DWORD grfPI,
5409         HANDLE_PTR dwReserved);
5410 
5411     HRESULT (STDMETHODCALLTYPE *Continue)(
5412         IInternetProtocolEx *This,
5413         PROTOCOLDATA *pProtocolData);
5414 
5415     HRESULT (STDMETHODCALLTYPE *Abort)(
5416         IInternetProtocolEx *This,
5417         HRESULT hrReason,
5418         DWORD dwOptions);
5419 
5420     HRESULT (STDMETHODCALLTYPE *Terminate)(
5421         IInternetProtocolEx *This,
5422         DWORD dwOptions);
5423 
5424     HRESULT (STDMETHODCALLTYPE *Suspend)(
5425         IInternetProtocolEx *This);
5426 
5427     HRESULT (STDMETHODCALLTYPE *Resume)(
5428         IInternetProtocolEx *This);
5429 
5430     /*** IInternetProtocol methods ***/
5431     HRESULT (STDMETHODCALLTYPE *Read)(
5432         IInternetProtocolEx *This,
5433         void *pv,
5434         ULONG cb,
5435         ULONG *pcbRead);
5436 
5437     HRESULT (STDMETHODCALLTYPE *Seek)(
5438         IInternetProtocolEx *This,
5439         LARGE_INTEGER dlibMove,
5440         DWORD dwOrigin,
5441         ULARGE_INTEGER *plibNewPosition);
5442 
5443     HRESULT (STDMETHODCALLTYPE *LockRequest)(
5444         IInternetProtocolEx *This,
5445         DWORD dwOptions);
5446 
5447     HRESULT (STDMETHODCALLTYPE *UnlockRequest)(
5448         IInternetProtocolEx *This);
5449 
5450     /*** IInternetProtocolEx methods ***/
5451     HRESULT (STDMETHODCALLTYPE *StartEx)(
5452         IInternetProtocolEx *This,
5453         IUri *pUri,
5454         IInternetProtocolSink *pOIProtSink,
5455         IInternetBindInfo *pOIBindInfo,
5456         DWORD grfPI,
5457         HANDLE_PTR dwReserved);
5458 
5459     END_INTERFACE
5460 } IInternetProtocolExVtbl;
5461 
5462 interface IInternetProtocolEx {
5463     CONST_VTBL IInternetProtocolExVtbl* lpVtbl;
5464 };
5465 
5466 #ifdef COBJMACROS
5467 #ifndef WIDL_C_INLINE_WRAPPERS
5468 /*** IUnknown methods ***/
5469 #define IInternetProtocolEx_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
5470 #define IInternetProtocolEx_AddRef(This) (This)->lpVtbl->AddRef(This)
5471 #define IInternetProtocolEx_Release(This) (This)->lpVtbl->Release(This)
5472 /*** IInternetProtocolRoot methods ***/
5473 #define IInternetProtocolEx_Start(This,szUrl,pOIProtSink,pOIBindInfo,grfPI,dwReserved) (This)->lpVtbl->Start(This,szUrl,pOIProtSink,pOIBindInfo,grfPI,dwReserved)
5474 #define IInternetProtocolEx_Continue(This,pProtocolData) (This)->lpVtbl->Continue(This,pProtocolData)
5475 #define IInternetProtocolEx_Abort(This,hrReason,dwOptions) (This)->lpVtbl->Abort(This,hrReason,dwOptions)
5476 #define IInternetProtocolEx_Terminate(This,dwOptions) (This)->lpVtbl->Terminate(This,dwOptions)
5477 #define IInternetProtocolEx_Suspend(This) (This)->lpVtbl->Suspend(This)
5478 #define IInternetProtocolEx_Resume(This) (This)->lpVtbl->Resume(This)
5479 /*** IInternetProtocol methods ***/
5480 #define IInternetProtocolEx_Read(This,pv,cb,pcbRead) (This)->lpVtbl->Read(This,pv,cb,pcbRead)
5481 #define IInternetProtocolEx_Seek(This,dlibMove,dwOrigin,plibNewPosition) (This)->lpVtbl->Seek(This,dlibMove,dwOrigin,plibNewPosition)
5482 #define IInternetProtocolEx_LockRequest(This,dwOptions) (This)->lpVtbl->LockRequest(This,dwOptions)
5483 #define IInternetProtocolEx_UnlockRequest(This) (This)->lpVtbl->UnlockRequest(This)
5484 /*** IInternetProtocolEx methods ***/
5485 #define IInternetProtocolEx_StartEx(This,pUri,pOIProtSink,pOIBindInfo,grfPI,dwReserved) (This)->lpVtbl->StartEx(This,pUri,pOIProtSink,pOIBindInfo,grfPI,dwReserved)
5486 #else
5487 /*** IUnknown methods ***/
5488 static FORCEINLINE HRESULT IInternetProtocolEx_QueryInterface(IInternetProtocolEx* This,REFIID riid,void **ppvObject) {
5489     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
5490 }
5491 static FORCEINLINE ULONG IInternetProtocolEx_AddRef(IInternetProtocolEx* This) {
5492     return This->lpVtbl->AddRef(This);
5493 }
5494 static FORCEINLINE ULONG IInternetProtocolEx_Release(IInternetProtocolEx* This) {
5495     return This->lpVtbl->Release(This);
5496 }
5497 /*** IInternetProtocolRoot methods ***/
5498 static FORCEINLINE HRESULT IInternetProtocolEx_Start(IInternetProtocolEx* This,LPCWSTR szUrl,IInternetProtocolSink *pOIProtSink,IInternetBindInfo *pOIBindInfo,DWORD grfPI,HANDLE_PTR dwReserved) {
5499     return This->lpVtbl->Start(This,szUrl,pOIProtSink,pOIBindInfo,grfPI,dwReserved);
5500 }
5501 static FORCEINLINE HRESULT IInternetProtocolEx_Continue(IInternetProtocolEx* This,PROTOCOLDATA *pProtocolData) {
5502     return This->lpVtbl->Continue(This,pProtocolData);
5503 }
5504 static FORCEINLINE HRESULT IInternetProtocolEx_Abort(IInternetProtocolEx* This,HRESULT hrReason,DWORD dwOptions) {
5505     return This->lpVtbl->Abort(This,hrReason,dwOptions);
5506 }
5507 static FORCEINLINE HRESULT IInternetProtocolEx_Terminate(IInternetProtocolEx* This,DWORD dwOptions) {
5508     return This->lpVtbl->Terminate(This,dwOptions);
5509 }
5510 static FORCEINLINE HRESULT IInternetProtocolEx_Suspend(IInternetProtocolEx* This) {
5511     return This->lpVtbl->Suspend(This);
5512 }
5513 static FORCEINLINE HRESULT IInternetProtocolEx_Resume(IInternetProtocolEx* This) {
5514     return This->lpVtbl->Resume(This);
5515 }
5516 /*** IInternetProtocol methods ***/
5517 static FORCEINLINE HRESULT IInternetProtocolEx_Read(IInternetProtocolEx* This,void *pv,ULONG cb,ULONG *pcbRead) {
5518     return This->lpVtbl->Read(This,pv,cb,pcbRead);
5519 }
5520 static FORCEINLINE HRESULT IInternetProtocolEx_Seek(IInternetProtocolEx* This,LARGE_INTEGER dlibMove,DWORD dwOrigin,ULARGE_INTEGER *plibNewPosition) {
5521     return This->lpVtbl->Seek(This,dlibMove,dwOrigin,plibNewPosition);
5522 }
5523 static FORCEINLINE HRESULT IInternetProtocolEx_LockRequest(IInternetProtocolEx* This,DWORD dwOptions) {
5524     return This->lpVtbl->LockRequest(This,dwOptions);
5525 }
5526 static FORCEINLINE HRESULT IInternetProtocolEx_UnlockRequest(IInternetProtocolEx* This) {
5527     return This->lpVtbl->UnlockRequest(This);
5528 }
5529 /*** IInternetProtocolEx methods ***/
5530 static FORCEINLINE HRESULT IInternetProtocolEx_StartEx(IInternetProtocolEx* This,IUri *pUri,IInternetProtocolSink *pOIProtSink,IInternetBindInfo *pOIBindInfo,DWORD grfPI,HANDLE_PTR dwReserved) {
5531     return This->lpVtbl->StartEx(This,pUri,pOIProtSink,pOIBindInfo,grfPI,dwReserved);
5532 }
5533 #endif
5534 #endif
5535 
5536 #endif
5537 
5538 
5539 #endif  /* __IInternetProtocolEx_INTERFACE_DEFINED__ */
5540 
5541 #endif
5542 #endif
5543 
5544 #ifndef _LPIINTERNETPROTOCOLSINK_DEFINED
5545 #define _LPIINTERNETPROTOCOLSINK_DEFINED
5546 /*****************************************************************************
5547  * IInternetProtocolSink interface
5548  */
5549 #ifndef __IInternetProtocolSink_INTERFACE_DEFINED__
5550 #define __IInternetProtocolSink_INTERFACE_DEFINED__
5551 
5552 typedef IInternetProtocolSink *LPIINTERNETPROTOCOLSINK;
5553 
5554 DEFINE_GUID(IID_IInternetProtocolSink, 0x79eac9e5, 0xbaf9, 0x11ce, 0x8c,0x82, 0x00,0xaa,0x00,0x4b,0xa9,0x0b);
5555 #if defined(__cplusplus) && !defined(CINTERFACE)
5556 MIDL_INTERFACE("79eac9e5-baf9-11ce-8c82-00aa004ba90b")
5557 IInternetProtocolSink : public IUnknown
5558 {
5559     virtual HRESULT STDMETHODCALLTYPE Switch(
5560         PROTOCOLDATA *pProtocolData) = 0;
5561 
5562     virtual HRESULT STDMETHODCALLTYPE ReportProgress(
5563         ULONG ulStatusCode,
5564         LPCWSTR szStatusText) = 0;
5565 
5566     virtual HRESULT STDMETHODCALLTYPE ReportData(
5567         DWORD grfBSCF,
5568         ULONG ulProgress,
5569         ULONG ulProgressMax) = 0;
5570 
5571     virtual HRESULT STDMETHODCALLTYPE ReportResult(
5572         HRESULT hrResult,
5573         DWORD dwError,
5574         LPCWSTR szResult) = 0;
5575 
5576 };
5577 #ifdef __CRT_UUID_DECL
5578 __CRT_UUID_DECL(IInternetProtocolSink, 0x79eac9e5, 0xbaf9, 0x11ce, 0x8c,0x82, 0x00,0xaa,0x00,0x4b,0xa9,0x0b)
5579 #endif
5580 #else
5581 typedef struct IInternetProtocolSinkVtbl {
5582     BEGIN_INTERFACE
5583 
5584     /*** IUnknown methods ***/
5585     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
5586         IInternetProtocolSink *This,
5587         REFIID riid,
5588         void **ppvObject);
5589 
5590     ULONG (STDMETHODCALLTYPE *AddRef)(
5591         IInternetProtocolSink *This);
5592 
5593     ULONG (STDMETHODCALLTYPE *Release)(
5594         IInternetProtocolSink *This);
5595 
5596     /*** IInternetProtocolSink methods ***/
5597     HRESULT (STDMETHODCALLTYPE *Switch)(
5598         IInternetProtocolSink *This,
5599         PROTOCOLDATA *pProtocolData);
5600 
5601     HRESULT (STDMETHODCALLTYPE *ReportProgress)(
5602         IInternetProtocolSink *This,
5603         ULONG ulStatusCode,
5604         LPCWSTR szStatusText);
5605 
5606     HRESULT (STDMETHODCALLTYPE *ReportData)(
5607         IInternetProtocolSink *This,
5608         DWORD grfBSCF,
5609         ULONG ulProgress,
5610         ULONG ulProgressMax);
5611 
5612     HRESULT (STDMETHODCALLTYPE *ReportResult)(
5613         IInternetProtocolSink *This,
5614         HRESULT hrResult,
5615         DWORD dwError,
5616         LPCWSTR szResult);
5617 
5618     END_INTERFACE
5619 } IInternetProtocolSinkVtbl;
5620 
5621 interface IInternetProtocolSink {
5622     CONST_VTBL IInternetProtocolSinkVtbl* lpVtbl;
5623 };
5624 
5625 #ifdef COBJMACROS
5626 #ifndef WIDL_C_INLINE_WRAPPERS
5627 /*** IUnknown methods ***/
5628 #define IInternetProtocolSink_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
5629 #define IInternetProtocolSink_AddRef(This) (This)->lpVtbl->AddRef(This)
5630 #define IInternetProtocolSink_Release(This) (This)->lpVtbl->Release(This)
5631 /*** IInternetProtocolSink methods ***/
5632 #define IInternetProtocolSink_Switch(This,pProtocolData) (This)->lpVtbl->Switch(This,pProtocolData)
5633 #define IInternetProtocolSink_ReportProgress(This,ulStatusCode,szStatusText) (This)->lpVtbl->ReportProgress(This,ulStatusCode,szStatusText)
5634 #define IInternetProtocolSink_ReportData(This,grfBSCF,ulProgress,ulProgressMax) (This)->lpVtbl->ReportData(This,grfBSCF,ulProgress,ulProgressMax)
5635 #define IInternetProtocolSink_ReportResult(This,hrResult,dwError,szResult) (This)->lpVtbl->ReportResult(This,hrResult,dwError,szResult)
5636 #else
5637 /*** IUnknown methods ***/
5638 static FORCEINLINE HRESULT IInternetProtocolSink_QueryInterface(IInternetProtocolSink* This,REFIID riid,void **ppvObject) {
5639     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
5640 }
5641 static FORCEINLINE ULONG IInternetProtocolSink_AddRef(IInternetProtocolSink* This) {
5642     return This->lpVtbl->AddRef(This);
5643 }
5644 static FORCEINLINE ULONG IInternetProtocolSink_Release(IInternetProtocolSink* This) {
5645     return This->lpVtbl->Release(This);
5646 }
5647 /*** IInternetProtocolSink methods ***/
5648 static FORCEINLINE HRESULT IInternetProtocolSink_Switch(IInternetProtocolSink* This,PROTOCOLDATA *pProtocolData) {
5649     return This->lpVtbl->Switch(This,pProtocolData);
5650 }
5651 static FORCEINLINE HRESULT IInternetProtocolSink_ReportProgress(IInternetProtocolSink* This,ULONG ulStatusCode,LPCWSTR szStatusText) {
5652     return This->lpVtbl->ReportProgress(This,ulStatusCode,szStatusText);
5653 }
5654 static FORCEINLINE HRESULT IInternetProtocolSink_ReportData(IInternetProtocolSink* This,DWORD grfBSCF,ULONG ulProgress,ULONG ulProgressMax) {
5655     return This->lpVtbl->ReportData(This,grfBSCF,ulProgress,ulProgressMax);
5656 }
5657 static FORCEINLINE HRESULT IInternetProtocolSink_ReportResult(IInternetProtocolSink* This,HRESULT hrResult,DWORD dwError,LPCWSTR szResult) {
5658     return This->lpVtbl->ReportResult(This,hrResult,dwError,szResult);
5659 }
5660 #endif
5661 #endif
5662 
5663 #endif
5664 
5665 
5666 #endif  /* __IInternetProtocolSink_INTERFACE_DEFINED__ */
5667 
5668 #endif
5669 
5670 #ifndef _LPIINTERNETPROTOCOLSINKSTACKABLE_DEFINED
5671 #define _LPIINTERNETPROTOCOLSINKSTACKABLE_DEFINED
5672 
5673 /*****************************************************************************
5674  * IInternetProtocolSinkStackable interface
5675  */
5676 #ifndef __IInternetProtocolSinkStackable_INTERFACE_DEFINED__
5677 #define __IInternetProtocolSinkStackable_INTERFACE_DEFINED__
5678 
5679 typedef IInternetProtocolSinkStackable *LPIINTERNETPROTOCOLSINKStackable;
5680 
5681 DEFINE_GUID(IID_IInternetProtocolSinkStackable, 0x79eac9f0, 0xbaf9, 0x11ce, 0x8c,0x82, 0x00,0xaa,0x00,0x4b,0xa9,0x0b);
5682 #if defined(__cplusplus) && !defined(CINTERFACE)
5683 MIDL_INTERFACE("79eac9f0-baf9-11ce-8c82-00aa004ba90b")
5684 IInternetProtocolSinkStackable : public IUnknown
5685 {
5686     virtual HRESULT STDMETHODCALLTYPE SwitchSink(
5687         IInternetProtocolSink *pOIProtSink) = 0;
5688 
5689     virtual HRESULT STDMETHODCALLTYPE CommitSwitch(
5690         ) = 0;
5691 
5692     virtual HRESULT STDMETHODCALLTYPE RollbackSwitch(
5693         ) = 0;
5694 
5695 };
5696 #ifdef __CRT_UUID_DECL
5697 __CRT_UUID_DECL(IInternetProtocolSinkStackable, 0x79eac9f0, 0xbaf9, 0x11ce, 0x8c,0x82, 0x00,0xaa,0x00,0x4b,0xa9,0x0b)
5698 #endif
5699 #else
5700 typedef struct IInternetProtocolSinkStackableVtbl {
5701     BEGIN_INTERFACE
5702 
5703     /*** IUnknown methods ***/
5704     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
5705         IInternetProtocolSinkStackable *This,
5706         REFIID riid,
5707         void **ppvObject);
5708 
5709     ULONG (STDMETHODCALLTYPE *AddRef)(
5710         IInternetProtocolSinkStackable *This);
5711 
5712     ULONG (STDMETHODCALLTYPE *Release)(
5713         IInternetProtocolSinkStackable *This);
5714 
5715     /*** IInternetProtocolSinkStackable methods ***/
5716     HRESULT (STDMETHODCALLTYPE *SwitchSink)(
5717         IInternetProtocolSinkStackable *This,
5718         IInternetProtocolSink *pOIProtSink);
5719 
5720     HRESULT (STDMETHODCALLTYPE *CommitSwitch)(
5721         IInternetProtocolSinkStackable *This);
5722 
5723     HRESULT (STDMETHODCALLTYPE *RollbackSwitch)(
5724         IInternetProtocolSinkStackable *This);
5725 
5726     END_INTERFACE
5727 } IInternetProtocolSinkStackableVtbl;
5728 
5729 interface IInternetProtocolSinkStackable {
5730     CONST_VTBL IInternetProtocolSinkStackableVtbl* lpVtbl;
5731 };
5732 
5733 #ifdef COBJMACROS
5734 #ifndef WIDL_C_INLINE_WRAPPERS
5735 /*** IUnknown methods ***/
5736 #define IInternetProtocolSinkStackable_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
5737 #define IInternetProtocolSinkStackable_AddRef(This) (This)->lpVtbl->AddRef(This)
5738 #define IInternetProtocolSinkStackable_Release(This) (This)->lpVtbl->Release(This)
5739 /*** IInternetProtocolSinkStackable methods ***/
5740 #define IInternetProtocolSinkStackable_SwitchSink(This,pOIProtSink) (This)->lpVtbl->SwitchSink(This,pOIProtSink)
5741 #define IInternetProtocolSinkStackable_CommitSwitch(This) (This)->lpVtbl->CommitSwitch(This)
5742 #define IInternetProtocolSinkStackable_RollbackSwitch(This) (This)->lpVtbl->RollbackSwitch(This)
5743 #else
5744 /*** IUnknown methods ***/
5745 static FORCEINLINE HRESULT IInternetProtocolSinkStackable_QueryInterface(IInternetProtocolSinkStackable* This,REFIID riid,void **ppvObject) {
5746     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
5747 }
5748 static FORCEINLINE ULONG IInternetProtocolSinkStackable_AddRef(IInternetProtocolSinkStackable* This) {
5749     return This->lpVtbl->AddRef(This);
5750 }
5751 static FORCEINLINE ULONG IInternetProtocolSinkStackable_Release(IInternetProtocolSinkStackable* This) {
5752     return This->lpVtbl->Release(This);
5753 }
5754 /*** IInternetProtocolSinkStackable methods ***/
5755 static FORCEINLINE HRESULT IInternetProtocolSinkStackable_SwitchSink(IInternetProtocolSinkStackable* This,IInternetProtocolSink *pOIProtSink) {
5756     return This->lpVtbl->SwitchSink(This,pOIProtSink);
5757 }
5758 static FORCEINLINE HRESULT IInternetProtocolSinkStackable_CommitSwitch(IInternetProtocolSinkStackable* This) {
5759     return This->lpVtbl->CommitSwitch(This);
5760 }
5761 static FORCEINLINE HRESULT IInternetProtocolSinkStackable_RollbackSwitch(IInternetProtocolSinkStackable* This) {
5762     return This->lpVtbl->RollbackSwitch(This);
5763 }
5764 #endif
5765 #endif
5766 
5767 #endif
5768 
5769 
5770 #endif  /* __IInternetProtocolSinkStackable_INTERFACE_DEFINED__ */
5771 
5772 #endif
5773 
5774 #ifndef _LPIINTERNETSESSION_DEFINED
5775 #define _LPIINTERNETSESSION_DEFINED
5776 
5777 /*****************************************************************************
5778  * IInternetSession interface
5779  */
5780 #ifndef __IInternetSession_INTERFACE_DEFINED__
5781 #define __IInternetSession_INTERFACE_DEFINED__
5782 
5783 typedef IInternetSession *LPIINTERNETSESSION;
5784 
5785 typedef enum _tagOIBDG_FLAGS {
5786     OIBDG_APARTMENTTHREADED = 0x100,
5787     OIBDG_DATAONLY = 0x1000
5788 } OIBDG_FLAGS;
5789 
5790 DEFINE_GUID(IID_IInternetSession, 0x79eac9e7, 0xbaf9, 0x11ce, 0x8c,0x82, 0x00,0xaa,0x00,0x4b,0xa9,0x0b);
5791 #if defined(__cplusplus) && !defined(CINTERFACE)
5792 MIDL_INTERFACE("79eac9e7-baf9-11ce-8c82-00aa004ba90b")
5793 IInternetSession : public IUnknown
5794 {
5795     virtual HRESULT STDMETHODCALLTYPE RegisterNameSpace(
5796         IClassFactory *pCF,
5797         REFCLSID rclsid,
5798         LPCWSTR pwzProtocol,
5799         ULONG cPatterns,
5800         const LPCWSTR *ppwzPatterns,
5801         DWORD dwReserved) = 0;
5802 
5803     virtual HRESULT STDMETHODCALLTYPE UnregisterNameSpace(
5804         IClassFactory *pCF,
5805         LPCWSTR pszProtocol) = 0;
5806 
5807     virtual HRESULT STDMETHODCALLTYPE RegisterMimeFilter(
5808         IClassFactory *pCF,
5809         REFCLSID rclsid,
5810         LPCWSTR pwzType) = 0;
5811 
5812     virtual HRESULT STDMETHODCALLTYPE UnregisterMimeFilter(
5813         IClassFactory *pCF,
5814         LPCWSTR pwzType) = 0;
5815 
5816     virtual HRESULT STDMETHODCALLTYPE CreateBinding(
5817         LPBC pBC,
5818         LPCWSTR szUrl,
5819         IUnknown *pUnkOuter,
5820         IUnknown **ppUnk,
5821         IInternetProtocol **ppOInetProt,
5822         DWORD dwOption) = 0;
5823 
5824     virtual HRESULT STDMETHODCALLTYPE SetSessionOption(
5825         DWORD dwOption,
5826         LPVOID pBuffer,
5827         DWORD dwBufferLength,
5828         DWORD dwReserved) = 0;
5829 
5830     virtual HRESULT STDMETHODCALLTYPE GetSessionOption(
5831         DWORD dwOption,
5832         LPVOID pBuffer,
5833         DWORD *pdwBufferLength,
5834         DWORD dwReserved) = 0;
5835 
5836 };
5837 #ifdef __CRT_UUID_DECL
5838 __CRT_UUID_DECL(IInternetSession, 0x79eac9e7, 0xbaf9, 0x11ce, 0x8c,0x82, 0x00,0xaa,0x00,0x4b,0xa9,0x0b)
5839 #endif
5840 #else
5841 typedef struct IInternetSessionVtbl {
5842     BEGIN_INTERFACE
5843 
5844     /*** IUnknown methods ***/
5845     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
5846         IInternetSession *This,
5847         REFIID riid,
5848         void **ppvObject);
5849 
5850     ULONG (STDMETHODCALLTYPE *AddRef)(
5851         IInternetSession *This);
5852 
5853     ULONG (STDMETHODCALLTYPE *Release)(
5854         IInternetSession *This);
5855 
5856     /*** IInternetSession methods ***/
5857     HRESULT (STDMETHODCALLTYPE *RegisterNameSpace)(
5858         IInternetSession *This,
5859         IClassFactory *pCF,
5860         REFCLSID rclsid,
5861         LPCWSTR pwzProtocol,
5862         ULONG cPatterns,
5863         const LPCWSTR *ppwzPatterns,
5864         DWORD dwReserved);
5865 
5866     HRESULT (STDMETHODCALLTYPE *UnregisterNameSpace)(
5867         IInternetSession *This,
5868         IClassFactory *pCF,
5869         LPCWSTR pszProtocol);
5870 
5871     HRESULT (STDMETHODCALLTYPE *RegisterMimeFilter)(
5872         IInternetSession *This,
5873         IClassFactory *pCF,
5874         REFCLSID rclsid,
5875         LPCWSTR pwzType);
5876 
5877     HRESULT (STDMETHODCALLTYPE *UnregisterMimeFilter)(
5878         IInternetSession *This,
5879         IClassFactory *pCF,
5880         LPCWSTR pwzType);
5881 
5882     HRESULT (STDMETHODCALLTYPE *CreateBinding)(
5883         IInternetSession *This,
5884         LPBC pBC,
5885         LPCWSTR szUrl,
5886         IUnknown *pUnkOuter,
5887         IUnknown **ppUnk,
5888         IInternetProtocol **ppOInetProt,
5889         DWORD dwOption);
5890 
5891     HRESULT (STDMETHODCALLTYPE *SetSessionOption)(
5892         IInternetSession *This,
5893         DWORD dwOption,
5894         LPVOID pBuffer,
5895         DWORD dwBufferLength,
5896         DWORD dwReserved);
5897 
5898     HRESULT (STDMETHODCALLTYPE *GetSessionOption)(
5899         IInternetSession *This,
5900         DWORD dwOption,
5901         LPVOID pBuffer,
5902         DWORD *pdwBufferLength,
5903         DWORD dwReserved);
5904 
5905     END_INTERFACE
5906 } IInternetSessionVtbl;
5907 
5908 interface IInternetSession {
5909     CONST_VTBL IInternetSessionVtbl* lpVtbl;
5910 };
5911 
5912 #ifdef COBJMACROS
5913 #ifndef WIDL_C_INLINE_WRAPPERS
5914 /*** IUnknown methods ***/
5915 #define IInternetSession_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
5916 #define IInternetSession_AddRef(This) (This)->lpVtbl->AddRef(This)
5917 #define IInternetSession_Release(This) (This)->lpVtbl->Release(This)
5918 /*** IInternetSession methods ***/
5919 #define IInternetSession_RegisterNameSpace(This,pCF,rclsid,pwzProtocol,cPatterns,ppwzPatterns,dwReserved) (This)->lpVtbl->RegisterNameSpace(This,pCF,rclsid,pwzProtocol,cPatterns,ppwzPatterns,dwReserved)
5920 #define IInternetSession_UnregisterNameSpace(This,pCF,pszProtocol) (This)->lpVtbl->UnregisterNameSpace(This,pCF,pszProtocol)
5921 #define IInternetSession_RegisterMimeFilter(This,pCF,rclsid,pwzType) (This)->lpVtbl->RegisterMimeFilter(This,pCF,rclsid,pwzType)
5922 #define IInternetSession_UnregisterMimeFilter(This,pCF,pwzType) (This)->lpVtbl->UnregisterMimeFilter(This,pCF,pwzType)
5923 #define IInternetSession_CreateBinding(This,pBC,szUrl,pUnkOuter,ppUnk,ppOInetProt,dwOption) (This)->lpVtbl->CreateBinding(This,pBC,szUrl,pUnkOuter,ppUnk,ppOInetProt,dwOption)
5924 #define IInternetSession_SetSessionOption(This,dwOption,pBuffer,dwBufferLength,dwReserved) (This)->lpVtbl->SetSessionOption(This,dwOption,pBuffer,dwBufferLength,dwReserved)
5925 #define IInternetSession_GetSessionOption(This,dwOption,pBuffer,pdwBufferLength,dwReserved) (This)->lpVtbl->GetSessionOption(This,dwOption,pBuffer,pdwBufferLength,dwReserved)
5926 #else
5927 /*** IUnknown methods ***/
5928 static FORCEINLINE HRESULT IInternetSession_QueryInterface(IInternetSession* This,REFIID riid,void **ppvObject) {
5929     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
5930 }
5931 static FORCEINLINE ULONG IInternetSession_AddRef(IInternetSession* This) {
5932     return This->lpVtbl->AddRef(This);
5933 }
5934 static FORCEINLINE ULONG IInternetSession_Release(IInternetSession* This) {
5935     return This->lpVtbl->Release(This);
5936 }
5937 /*** IInternetSession methods ***/
5938 static FORCEINLINE HRESULT IInternetSession_RegisterNameSpace(IInternetSession* This,IClassFactory *pCF,REFCLSID rclsid,LPCWSTR pwzProtocol,ULONG cPatterns,const LPCWSTR *ppwzPatterns,DWORD dwReserved) {
5939     return This->lpVtbl->RegisterNameSpace(This,pCF,rclsid,pwzProtocol,cPatterns,ppwzPatterns,dwReserved);
5940 }
5941 static FORCEINLINE HRESULT IInternetSession_UnregisterNameSpace(IInternetSession* This,IClassFactory *pCF,LPCWSTR pszProtocol) {
5942     return This->lpVtbl->UnregisterNameSpace(This,pCF,pszProtocol);
5943 }
5944 static FORCEINLINE HRESULT IInternetSession_RegisterMimeFilter(IInternetSession* This,IClassFactory *pCF,REFCLSID rclsid,LPCWSTR pwzType) {
5945     return This->lpVtbl->RegisterMimeFilter(This,pCF,rclsid,pwzType);
5946 }
5947 static FORCEINLINE HRESULT IInternetSession_UnregisterMimeFilter(IInternetSession* This,IClassFactory *pCF,LPCWSTR pwzType) {
5948     return This->lpVtbl->UnregisterMimeFilter(This,pCF,pwzType);
5949 }
5950 static FORCEINLINE HRESULT IInternetSession_CreateBinding(IInternetSession* This,LPBC pBC,LPCWSTR szUrl,IUnknown *pUnkOuter,IUnknown **ppUnk,IInternetProtocol **ppOInetProt,DWORD dwOption) {
5951     return This->lpVtbl->CreateBinding(This,pBC,szUrl,pUnkOuter,ppUnk,ppOInetProt,dwOption);
5952 }
5953 static FORCEINLINE HRESULT IInternetSession_SetSessionOption(IInternetSession* This,DWORD dwOption,LPVOID pBuffer,DWORD dwBufferLength,DWORD dwReserved) {
5954     return This->lpVtbl->SetSessionOption(This,dwOption,pBuffer,dwBufferLength,dwReserved);
5955 }
5956 static FORCEINLINE HRESULT IInternetSession_GetSessionOption(IInternetSession* This,DWORD dwOption,LPVOID pBuffer,DWORD *pdwBufferLength,DWORD dwReserved) {
5957     return This->lpVtbl->GetSessionOption(This,dwOption,pBuffer,pdwBufferLength,dwReserved);
5958 }
5959 #endif
5960 #endif
5961 
5962 #endif
5963 
5964 
5965 #endif  /* __IInternetSession_INTERFACE_DEFINED__ */
5966 
5967 #endif
5968 
5969 #ifndef _LPIINTERNETTHREADSWITCH_DEFINED
5970 #define _LPIINTERNETTHREADSWITCH_DEFINED
5971 
5972 /*****************************************************************************
5973  * IInternetThreadSwitch interface
5974  */
5975 #ifndef __IInternetThreadSwitch_INTERFACE_DEFINED__
5976 #define __IInternetThreadSwitch_INTERFACE_DEFINED__
5977 
5978 typedef IInternetThreadSwitch *LPIINTERNETTHREADSWITCH;
5979 
5980 DEFINE_GUID(IID_IInternetThreadSwitch, 0x79eac9e8, 0xbaf9, 0x11ce, 0x8c,0x82, 0x00,0xaa,0x00,0x4b,0xa9,0x0b);
5981 #if defined(__cplusplus) && !defined(CINTERFACE)
5982 MIDL_INTERFACE("79eac9e8-baf9-11ce-8c82-00aa004ba90b")
5983 IInternetThreadSwitch : public IUnknown
5984 {
5985     virtual HRESULT STDMETHODCALLTYPE Prepare(
5986         ) = 0;
5987 
5988     virtual HRESULT STDMETHODCALLTYPE Continue(
5989         ) = 0;
5990 
5991 };
5992 #ifdef __CRT_UUID_DECL
5993 __CRT_UUID_DECL(IInternetThreadSwitch, 0x79eac9e8, 0xbaf9, 0x11ce, 0x8c,0x82, 0x00,0xaa,0x00,0x4b,0xa9,0x0b)
5994 #endif
5995 #else
5996 typedef struct IInternetThreadSwitchVtbl {
5997     BEGIN_INTERFACE
5998 
5999     /*** IUnknown methods ***/
6000     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
6001         IInternetThreadSwitch *This,
6002         REFIID riid,
6003         void **ppvObject);
6004 
6005     ULONG (STDMETHODCALLTYPE *AddRef)(
6006         IInternetThreadSwitch *This);
6007 
6008     ULONG (STDMETHODCALLTYPE *Release)(
6009         IInternetThreadSwitch *This);
6010 
6011     /*** IInternetThreadSwitch methods ***/
6012     HRESULT (STDMETHODCALLTYPE *Prepare)(
6013         IInternetThreadSwitch *This);
6014 
6015     HRESULT (STDMETHODCALLTYPE *Continue)(
6016         IInternetThreadSwitch *This);
6017 
6018     END_INTERFACE
6019 } IInternetThreadSwitchVtbl;
6020 
6021 interface IInternetThreadSwitch {
6022     CONST_VTBL IInternetThreadSwitchVtbl* lpVtbl;
6023 };
6024 
6025 #ifdef COBJMACROS
6026 #ifndef WIDL_C_INLINE_WRAPPERS
6027 /*** IUnknown methods ***/
6028 #define IInternetThreadSwitch_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
6029 #define IInternetThreadSwitch_AddRef(This) (This)->lpVtbl->AddRef(This)
6030 #define IInternetThreadSwitch_Release(This) (This)->lpVtbl->Release(This)
6031 /*** IInternetThreadSwitch methods ***/
6032 #define IInternetThreadSwitch_Prepare(This) (This)->lpVtbl->Prepare(This)
6033 #define IInternetThreadSwitch_Continue(This) (This)->lpVtbl->Continue(This)
6034 #else
6035 /*** IUnknown methods ***/
6036 static FORCEINLINE HRESULT IInternetThreadSwitch_QueryInterface(IInternetThreadSwitch* This,REFIID riid,void **ppvObject) {
6037     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
6038 }
6039 static FORCEINLINE ULONG IInternetThreadSwitch_AddRef(IInternetThreadSwitch* This) {
6040     return This->lpVtbl->AddRef(This);
6041 }
6042 static FORCEINLINE ULONG IInternetThreadSwitch_Release(IInternetThreadSwitch* This) {
6043     return This->lpVtbl->Release(This);
6044 }
6045 /*** IInternetThreadSwitch methods ***/
6046 static FORCEINLINE HRESULT IInternetThreadSwitch_Prepare(IInternetThreadSwitch* This) {
6047     return This->lpVtbl->Prepare(This);
6048 }
6049 static FORCEINLINE HRESULT IInternetThreadSwitch_Continue(IInternetThreadSwitch* This) {
6050     return This->lpVtbl->Continue(This);
6051 }
6052 #endif
6053 #endif
6054 
6055 #endif
6056 
6057 
6058 #endif  /* __IInternetThreadSwitch_INTERFACE_DEFINED__ */
6059 
6060 #endif
6061 
6062 #ifndef _LPIINTERNETPRIORITY_DEFINED
6063 #define _LPIINTERNETPRIORITY_DEFINED
6064 
6065 /*****************************************************************************
6066  * IInternetPriority interface
6067  */
6068 #ifndef __IInternetPriority_INTERFACE_DEFINED__
6069 #define __IInternetPriority_INTERFACE_DEFINED__
6070 
6071 typedef IInternetPriority *LPIINTERNETPRIORITY;
6072 
6073 DEFINE_GUID(IID_IInternetPriority, 0x79eac9eb, 0xbaf9, 0x11ce, 0x8c,0x82, 0x00,0xaa,0x00,0x4b,0xa9,0x0b);
6074 #if defined(__cplusplus) && !defined(CINTERFACE)
6075 MIDL_INTERFACE("79eac9eb-baf9-11ce-8c82-00aa004ba90b")
6076 IInternetPriority : public IUnknown
6077 {
6078     virtual HRESULT STDMETHODCALLTYPE SetPriority(
6079         LONG nPriority) = 0;
6080 
6081     virtual HRESULT STDMETHODCALLTYPE GetPriority(
6082         LONG *pnPriority) = 0;
6083 
6084 };
6085 #ifdef __CRT_UUID_DECL
6086 __CRT_UUID_DECL(IInternetPriority, 0x79eac9eb, 0xbaf9, 0x11ce, 0x8c,0x82, 0x00,0xaa,0x00,0x4b,0xa9,0x0b)
6087 #endif
6088 #else
6089 typedef struct IInternetPriorityVtbl {
6090     BEGIN_INTERFACE
6091 
6092     /*** IUnknown methods ***/
6093     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
6094         IInternetPriority *This,
6095         REFIID riid,
6096         void **ppvObject);
6097 
6098     ULONG (STDMETHODCALLTYPE *AddRef)(
6099         IInternetPriority *This);
6100 
6101     ULONG (STDMETHODCALLTYPE *Release)(
6102         IInternetPriority *This);
6103 
6104     /*** IInternetPriority methods ***/
6105     HRESULT (STDMETHODCALLTYPE *SetPriority)(
6106         IInternetPriority *This,
6107         LONG nPriority);
6108 
6109     HRESULT (STDMETHODCALLTYPE *GetPriority)(
6110         IInternetPriority *This,
6111         LONG *pnPriority);
6112 
6113     END_INTERFACE
6114 } IInternetPriorityVtbl;
6115 
6116 interface IInternetPriority {
6117     CONST_VTBL IInternetPriorityVtbl* lpVtbl;
6118 };
6119 
6120 #ifdef COBJMACROS
6121 #ifndef WIDL_C_INLINE_WRAPPERS
6122 /*** IUnknown methods ***/
6123 #define IInternetPriority_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
6124 #define IInternetPriority_AddRef(This) (This)->lpVtbl->AddRef(This)
6125 #define IInternetPriority_Release(This) (This)->lpVtbl->Release(This)
6126 /*** IInternetPriority methods ***/
6127 #define IInternetPriority_SetPriority(This,nPriority) (This)->lpVtbl->SetPriority(This,nPriority)
6128 #define IInternetPriority_GetPriority(This,pnPriority) (This)->lpVtbl->GetPriority(This,pnPriority)
6129 #else
6130 /*** IUnknown methods ***/
6131 static FORCEINLINE HRESULT IInternetPriority_QueryInterface(IInternetPriority* This,REFIID riid,void **ppvObject) {
6132     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
6133 }
6134 static FORCEINLINE ULONG IInternetPriority_AddRef(IInternetPriority* This) {
6135     return This->lpVtbl->AddRef(This);
6136 }
6137 static FORCEINLINE ULONG IInternetPriority_Release(IInternetPriority* This) {
6138     return This->lpVtbl->Release(This);
6139 }
6140 /*** IInternetPriority methods ***/
6141 static FORCEINLINE HRESULT IInternetPriority_SetPriority(IInternetPriority* This,LONG nPriority) {
6142     return This->lpVtbl->SetPriority(This,nPriority);
6143 }
6144 static FORCEINLINE HRESULT IInternetPriority_GetPriority(IInternetPriority* This,LONG *pnPriority) {
6145     return This->lpVtbl->GetPriority(This,pnPriority);
6146 }
6147 #endif
6148 #endif
6149 
6150 #endif
6151 
6152 
6153 #endif  /* __IInternetPriority_INTERFACE_DEFINED__ */
6154 
6155 #endif
6156 
6157 #ifndef _LPIINTERNETPROTOCOLINFO_DEFINED
6158 #define _LPIINTERNETPROTOCOLINFO_DEFINED
6159 
6160 /*****************************************************************************
6161  * IInternetProtocolInfo interface
6162  */
6163 #ifndef __IInternetProtocolInfo_INTERFACE_DEFINED__
6164 #define __IInternetProtocolInfo_INTERFACE_DEFINED__
6165 
6166 typedef IInternetProtocolInfo *LPIINTERNETPROTOCOLINFO;
6167 
6168 typedef enum _tagPARSEACTION {
6169     PARSE_CANONICALIZE = 1,
6170     PARSE_FRIENDLY = 2,
6171     PARSE_SECURITY_URL = 3,
6172     PARSE_ROOTDOCUMENT = 4,
6173     PARSE_DOCUMENT = 5,
6174     PARSE_ANCHOR = 6,
6175     PARSE_ENCODE_IS_UNESCAPE = 7,
6176     PARSE_DECODE_IS_ESCAPE = 8,
6177     PARSE_PATH_FROM_URL = 9,
6178     PARSE_URL_FROM_PATH = 10,
6179     PARSE_MIME = 11,
6180     PARSE_SERVER = 12,
6181     PARSE_SCHEMA = 13,
6182     PARSE_SITE = 14,
6183     PARSE_DOMAIN = 15,
6184     PARSE_LOCATION = 16,
6185     PARSE_SECURITY_DOMAIN = 17,
6186     PARSE_ESCAPE = 18,
6187     PARSE_UNESCAPE = 19
6188 } PARSEACTION;
6189 
6190 typedef enum _tagPSUACTION {
6191     PSU_DEFAULT = 1,
6192     PSU_SECURITY_URL_ONLY = 2
6193 } PSUACTION;
6194 
6195 typedef enum _tagQUERYOPTION {
6196     QUERY_EXPIRATION_DATE = 1,
6197     QUERY_TIME_OF_LAST_CHANGE = 2,
6198     QUERY_CONTENT_ENCODING = 3,
6199     QUERY_CONTENT_TYPE = 4,
6200     QUERY_REFRESH = 5,
6201     QUERY_RECOMBINE = 6,
6202     QUERY_CAN_NAVIGATE = 7,
6203     QUERY_USES_NETWORK = 8,
6204     QUERY_IS_CACHED = 9,
6205     QUERY_IS_INSTALLEDENTRY = 10,
6206     QUERY_IS_CACHED_OR_MAPPED = 11,
6207     QUERY_USES_CACHE = 12,
6208     QUERY_IS_SECURE = 13,
6209     QUERY_IS_SAFE = 14,
6210     QUERY_USES_HISTORYFOLDER = 15,
6211     QUERY_IS_CACHED_AND_USABLE_OFFLINE = 16
6212 } QUERYOPTION;
6213 
6214 DEFINE_GUID(IID_IInternetProtocolInfo, 0x79eac9ec, 0xbaf9, 0x11ce, 0x8c,0x82, 0x00,0xaa,0x00,0x4b,0xa9,0x0b);
6215 #if defined(__cplusplus) && !defined(CINTERFACE)
6216 MIDL_INTERFACE("79eac9ec-baf9-11ce-8c82-00aa004ba90b")
6217 IInternetProtocolInfo : public IUnknown
6218 {
6219     virtual HRESULT STDMETHODCALLTYPE ParseUrl(
6220         LPCWSTR pwzUrl,
6221         PARSEACTION ParseAction,
6222         DWORD dwParseFlags,
6223         LPWSTR pwzResult,
6224         DWORD cchResult,
6225         DWORD *pcchResult,
6226         DWORD dwReserved) = 0;
6227 
6228     virtual HRESULT STDMETHODCALLTYPE CombineUrl(
6229         LPCWSTR pwzBaseUrl,
6230         LPCWSTR pwzRelativeUrl,
6231         DWORD dwCombineFlags,
6232         LPWSTR pwzResult,
6233         DWORD cchResult,
6234         DWORD *pcchResult,
6235         DWORD dwReserved) = 0;
6236 
6237     virtual HRESULT STDMETHODCALLTYPE CompareUrl(
6238         LPCWSTR pwzUrl1,
6239         LPCWSTR pwzUrl2,
6240         DWORD dwCompareFlags) = 0;
6241 
6242     virtual HRESULT STDMETHODCALLTYPE QueryInfo(
6243         LPCWSTR pwzUrl,
6244         QUERYOPTION OueryOption,
6245         DWORD dwQueryFlags,
6246         LPVOID pBuffer,
6247         DWORD cbBuffer,
6248         DWORD *pcbBuf,
6249         DWORD dwReserved) = 0;
6250 
6251 };
6252 #ifdef __CRT_UUID_DECL
6253 __CRT_UUID_DECL(IInternetProtocolInfo, 0x79eac9ec, 0xbaf9, 0x11ce, 0x8c,0x82, 0x00,0xaa,0x00,0x4b,0xa9,0x0b)
6254 #endif
6255 #else
6256 typedef struct IInternetProtocolInfoVtbl {
6257     BEGIN_INTERFACE
6258 
6259     /*** IUnknown methods ***/
6260     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
6261         IInternetProtocolInfo *This,
6262         REFIID riid,
6263         void **ppvObject);
6264 
6265     ULONG (STDMETHODCALLTYPE *AddRef)(
6266         IInternetProtocolInfo *This);
6267 
6268     ULONG (STDMETHODCALLTYPE *Release)(
6269         IInternetProtocolInfo *This);
6270 
6271     /*** IInternetProtocolInfo methods ***/
6272     HRESULT (STDMETHODCALLTYPE *ParseUrl)(
6273         IInternetProtocolInfo *This,
6274         LPCWSTR pwzUrl,
6275         PARSEACTION ParseAction,
6276         DWORD dwParseFlags,
6277         LPWSTR pwzResult,
6278         DWORD cchResult,
6279         DWORD *pcchResult,
6280         DWORD dwReserved);
6281 
6282     HRESULT (STDMETHODCALLTYPE *CombineUrl)(
6283         IInternetProtocolInfo *This,
6284         LPCWSTR pwzBaseUrl,
6285         LPCWSTR pwzRelativeUrl,
6286         DWORD dwCombineFlags,
6287         LPWSTR pwzResult,
6288         DWORD cchResult,
6289         DWORD *pcchResult,
6290         DWORD dwReserved);
6291 
6292     HRESULT (STDMETHODCALLTYPE *CompareUrl)(
6293         IInternetProtocolInfo *This,
6294         LPCWSTR pwzUrl1,
6295         LPCWSTR pwzUrl2,
6296         DWORD dwCompareFlags);
6297 
6298     HRESULT (STDMETHODCALLTYPE *QueryInfo)(
6299         IInternetProtocolInfo *This,
6300         LPCWSTR pwzUrl,
6301         QUERYOPTION OueryOption,
6302         DWORD dwQueryFlags,
6303         LPVOID pBuffer,
6304         DWORD cbBuffer,
6305         DWORD *pcbBuf,
6306         DWORD dwReserved);
6307 
6308     END_INTERFACE
6309 } IInternetProtocolInfoVtbl;
6310 
6311 interface IInternetProtocolInfo {
6312     CONST_VTBL IInternetProtocolInfoVtbl* lpVtbl;
6313 };
6314 
6315 #ifdef COBJMACROS
6316 #ifndef WIDL_C_INLINE_WRAPPERS
6317 /*** IUnknown methods ***/
6318 #define IInternetProtocolInfo_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
6319 #define IInternetProtocolInfo_AddRef(This) (This)->lpVtbl->AddRef(This)
6320 #define IInternetProtocolInfo_Release(This) (This)->lpVtbl->Release(This)
6321 /*** IInternetProtocolInfo methods ***/
6322 #define IInternetProtocolInfo_ParseUrl(This,pwzUrl,ParseAction,dwParseFlags,pwzResult,cchResult,pcchResult,dwReserved) (This)->lpVtbl->ParseUrl(This,pwzUrl,ParseAction,dwParseFlags,pwzResult,cchResult,pcchResult,dwReserved)
6323 #define IInternetProtocolInfo_CombineUrl(This,pwzBaseUrl,pwzRelativeUrl,dwCombineFlags,pwzResult,cchResult,pcchResult,dwReserved) (This)->lpVtbl->CombineUrl(This,pwzBaseUrl,pwzRelativeUrl,dwCombineFlags,pwzResult,cchResult,pcchResult,dwReserved)
6324 #define IInternetProtocolInfo_CompareUrl(This,pwzUrl1,pwzUrl2,dwCompareFlags) (This)->lpVtbl->CompareUrl(This,pwzUrl1,pwzUrl2,dwCompareFlags)
6325 #define IInternetProtocolInfo_QueryInfo(This,pwzUrl,OueryOption,dwQueryFlags,pBuffer,cbBuffer,pcbBuf,dwReserved) (This)->lpVtbl->QueryInfo(This,pwzUrl,OueryOption,dwQueryFlags,pBuffer,cbBuffer,pcbBuf,dwReserved)
6326 #else
6327 /*** IUnknown methods ***/
6328 static FORCEINLINE HRESULT IInternetProtocolInfo_QueryInterface(IInternetProtocolInfo* This,REFIID riid,void **ppvObject) {
6329     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
6330 }
6331 static FORCEINLINE ULONG IInternetProtocolInfo_AddRef(IInternetProtocolInfo* This) {
6332     return This->lpVtbl->AddRef(This);
6333 }
6334 static FORCEINLINE ULONG IInternetProtocolInfo_Release(IInternetProtocolInfo* This) {
6335     return This->lpVtbl->Release(This);
6336 }
6337 /*** IInternetProtocolInfo methods ***/
6338 static FORCEINLINE HRESULT IInternetProtocolInfo_ParseUrl(IInternetProtocolInfo* This,LPCWSTR pwzUrl,PARSEACTION ParseAction,DWORD dwParseFlags,LPWSTR pwzResult,DWORD cchResult,DWORD *pcchResult,DWORD dwReserved) {
6339     return This->lpVtbl->ParseUrl(This,pwzUrl,ParseAction,dwParseFlags,pwzResult,cchResult,pcchResult,dwReserved);
6340 }
6341 static FORCEINLINE HRESULT IInternetProtocolInfo_CombineUrl(IInternetProtocolInfo* This,LPCWSTR pwzBaseUrl,LPCWSTR pwzRelativeUrl,DWORD dwCombineFlags,LPWSTR pwzResult,DWORD cchResult,DWORD *pcchResult,DWORD dwReserved) {
6342     return This->lpVtbl->CombineUrl(This,pwzBaseUrl,pwzRelativeUrl,dwCombineFlags,pwzResult,cchResult,pcchResult,dwReserved);
6343 }
6344 static FORCEINLINE HRESULT IInternetProtocolInfo_CompareUrl(IInternetProtocolInfo* This,LPCWSTR pwzUrl1,LPCWSTR pwzUrl2,DWORD dwCompareFlags) {
6345     return This->lpVtbl->CompareUrl(This,pwzUrl1,pwzUrl2,dwCompareFlags);
6346 }
6347 static FORCEINLINE HRESULT IInternetProtocolInfo_QueryInfo(IInternetProtocolInfo* This,LPCWSTR pwzUrl,QUERYOPTION OueryOption,DWORD dwQueryFlags,LPVOID pBuffer,DWORD cbBuffer,DWORD *pcbBuf,DWORD dwReserved) {
6348     return This->lpVtbl->QueryInfo(This,pwzUrl,OueryOption,dwQueryFlags,pBuffer,cbBuffer,pcbBuf,dwReserved);
6349 }
6350 #endif
6351 #endif
6352 
6353 #endif
6354 
6355 
6356 #endif  /* __IInternetProtocolInfo_INTERFACE_DEFINED__ */
6357 
6358 
6359 #ifndef URLMON_STRICT
6360 #define PARSE_ENCODE PARSE_ENCODE_IS_UNESCAPE
6361 #define PARSE_DECODE PARSE_DECODE_IS_ESCAPE
6362 #endif
6363 #endif
6364 
6365 #define IOInet               IInternet
6366 #define IOInetBindInfo       IInternetBindInfo
6367 #define IOInetBindInfoEx     IInternetBindInfoEx
6368 #define IOInetProtocolRoot   IInternetProtocolRoot
6369 #define IOInetProtocol       IInternetProtocol
6370 
6371 #if (_WIN32_IE >= _WIN32_IE_IE70)
6372 #define IOInetProtocolEx     IInternetProtocolEx
6373 #endif
6374 #define IOInetProtocolSink   IInternetProtocolSink
6375 #define IOInetProtocolInfo   IInternetProtocolInfo
6376 #define IOInetSession        IInternetSession
6377 #define IOInetPriority       IInternetPriority
6378 #define IOInetThreadSwitch   IInternetThreadSwitch
6379 #define IOInetProtocolSinkStackable   IInternetProtocolSinkStackable
6380 
6381 #define LPOINET              LPIINTERNET
6382 #define LPOINETPROTOCOLINFO  LPIINTERNETPROTOCOLINFO
6383 #define LPOINETBINDINFO      LPIINTERNETBINDINFO
6384 #define LPOINETPROTOCOLROOT  LPIINTERNETPROTOCOLROOT
6385 #define LPOINETPROTOCOL      LPIINTERNETPROTOCOL
6386 
6387 #if (_WIN32_IE >= _WIN32_IE_IE70)
6388 #define LPOINETPROTOCOLEX LPIINTERNETPROTOCOLEX
6389 #endif
6390 #define LPOINETPROTOCOLSINK  LPIINTERNETPROTOCOLSINK
6391 #define LPOINETSESSION       LPIINTERNETSESSION
6392 #define LPOINETTHREADSWITCH  LPIINTERNETTHREADSWITCH
6393 #define LPOINETPRIORITY      LPIINTERNETPRIORITY
6394 #define LPOINETPROTOCOLINFO  LPIINTERNETPROTOCOLINFO
6395 #define LPOINETPROTOCOLSINKSTACKABLE  LPIINTERNETPROTOCOLSINKSTACKABLE
6396 
6397 #define IID_IOInet               IID_IInternet
6398 #define IID_IOInetBindInfo       IID_IInternetBindInfo
6399 #define IID_IOInetBindInfoEx     IID_IInternetBindInfoEx
6400 #define IID_IOInetProtocolRoot   IID_IInternetProtocolRoot
6401 #define IID_IOInetProtocol       IID_IInternetProtocol
6402 
6403 #if (_WIN32_IE >= _WIN32_IE_IE70)
6404 #define IID_IOInetProtocolEx IID_IInternetProtocolEx
6405 #endif
6406 #define IID_IOInetProtocolSink   IID_IInternetProtocolSink
6407 #define IID_IOInetProtocolInfo   IID_IInternetProtocolInfo
6408 #define IID_IOInetSession        IID_IInternetSession
6409 #define IID_IOInetPriority       IID_IInternetPriority
6410 #define IID_IOInetThreadSwitch   IID_IInternetThreadSwitch
6411 #define IID_IOInetProtocolSinkStackable   IID_IInternetProtocolSinkStackable
6412 
6413 STDAPI CoInternetParseUrl(LPCWSTR pwzUrl, PARSEACTION ParseAction, DWORD dwFlags, LPWSTR pszResult, DWORD cchResult, DWORD *pcchResult, DWORD dwReserved);
6414 #if (_WIN32_IE >= _WIN32_IE_IE70)
6415 STDAPI CoInternetParseIUri(IUri *pIUri, PARSEACTION ParseAction, DWORD dwFlags, LPWSTR pwzResult, DWORD cchResult, DWORD *pcchResult, DWORD_PTR dwReserved);
6416 #endif
6417 STDAPI CoInternetCombineUrl(LPCWSTR pwzBaseUrl, LPCWSTR pwzRelativeUrl, DWORD dwCombineFlags, LPWSTR pszResult, DWORD cchResult, DWORD *pcchResult, DWORD dwReserved);
6418 #if (_WIN32_IE >= _WIN32_IE_IE70)
6419 STDAPI CoInternetCombineUrlEx(IUri *pBaseUri, LPCWSTR pwzRelativeUrl, DWORD dwCombineFlags, IUri **ppCombinedUri, DWORD_PTR dwReserved);
6420 STDAPI CoInternetCombineIUri (IUri *pBaseUri, IUri *pRelativeUri, DWORD dwCombineFlags, IUri **ppCombinedUri, DWORD_PTR dwReserved);
6421 #endif
6422 STDAPI CoInternetCompareUrl(LPCWSTR pwzUrl1, LPCWSTR pwzUrl2, DWORD dwFlags);
6423 STDAPI CoInternetGetProtocolFlags(LPCWSTR pwzUrl, DWORD *pdwFlags, DWORD dwReserved);
6424 STDAPI CoInternetQueryInfo(LPCWSTR pwzUrl, QUERYOPTION QueryOptions, DWORD dwQueryFlags, LPVOID pvBuffer, DWORD cbBuffer, DWORD *pcbBuffer, DWORD dwReserved);
6425 STDAPI CoInternetGetSession(DWORD dwSessionMode, IInternetSession **ppIInternetSession, DWORD dwReserved);
6426 STDAPI CoInternetGetSecurityUrl(LPCWSTR pwszUrl, LPWSTR *ppwszSecUrl, PSUACTION psuAction, DWORD dwReserved);
6427 STDAPI AsyncInstallDistributionUnit(LPCWSTR szDistUnit, LPCWSTR szTYPE, LPCWSTR szExt, DWORD dwFileVersionMS, DWORD dwFileVersionLS, LPCWSTR szURL,IBindCtx *pbc, LPVOID pvReserved,DWORD flags);
6428 #if (_WIN32_IE >= _WIN32_IE_IE70)
6429 STDAPI CoInternetGetSecurityUrlEx(IUri *pUri, IUri **ppSecUri, PSUACTION psuAction, DWORD_PTR dwReserved);
6430 #endif
6431 
6432 #if (_WIN32_IE >= _WIN32_IE_IE60SP2)
6433 #ifndef _INTERNETFEATURELIST_DEFINED
6434 #define _INTERNETFEATURELIST_DEFINED
6435 
6436 typedef enum _tagINTERNETFEATURELIST {
6437     FEATURE_OBJECT_CACHING = 0,
6438     FEATURE_ZONE_ELEVATION = 1,
6439     FEATURE_MIME_HANDLING = 2,
6440     FEATURE_MIME_SNIFFING = 3,
6441     FEATURE_WINDOW_RESTRICTIONS = 4,
6442     FEATURE_WEBOC_POPUPMANAGEMENT = 5,
6443     FEATURE_BEHAVIORS = 6,
6444     FEATURE_DISABLE_MK_PROTOCOL = 7,
6445     FEATURE_LOCALMACHINE_LOCKDOWN = 8,
6446     FEATURE_SECURITYBAND = 9,
6447     FEATURE_RESTRICT_ACTIVEXINSTALL = 10,
6448     FEATURE_VALIDATE_NAVIGATE_URL = 11,
6449     FEATURE_RESTRICT_FILEDOWNLOAD = 12,
6450     FEATURE_ADDON_MANAGEMENT = 13,
6451     FEATURE_PROTOCOL_LOCKDOWN = 14,
6452     FEATURE_HTTP_USERNAME_PASSWORD_DISABLE = 15,
6453     FEATURE_SAFE_BINDTOOBJECT = 16,
6454     FEATURE_UNC_SAVEDFILECHECK = 17,
6455     FEATURE_GET_URL_DOM_FILEPATH_UNENCODED = 18,
6456     FEATURE_TABBED_BROWSING = 19,
6457     FEATURE_SSLUX = 20,
6458     FEATURE_DISABLE_NAVIGATION_SOUNDS = 21,
6459     FEATURE_DISABLE_LEGACY_COMPRESSION = 22,
6460     FEATURE_FORCE_ADDR_AND_STATUS = 23,
6461     FEATURE_XMLHTTP = 24,
6462     FEATURE_DISABLE_TELNET_PROTOCOL = 25,
6463     FEATURE_FEEDS = 26,
6464     FEATURE_BLOCK_INPUT_PROMPTS = 27,
6465     FEATURE_ENTRY_COUNT = 28
6466 } INTERNETFEATURELIST;
6467 
6468 #define SET_FEATURE_ON_THREAD 0x1
6469 #define SET_FEATURE_ON_PROCESS 0x2
6470 #define SET_FEATURE_IN_REGISTRY 0x4
6471 #define SET_FEATURE_ON_THREAD_LOCALMACHINE 0x8
6472 #define SET_FEATURE_ON_THREAD_INTRANET 0x10
6473 #define SET_FEATURE_ON_THREAD_TRUSTED 0x20
6474 #define SET_FEATURE_ON_THREAD_INTERNET 0x40
6475 #define SET_FEATURE_ON_THREAD_RESTRICTED 0x80
6476 
6477 #define GET_FEATURE_FROM_THREAD 0x1
6478 #define GET_FEATURE_FROM_PROCESS 0x2
6479 #define GET_FEATURE_FROM_REGISTRY 0x4
6480 #define GET_FEATURE_FROM_THREAD_LOCALMACHINE 0x8
6481 #define GET_FEATURE_FROM_THREAD_INTRANET 0x10
6482 #define GET_FEATURE_FROM_THREAD_TRUSTED 0x20
6483 #define GET_FEATURE_FROM_THREAD_INTERNET 0x40
6484 #define GET_FEATURE_FROM_THREAD_RESTRICTED 0x80
6485 #endif
6486 
6487 STDAPI CoInternetSetFeatureEnabled(INTERNETFEATURELIST FeatureEntry, DWORD dwFlags, WINBOOL fEnable);
6488 STDAPI CoInternetIsFeatureEnabled(INTERNETFEATURELIST FeatureEntry, DWORD dwFlags);
6489 STDAPI CoInternetIsFeatureEnabledForUrl(INTERNETFEATURELIST FeatureEntry, DWORD dwFlags, LPCWSTR szURL, IInternetSecurityManager *pSecMgr);
6490 STDAPI CoInternetIsFeatureEnabledForIUri(INTERNETFEATURELIST FeatureEntry, DWORD dwFlags, IUri *pIUri, IInternetSecurityManagerEx2 *pSecMgr);
6491 STDAPI CoInternetIsFeatureZoneElevationEnabled(LPCWSTR szFromURL, LPCWSTR szToURL, IInternetSecurityManager *pSecMgr, DWORD dwFlags);
6492 #endif
6493 STDAPI CopyStgMedium(const STGMEDIUM *pcstgmedSrc, STGMEDIUM *pstgmedDest);
6494 STDAPI CopyBindInfo(const BINDINFO *pcbiSrc, BINDINFO *pbiDest);
6495 STDAPI_(void) ReleaseBindInfo(BINDINFO *pbindinfo);
6496 
6497 #define INET_E_USE_DEFAULT_PROTOCOLHANDLER _HRESULT_TYPEDEF_(__MSABI_LONG(0x800C0011))
6498 #define INET_E_USE_DEFAULT_SETTING         _HRESULT_TYPEDEF_(__MSABI_LONG(0x800C0012))
6499 #define INET_E_DEFAULT_ACTION              INET_E_USE_DEFAULT_PROTOCOLHANDLER
6500 #define INET_E_QUERYOPTION_UNKNOWN         _HRESULT_TYPEDEF_(__MSABI_LONG(0x800C0013))
6501 #define INET_E_REDIRECTING                 _HRESULT_TYPEDEF_(__MSABI_LONG(0x800C0014))
6502 
6503 #define OInetParseUrl CoInternetParseUrl
6504 #define OInetCombineUrl CoInternetCombineUrl
6505 #if (_WIN32_IE >= _WIN32_IE_IE70)
6506 #define OInetCombineUrlEx CoInternetCombineUrlEx
6507 #define OInetCombineIUri CoInternetCombineIUri
6508 #endif
6509 #define OInetCompareUrl CoInternetCompareUrl
6510 #define OInetQueryInfo CoInternetQueryInfo
6511 #define OInetGetSession CoInternetGetSession
6512 #endif
6513 
6514 #define PROTOCOLFLAG_NO_PICS_CHECK 0x1
6515 
6516 STDAPI CoInternetCreateSecurityManager(IServiceProvider *pSP, IInternetSecurityManager **ppSM, DWORD dwReserved);
6517 STDAPI CoInternetCreateZoneManager(IServiceProvider *pSP, IInternetZoneManager **ppZM, DWORD dwReserved);
6518 
6519 EXTERN_C const IID CLSID_InternetSecurityManager;
6520 EXTERN_C const IID CLSID_InternetZoneManager;
6521 
6522 #if (_WIN32_IE >= _WIN32_IE_IE60SP2)
6523 EXTERN_C const IID CLSID_PersistentZoneIdentifier;
6524 #endif
6525 
6526 #define SID_SInternetSecurityManager IID_IInternetSecurityManager
6527 #if (_WIN32_IE >= _WIN32_IE_IE60SP2)
6528 #define SID_SInternetSecurityManagerEx IID_IInternetSecurityManagerEx
6529 #endif
6530 #if (_WIN32_IE >= _WIN32_IE_IE70)
6531 #define SID_SInternetSecurityManagerEx2 IID_IInternetSecurityManagerEx2
6532 #endif
6533 #define SID_SInternetHostSecurityManager IID_IInternetHostSecurityManager
6534 
6535 #ifndef _LPINTERNETSECURITYMGRSITE_DEFINED
6536 #define _LPINTERNETSECURITYMGRSITE_DEFINED
6537 
6538 /*****************************************************************************
6539  * IInternetSecurityMgrSite interface
6540  */
6541 #ifndef __IInternetSecurityMgrSite_INTERFACE_DEFINED__
6542 #define __IInternetSecurityMgrSite_INTERFACE_DEFINED__
6543 
6544 DEFINE_GUID(IID_IInternetSecurityMgrSite, 0x79eac9ed, 0xbaf9, 0x11ce, 0x8c,0x82, 0x00,0xaa,0x00,0x4b,0xa9,0x0b);
6545 #if defined(__cplusplus) && !defined(CINTERFACE)
6546 MIDL_INTERFACE("79eac9ed-baf9-11ce-8c82-00aa004ba90b")
6547 IInternetSecurityMgrSite : public IUnknown
6548 {
6549     virtual HRESULT STDMETHODCALLTYPE GetWindow(
6550         HWND *phwnd) = 0;
6551 
6552     virtual HRESULT STDMETHODCALLTYPE EnableModeless(
6553         WINBOOL fEnable) = 0;
6554 
6555 };
6556 #ifdef __CRT_UUID_DECL
6557 __CRT_UUID_DECL(IInternetSecurityMgrSite, 0x79eac9ed, 0xbaf9, 0x11ce, 0x8c,0x82, 0x00,0xaa,0x00,0x4b,0xa9,0x0b)
6558 #endif
6559 #else
6560 typedef struct IInternetSecurityMgrSiteVtbl {
6561     BEGIN_INTERFACE
6562 
6563     /*** IUnknown methods ***/
6564     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
6565         IInternetSecurityMgrSite *This,
6566         REFIID riid,
6567         void **ppvObject);
6568 
6569     ULONG (STDMETHODCALLTYPE *AddRef)(
6570         IInternetSecurityMgrSite *This);
6571 
6572     ULONG (STDMETHODCALLTYPE *Release)(
6573         IInternetSecurityMgrSite *This);
6574 
6575     /*** IInternetSecurityMgrSite methods ***/
6576     HRESULT (STDMETHODCALLTYPE *GetWindow)(
6577         IInternetSecurityMgrSite *This,
6578         HWND *phwnd);
6579 
6580     HRESULT (STDMETHODCALLTYPE *EnableModeless)(
6581         IInternetSecurityMgrSite *This,
6582         WINBOOL fEnable);
6583 
6584     END_INTERFACE
6585 } IInternetSecurityMgrSiteVtbl;
6586 
6587 interface IInternetSecurityMgrSite {
6588     CONST_VTBL IInternetSecurityMgrSiteVtbl* lpVtbl;
6589 };
6590 
6591 #ifdef COBJMACROS
6592 #ifndef WIDL_C_INLINE_WRAPPERS
6593 /*** IUnknown methods ***/
6594 #define IInternetSecurityMgrSite_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
6595 #define IInternetSecurityMgrSite_AddRef(This) (This)->lpVtbl->AddRef(This)
6596 #define IInternetSecurityMgrSite_Release(This) (This)->lpVtbl->Release(This)
6597 /*** IInternetSecurityMgrSite methods ***/
6598 #define IInternetSecurityMgrSite_GetWindow(This,phwnd) (This)->lpVtbl->GetWindow(This,phwnd)
6599 #define IInternetSecurityMgrSite_EnableModeless(This,fEnable) (This)->lpVtbl->EnableModeless(This,fEnable)
6600 #else
6601 /*** IUnknown methods ***/
6602 static FORCEINLINE HRESULT IInternetSecurityMgrSite_QueryInterface(IInternetSecurityMgrSite* This,REFIID riid,void **ppvObject) {
6603     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
6604 }
6605 static FORCEINLINE ULONG IInternetSecurityMgrSite_AddRef(IInternetSecurityMgrSite* This) {
6606     return This->lpVtbl->AddRef(This);
6607 }
6608 static FORCEINLINE ULONG IInternetSecurityMgrSite_Release(IInternetSecurityMgrSite* This) {
6609     return This->lpVtbl->Release(This);
6610 }
6611 /*** IInternetSecurityMgrSite methods ***/
6612 static FORCEINLINE HRESULT IInternetSecurityMgrSite_GetWindow(IInternetSecurityMgrSite* This,HWND *phwnd) {
6613     return This->lpVtbl->GetWindow(This,phwnd);
6614 }
6615 static FORCEINLINE HRESULT IInternetSecurityMgrSite_EnableModeless(IInternetSecurityMgrSite* This,WINBOOL fEnable) {
6616     return This->lpVtbl->EnableModeless(This,fEnable);
6617 }
6618 #endif
6619 #endif
6620 
6621 #endif
6622 
6623 
6624 #endif  /* __IInternetSecurityMgrSite_INTERFACE_DEFINED__ */
6625 
6626 #endif
6627 
6628 #ifndef _LPINTERNETSECURITYMANANGER_DEFINED
6629 #define _LPINTERNETSECURITYMANANGER_DEFINED
6630 
6631 /*****************************************************************************
6632  * IInternetSecurityManager interface
6633  */
6634 #ifndef __IInternetSecurityManager_INTERFACE_DEFINED__
6635 #define __IInternetSecurityManager_INTERFACE_DEFINED__
6636 
6637 
6638 #define MUTZ_NOSAVEDFILECHECK 0x1
6639 #define MUTZ_ISFILE 0x2
6640 #define MUTZ_ACCEPT_WILDCARD_SCHEME 0x80
6641 #define MUTZ_ENFORCERESTRICTED 0x100
6642 #define MUTZ_RESERVED 0x200
6643 #define MUTZ_REQUIRESAVEDFILECHECK 0x400
6644 #define MUTZ_DONT_UNESCAPE 0x800
6645 #define MUTZ_DONT_USE_CACHE 0x1000
6646 #define MUTZ_FORCE_INTRANET_FLAGS 0x2000
6647 #define MUTZ_IGNORE_ZONE_MAPPINGS 0x4000
6648 
6649 
6650 #define MAX_SIZE_SECURITY_ID 512
6651 
6652 
6653 typedef enum __WIDL_urlmon_generated_name_0000000E {
6654     PUAF_DEFAULT = 0x0,
6655     PUAF_NOUI = 0x1,
6656     PUAF_ISFILE = 0x2,
6657     PUAF_WARN_IF_DENIED = 0x4,
6658     PUAF_FORCEUI_FOREGROUND = 0x8,
6659     PUAF_CHECK_TIFS = 0x10,
6660     PUAF_DONTCHECKBOXINDIALOG = 0x20,
6661     PUAF_TRUSTED = 0x40,
6662     PUAF_ACCEPT_WILDCARD_SCHEME = 0x80,
6663     PUAF_ENFORCERESTRICTED = 0x100,
6664     PUAF_NOSAVEDFILECHECK = 0x200,
6665     PUAF_REQUIRESAVEDFILECHECK = 0x400,
6666     PUAF_DONT_USE_CACHE = 0x1000,
6667     PUAF_RESERVED1 = 0x2000,
6668     PUAF_RESERVED2 = 0x4000,
6669     PUAF_LMZ_UNLOCKED = 0x10000,
6670     PUAF_LMZ_LOCKED = 0x20000,
6671     PUAF_DEFAULTZONEPOL = 0x40000,
6672     PUAF_NPL_USE_LOCKED_IF_RESTRICTED = 0x80000,
6673     PUAF_NOUIIFLOCKED = 0x100000,
6674     PUAF_DRAGPROTOCOLCHECK = 0x200000
6675 } PUAF;
6676 typedef enum __WIDL_urlmon_generated_name_0000000F {
6677     PUAFOUT_DEFAULT = 0x0,
6678     PUAFOUT_ISLOCKZONEPOLICY = 0x1
6679 } PUAFOUT;
6680 
6681 
6682 typedef enum __WIDL_urlmon_generated_name_00000010 {
6683     SZM_CREATE = 0x0,
6684     SZM_DELETE = 0x1
6685 } SZM_FLAGS;
6686 
6687 DEFINE_GUID(IID_IInternetSecurityManager, 0x79eac9ee, 0xbaf9, 0x11ce, 0x8c,0x82, 0x00,0xaa,0x00,0x4b,0xa9,0x0b);
6688 #if defined(__cplusplus) && !defined(CINTERFACE)
6689 MIDL_INTERFACE("79eac9ee-baf9-11ce-8c82-00aa004ba90b")
6690 IInternetSecurityManager : public IUnknown
6691 {
6692     virtual HRESULT STDMETHODCALLTYPE SetSecuritySite(
6693         IInternetSecurityMgrSite *pSite) = 0;
6694 
6695     virtual HRESULT STDMETHODCALLTYPE GetSecuritySite(
6696         IInternetSecurityMgrSite **ppSite) = 0;
6697 
6698     virtual HRESULT STDMETHODCALLTYPE MapUrlToZone(
6699         LPCWSTR pwszUrl,
6700         DWORD *pdwZone,
6701         DWORD dwFlags) = 0;
6702 
6703     virtual HRESULT STDMETHODCALLTYPE GetSecurityId(
6704         LPCWSTR pwszUrl,
6705         BYTE *pbSecurityId,
6706         DWORD *pcbSecurityId,
6707         DWORD_PTR dwReserved) = 0;
6708 
6709     virtual HRESULT STDMETHODCALLTYPE ProcessUrlAction(
6710         LPCWSTR pwszUrl,
6711         DWORD dwAction,
6712         BYTE *pPolicy,
6713         DWORD cbPolicy,
6714         BYTE *pContext,
6715         DWORD cbContext,
6716         DWORD dwFlags,
6717         DWORD dwReserved) = 0;
6718 
6719     virtual HRESULT STDMETHODCALLTYPE QueryCustomPolicy(
6720         LPCWSTR pwszUrl,
6721         REFGUID guidKey,
6722         BYTE **ppPolicy,
6723         DWORD *pcbPolicy,
6724         BYTE *pContext,
6725         DWORD cbContext,
6726         DWORD dwReserved) = 0;
6727 
6728     virtual HRESULT STDMETHODCALLTYPE SetZoneMapping(
6729         DWORD dwZone,
6730         LPCWSTR lpszPattern,
6731         DWORD dwFlags) = 0;
6732 
6733     virtual HRESULT STDMETHODCALLTYPE GetZoneMappings(
6734         DWORD dwZone,
6735         IEnumString **ppenumString,
6736         DWORD dwFlags) = 0;
6737 
6738 };
6739 #ifdef __CRT_UUID_DECL
6740 __CRT_UUID_DECL(IInternetSecurityManager, 0x79eac9ee, 0xbaf9, 0x11ce, 0x8c,0x82, 0x00,0xaa,0x00,0x4b,0xa9,0x0b)
6741 #endif
6742 #else
6743 typedef struct IInternetSecurityManagerVtbl {
6744     BEGIN_INTERFACE
6745 
6746     /*** IUnknown methods ***/
6747     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
6748         IInternetSecurityManager *This,
6749         REFIID riid,
6750         void **ppvObject);
6751 
6752     ULONG (STDMETHODCALLTYPE *AddRef)(
6753         IInternetSecurityManager *This);
6754 
6755     ULONG (STDMETHODCALLTYPE *Release)(
6756         IInternetSecurityManager *This);
6757 
6758     /*** IInternetSecurityManager methods ***/
6759     HRESULT (STDMETHODCALLTYPE *SetSecuritySite)(
6760         IInternetSecurityManager *This,
6761         IInternetSecurityMgrSite *pSite);
6762 
6763     HRESULT (STDMETHODCALLTYPE *GetSecuritySite)(
6764         IInternetSecurityManager *This,
6765         IInternetSecurityMgrSite **ppSite);
6766 
6767     HRESULT (STDMETHODCALLTYPE *MapUrlToZone)(
6768         IInternetSecurityManager *This,
6769         LPCWSTR pwszUrl,
6770         DWORD *pdwZone,
6771         DWORD dwFlags);
6772 
6773     HRESULT (STDMETHODCALLTYPE *GetSecurityId)(
6774         IInternetSecurityManager *This,
6775         LPCWSTR pwszUrl,
6776         BYTE *pbSecurityId,
6777         DWORD *pcbSecurityId,
6778         DWORD_PTR dwReserved);
6779 
6780     HRESULT (STDMETHODCALLTYPE *ProcessUrlAction)(
6781         IInternetSecurityManager *This,
6782         LPCWSTR pwszUrl,
6783         DWORD dwAction,
6784         BYTE *pPolicy,
6785         DWORD cbPolicy,
6786         BYTE *pContext,
6787         DWORD cbContext,
6788         DWORD dwFlags,
6789         DWORD dwReserved);
6790 
6791     HRESULT (STDMETHODCALLTYPE *QueryCustomPolicy)(
6792         IInternetSecurityManager *This,
6793         LPCWSTR pwszUrl,
6794         REFGUID guidKey,
6795         BYTE **ppPolicy,
6796         DWORD *pcbPolicy,
6797         BYTE *pContext,
6798         DWORD cbContext,
6799         DWORD dwReserved);
6800 
6801     HRESULT (STDMETHODCALLTYPE *SetZoneMapping)(
6802         IInternetSecurityManager *This,
6803         DWORD dwZone,
6804         LPCWSTR lpszPattern,
6805         DWORD dwFlags);
6806 
6807     HRESULT (STDMETHODCALLTYPE *GetZoneMappings)(
6808         IInternetSecurityManager *This,
6809         DWORD dwZone,
6810         IEnumString **ppenumString,
6811         DWORD dwFlags);
6812 
6813     END_INTERFACE
6814 } IInternetSecurityManagerVtbl;
6815 
6816 interface IInternetSecurityManager {
6817     CONST_VTBL IInternetSecurityManagerVtbl* lpVtbl;
6818 };
6819 
6820 #ifdef COBJMACROS
6821 #ifndef WIDL_C_INLINE_WRAPPERS
6822 /*** IUnknown methods ***/
6823 #define IInternetSecurityManager_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
6824 #define IInternetSecurityManager_AddRef(This) (This)->lpVtbl->AddRef(This)
6825 #define IInternetSecurityManager_Release(This) (This)->lpVtbl->Release(This)
6826 /*** IInternetSecurityManager methods ***/
6827 #define IInternetSecurityManager_SetSecuritySite(This,pSite) (This)->lpVtbl->SetSecuritySite(This,pSite)
6828 #define IInternetSecurityManager_GetSecuritySite(This,ppSite) (This)->lpVtbl->GetSecuritySite(This,ppSite)
6829 #define IInternetSecurityManager_MapUrlToZone(This,pwszUrl,pdwZone,dwFlags) (This)->lpVtbl->MapUrlToZone(This,pwszUrl,pdwZone,dwFlags)
6830 #define IInternetSecurityManager_GetSecurityId(This,pwszUrl,pbSecurityId,pcbSecurityId,dwReserved) (This)->lpVtbl->GetSecurityId(This,pwszUrl,pbSecurityId,pcbSecurityId,dwReserved)
6831 #define IInternetSecurityManager_ProcessUrlAction(This,pwszUrl,dwAction,pPolicy,cbPolicy,pContext,cbContext,dwFlags,dwReserved) (This)->lpVtbl->ProcessUrlAction(This,pwszUrl,dwAction,pPolicy,cbPolicy,pContext,cbContext,dwFlags,dwReserved)
6832 #define IInternetSecurityManager_QueryCustomPolicy(This,pwszUrl,guidKey,ppPolicy,pcbPolicy,pContext,cbContext,dwReserved) (This)->lpVtbl->QueryCustomPolicy(This,pwszUrl,guidKey,ppPolicy,pcbPolicy,pContext,cbContext,dwReserved)
6833 #define IInternetSecurityManager_SetZoneMapping(This,dwZone,lpszPattern,dwFlags) (This)->lpVtbl->SetZoneMapping(This,dwZone,lpszPattern,dwFlags)
6834 #define IInternetSecurityManager_GetZoneMappings(This,dwZone,ppenumString,dwFlags) (This)->lpVtbl->GetZoneMappings(This,dwZone,ppenumString,dwFlags)
6835 #else
6836 /*** IUnknown methods ***/
6837 static FORCEINLINE HRESULT IInternetSecurityManager_QueryInterface(IInternetSecurityManager* This,REFIID riid,void **ppvObject) {
6838     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
6839 }
6840 static FORCEINLINE ULONG IInternetSecurityManager_AddRef(IInternetSecurityManager* This) {
6841     return This->lpVtbl->AddRef(This);
6842 }
6843 static FORCEINLINE ULONG IInternetSecurityManager_Release(IInternetSecurityManager* This) {
6844     return This->lpVtbl->Release(This);
6845 }
6846 /*** IInternetSecurityManager methods ***/
6847 static FORCEINLINE HRESULT IInternetSecurityManager_SetSecuritySite(IInternetSecurityManager* This,IInternetSecurityMgrSite *pSite) {
6848     return This->lpVtbl->SetSecuritySite(This,pSite);
6849 }
6850 static FORCEINLINE HRESULT IInternetSecurityManager_GetSecuritySite(IInternetSecurityManager* This,IInternetSecurityMgrSite **ppSite) {
6851     return This->lpVtbl->GetSecuritySite(This,ppSite);
6852 }
6853 static FORCEINLINE HRESULT IInternetSecurityManager_MapUrlToZone(IInternetSecurityManager* This,LPCWSTR pwszUrl,DWORD *pdwZone,DWORD dwFlags) {
6854     return This->lpVtbl->MapUrlToZone(This,pwszUrl,pdwZone,dwFlags);
6855 }
6856 static FORCEINLINE HRESULT IInternetSecurityManager_GetSecurityId(IInternetSecurityManager* This,LPCWSTR pwszUrl,BYTE *pbSecurityId,DWORD *pcbSecurityId,DWORD_PTR dwReserved) {
6857     return This->lpVtbl->GetSecurityId(This,pwszUrl,pbSecurityId,pcbSecurityId,dwReserved);
6858 }
6859 static FORCEINLINE HRESULT IInternetSecurityManager_ProcessUrlAction(IInternetSecurityManager* This,LPCWSTR pwszUrl,DWORD dwAction,BYTE *pPolicy,DWORD cbPolicy,BYTE *pContext,DWORD cbContext,DWORD dwFlags,DWORD dwReserved) {
6860     return This->lpVtbl->ProcessUrlAction(This,pwszUrl,dwAction,pPolicy,cbPolicy,pContext,cbContext,dwFlags,dwReserved);
6861 }
6862 static FORCEINLINE HRESULT IInternetSecurityManager_QueryCustomPolicy(IInternetSecurityManager* This,LPCWSTR pwszUrl,REFGUID guidKey,BYTE **ppPolicy,DWORD *pcbPolicy,BYTE *pContext,DWORD cbContext,DWORD dwReserved) {
6863     return This->lpVtbl->QueryCustomPolicy(This,pwszUrl,guidKey,ppPolicy,pcbPolicy,pContext,cbContext,dwReserved);
6864 }
6865 static FORCEINLINE HRESULT IInternetSecurityManager_SetZoneMapping(IInternetSecurityManager* This,DWORD dwZone,LPCWSTR lpszPattern,DWORD dwFlags) {
6866     return This->lpVtbl->SetZoneMapping(This,dwZone,lpszPattern,dwFlags);
6867 }
6868 static FORCEINLINE HRESULT IInternetSecurityManager_GetZoneMappings(IInternetSecurityManager* This,DWORD dwZone,IEnumString **ppenumString,DWORD dwFlags) {
6869     return This->lpVtbl->GetZoneMappings(This,dwZone,ppenumString,dwFlags);
6870 }
6871 #endif
6872 #endif
6873 
6874 #endif
6875 
6876 
6877 #endif  /* __IInternetSecurityManager_INTERFACE_DEFINED__ */
6878 
6879 #endif
6880 
6881 #if (_WIN32_IE >= _WIN32_IE_IE60SP2)
6882 #ifndef _LPINTERNETSECURITYMANANGEREX_DEFINED
6883 #define _LPINTERNETSECURITYMANANGEREX_DEFINED
6884 
6885 /*****************************************************************************
6886  * IInternetSecurityManagerEx interface
6887  */
6888 #ifndef __IInternetSecurityManagerEx_INTERFACE_DEFINED__
6889 #define __IInternetSecurityManagerEx_INTERFACE_DEFINED__
6890 
6891 DEFINE_GUID(IID_IInternetSecurityManagerEx, 0xf164edf1, 0xcc7c, 0x4f0d, 0x9a,0x94, 0x34,0x22,0x26,0x25,0xc3,0x93);
6892 #if defined(__cplusplus) && !defined(CINTERFACE)
6893 MIDL_INTERFACE("f164edf1-cc7c-4f0d-9a94-34222625c393")
6894 IInternetSecurityManagerEx : public IInternetSecurityManager
6895 {
6896     virtual HRESULT STDMETHODCALLTYPE ProcessUrlActionEx(
6897         LPCWSTR pwszUrl,
6898         DWORD dwAction,
6899         BYTE *pPolicy,
6900         DWORD cbPolicy,
6901         BYTE *pContext,
6902         DWORD cbContext,
6903         DWORD dwFlags,
6904         DWORD dwReserved,
6905         DWORD *pdwOutFlags) = 0;
6906 
6907 };
6908 #ifdef __CRT_UUID_DECL
6909 __CRT_UUID_DECL(IInternetSecurityManagerEx, 0xf164edf1, 0xcc7c, 0x4f0d, 0x9a,0x94, 0x34,0x22,0x26,0x25,0xc3,0x93)
6910 #endif
6911 #else
6912 typedef struct IInternetSecurityManagerExVtbl {
6913     BEGIN_INTERFACE
6914 
6915     /*** IUnknown methods ***/
6916     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
6917         IInternetSecurityManagerEx *This,
6918         REFIID riid,
6919         void **ppvObject);
6920 
6921     ULONG (STDMETHODCALLTYPE *AddRef)(
6922         IInternetSecurityManagerEx *This);
6923 
6924     ULONG (STDMETHODCALLTYPE *Release)(
6925         IInternetSecurityManagerEx *This);
6926 
6927     /*** IInternetSecurityManager methods ***/
6928     HRESULT (STDMETHODCALLTYPE *SetSecuritySite)(
6929         IInternetSecurityManagerEx *This,
6930         IInternetSecurityMgrSite *pSite);
6931 
6932     HRESULT (STDMETHODCALLTYPE *GetSecuritySite)(
6933         IInternetSecurityManagerEx *This,
6934         IInternetSecurityMgrSite **ppSite);
6935 
6936     HRESULT (STDMETHODCALLTYPE *MapUrlToZone)(
6937         IInternetSecurityManagerEx *This,
6938         LPCWSTR pwszUrl,
6939         DWORD *pdwZone,
6940         DWORD dwFlags);
6941 
6942     HRESULT (STDMETHODCALLTYPE *GetSecurityId)(
6943         IInternetSecurityManagerEx *This,
6944         LPCWSTR pwszUrl,
6945         BYTE *pbSecurityId,
6946         DWORD *pcbSecurityId,
6947         DWORD_PTR dwReserved);
6948 
6949     HRESULT (STDMETHODCALLTYPE *ProcessUrlAction)(
6950         IInternetSecurityManagerEx *This,
6951         LPCWSTR pwszUrl,
6952         DWORD dwAction,
6953         BYTE *pPolicy,
6954         DWORD cbPolicy,
6955         BYTE *pContext,
6956         DWORD cbContext,
6957         DWORD dwFlags,
6958         DWORD dwReserved);
6959 
6960     HRESULT (STDMETHODCALLTYPE *QueryCustomPolicy)(
6961         IInternetSecurityManagerEx *This,
6962         LPCWSTR pwszUrl,
6963         REFGUID guidKey,
6964         BYTE **ppPolicy,
6965         DWORD *pcbPolicy,
6966         BYTE *pContext,
6967         DWORD cbContext,
6968         DWORD dwReserved);
6969 
6970     HRESULT (STDMETHODCALLTYPE *SetZoneMapping)(
6971         IInternetSecurityManagerEx *This,
6972         DWORD dwZone,
6973         LPCWSTR lpszPattern,
6974         DWORD dwFlags);
6975 
6976     HRESULT (STDMETHODCALLTYPE *GetZoneMappings)(
6977         IInternetSecurityManagerEx *This,
6978         DWORD dwZone,
6979         IEnumString **ppenumString,
6980         DWORD dwFlags);
6981 
6982     /*** IInternetSecurityManagerEx methods ***/
6983     HRESULT (STDMETHODCALLTYPE *ProcessUrlActionEx)(
6984         IInternetSecurityManagerEx *This,
6985         LPCWSTR pwszUrl,
6986         DWORD dwAction,
6987         BYTE *pPolicy,
6988         DWORD cbPolicy,
6989         BYTE *pContext,
6990         DWORD cbContext,
6991         DWORD dwFlags,
6992         DWORD dwReserved,
6993         DWORD *pdwOutFlags);
6994 
6995     END_INTERFACE
6996 } IInternetSecurityManagerExVtbl;
6997 
6998 interface IInternetSecurityManagerEx {
6999     CONST_VTBL IInternetSecurityManagerExVtbl* lpVtbl;
7000 };
7001 
7002 #ifdef COBJMACROS
7003 #ifndef WIDL_C_INLINE_WRAPPERS
7004 /*** IUnknown methods ***/
7005 #define IInternetSecurityManagerEx_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
7006 #define IInternetSecurityManagerEx_AddRef(This) (This)->lpVtbl->AddRef(This)
7007 #define IInternetSecurityManagerEx_Release(This) (This)->lpVtbl->Release(This)
7008 /*** IInternetSecurityManager methods ***/
7009 #define IInternetSecurityManagerEx_SetSecuritySite(This,pSite) (This)->lpVtbl->SetSecuritySite(This,pSite)
7010 #define IInternetSecurityManagerEx_GetSecuritySite(This,ppSite) (This)->lpVtbl->GetSecuritySite(This,ppSite)
7011 #define IInternetSecurityManagerEx_MapUrlToZone(This,pwszUrl,pdwZone,dwFlags) (This)->lpVtbl->MapUrlToZone(This,pwszUrl,pdwZone,dwFlags)
7012 #define IInternetSecurityManagerEx_GetSecurityId(This,pwszUrl,pbSecurityId,pcbSecurityId,dwReserved) (This)->lpVtbl->GetSecurityId(This,pwszUrl,pbSecurityId,pcbSecurityId,dwReserved)
7013 #define IInternetSecurityManagerEx_ProcessUrlAction(This,pwszUrl,dwAction,pPolicy,cbPolicy,pContext,cbContext,dwFlags,dwReserved) (This)->lpVtbl->ProcessUrlAction(This,pwszUrl,dwAction,pPolicy,cbPolicy,pContext,cbContext,dwFlags,dwReserved)
7014 #define IInternetSecurityManagerEx_QueryCustomPolicy(This,pwszUrl,guidKey,ppPolicy,pcbPolicy,pContext,cbContext,dwReserved) (This)->lpVtbl->QueryCustomPolicy(This,pwszUrl,guidKey,ppPolicy,pcbPolicy,pContext,cbContext,dwReserved)
7015 #define IInternetSecurityManagerEx_SetZoneMapping(This,dwZone,lpszPattern,dwFlags) (This)->lpVtbl->SetZoneMapping(This,dwZone,lpszPattern,dwFlags)
7016 #define IInternetSecurityManagerEx_GetZoneMappings(This,dwZone,ppenumString,dwFlags) (This)->lpVtbl->GetZoneMappings(This,dwZone,ppenumString,dwFlags)
7017 /*** IInternetSecurityManagerEx methods ***/
7018 #define IInternetSecurityManagerEx_ProcessUrlActionEx(This,pwszUrl,dwAction,pPolicy,cbPolicy,pContext,cbContext,dwFlags,dwReserved,pdwOutFlags) (This)->lpVtbl->ProcessUrlActionEx(This,pwszUrl,dwAction,pPolicy,cbPolicy,pContext,cbContext,dwFlags,dwReserved,pdwOutFlags)
7019 #else
7020 /*** IUnknown methods ***/
7021 static FORCEINLINE HRESULT IInternetSecurityManagerEx_QueryInterface(IInternetSecurityManagerEx* This,REFIID riid,void **ppvObject) {
7022     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
7023 }
7024 static FORCEINLINE ULONG IInternetSecurityManagerEx_AddRef(IInternetSecurityManagerEx* This) {
7025     return This->lpVtbl->AddRef(This);
7026 }
7027 static FORCEINLINE ULONG IInternetSecurityManagerEx_Release(IInternetSecurityManagerEx* This) {
7028     return This->lpVtbl->Release(This);
7029 }
7030 /*** IInternetSecurityManager methods ***/
7031 static FORCEINLINE HRESULT IInternetSecurityManagerEx_SetSecuritySite(IInternetSecurityManagerEx* This,IInternetSecurityMgrSite *pSite) {
7032     return This->lpVtbl->SetSecuritySite(This,pSite);
7033 }
7034 static FORCEINLINE HRESULT IInternetSecurityManagerEx_GetSecuritySite(IInternetSecurityManagerEx* This,IInternetSecurityMgrSite **ppSite) {
7035     return This->lpVtbl->GetSecuritySite(This,ppSite);
7036 }
7037 static FORCEINLINE HRESULT IInternetSecurityManagerEx_MapUrlToZone(IInternetSecurityManagerEx* This,LPCWSTR pwszUrl,DWORD *pdwZone,DWORD dwFlags) {
7038     return This->lpVtbl->MapUrlToZone(This,pwszUrl,pdwZone,dwFlags);
7039 }
7040 static FORCEINLINE HRESULT IInternetSecurityManagerEx_GetSecurityId(IInternetSecurityManagerEx* This,LPCWSTR pwszUrl,BYTE *pbSecurityId,DWORD *pcbSecurityId,DWORD_PTR dwReserved) {
7041     return This->lpVtbl->GetSecurityId(This,pwszUrl,pbSecurityId,pcbSecurityId,dwReserved);
7042 }
7043 static FORCEINLINE HRESULT IInternetSecurityManagerEx_ProcessUrlAction(IInternetSecurityManagerEx* This,LPCWSTR pwszUrl,DWORD dwAction,BYTE *pPolicy,DWORD cbPolicy,BYTE *pContext,DWORD cbContext,DWORD dwFlags,DWORD dwReserved) {
7044     return This->lpVtbl->ProcessUrlAction(This,pwszUrl,dwAction,pPolicy,cbPolicy,pContext,cbContext,dwFlags,dwReserved);
7045 }
7046 static FORCEINLINE HRESULT IInternetSecurityManagerEx_QueryCustomPolicy(IInternetSecurityManagerEx* This,LPCWSTR pwszUrl,REFGUID guidKey,BYTE **ppPolicy,DWORD *pcbPolicy,BYTE *pContext,DWORD cbContext,DWORD dwReserved) {
7047     return This->lpVtbl->QueryCustomPolicy(This,pwszUrl,guidKey,ppPolicy,pcbPolicy,pContext,cbContext,dwReserved);
7048 }
7049 static FORCEINLINE HRESULT IInternetSecurityManagerEx_SetZoneMapping(IInternetSecurityManagerEx* This,DWORD dwZone,LPCWSTR lpszPattern,DWORD dwFlags) {
7050     return This->lpVtbl->SetZoneMapping(This,dwZone,lpszPattern,dwFlags);
7051 }
7052 static FORCEINLINE HRESULT IInternetSecurityManagerEx_GetZoneMappings(IInternetSecurityManagerEx* This,DWORD dwZone,IEnumString **ppenumString,DWORD dwFlags) {
7053     return This->lpVtbl->GetZoneMappings(This,dwZone,ppenumString,dwFlags);
7054 }
7055 /*** IInternetSecurityManagerEx methods ***/
7056 static FORCEINLINE HRESULT IInternetSecurityManagerEx_ProcessUrlActionEx(IInternetSecurityManagerEx* This,LPCWSTR pwszUrl,DWORD dwAction,BYTE *pPolicy,DWORD cbPolicy,BYTE *pContext,DWORD cbContext,DWORD dwFlags,DWORD dwReserved,DWORD *pdwOutFlags) {
7057     return This->lpVtbl->ProcessUrlActionEx(This,pwszUrl,dwAction,pPolicy,cbPolicy,pContext,cbContext,dwFlags,dwReserved,pdwOutFlags);
7058 }
7059 #endif
7060 #endif
7061 
7062 #endif
7063 
7064 
7065 #endif  /* __IInternetSecurityManagerEx_INTERFACE_DEFINED__ */
7066 
7067 #endif
7068 #endif
7069 
7070 #if (_WIN32_IE >= _WIN32_IE_IE70)
7071 #ifndef _LPINTERNETSECURITYMANANGEREx2_DEFINED
7072 #define _LPINTERNETSECURITYMANANGEREx2_DEFINED
7073 
7074 /*****************************************************************************
7075  * IInternetSecurityManagerEx2 interface
7076  */
7077 #ifndef __IInternetSecurityManagerEx2_INTERFACE_DEFINED__
7078 #define __IInternetSecurityManagerEx2_INTERFACE_DEFINED__
7079 
7080 DEFINE_GUID(IID_IInternetSecurityManagerEx2, 0xf1e50292, 0xa795, 0x4117, 0x8e,0x09, 0x2b,0x56,0x0a,0x72,0xac,0x60);
7081 #if defined(__cplusplus) && !defined(CINTERFACE)
7082 MIDL_INTERFACE("f1e50292-a795-4117-8e09-2b560a72ac60")
7083 IInternetSecurityManagerEx2 : public IInternetSecurityManagerEx
7084 {
7085     virtual HRESULT STDMETHODCALLTYPE MapUrlToZoneEx2(
7086         IUri *pUri,
7087         DWORD *pdwZone,
7088         DWORD dwFlags,
7089         LPWSTR *ppwszMappedUrl,
7090         DWORD *pdwOutFlags) = 0;
7091 
7092     virtual HRESULT STDMETHODCALLTYPE ProcessUrlActionEx2(
7093         IUri *pUri,
7094         DWORD dwAction,
7095         BYTE *pPolicy,
7096         DWORD cbPolicy,
7097         BYTE *pContext,
7098         DWORD cbContext,
7099         DWORD dwFlags,
7100         DWORD_PTR dwReserved,
7101         DWORD *pdwOutFlags) = 0;
7102 
7103     virtual HRESULT STDMETHODCALLTYPE GetSecurityIdEx2(
7104         IUri *pUri,
7105         BYTE *pbSecurityId,
7106         DWORD *pcbSecurityId,
7107         DWORD_PTR dwReserved) = 0;
7108 
7109     virtual HRESULT STDMETHODCALLTYPE QueryCustomPolicyEx2(
7110         IUri *pUri,
7111         REFGUID guidKey,
7112         BYTE **ppPolicy,
7113         DWORD *pcbPolicy,
7114         BYTE *pContext,
7115         DWORD cbContext,
7116         DWORD_PTR dwReserved) = 0;
7117 
7118 };
7119 #ifdef __CRT_UUID_DECL
7120 __CRT_UUID_DECL(IInternetSecurityManagerEx2, 0xf1e50292, 0xa795, 0x4117, 0x8e,0x09, 0x2b,0x56,0x0a,0x72,0xac,0x60)
7121 #endif
7122 #else
7123 typedef struct IInternetSecurityManagerEx2Vtbl {
7124     BEGIN_INTERFACE
7125 
7126     /*** IUnknown methods ***/
7127     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
7128         IInternetSecurityManagerEx2 *This,
7129         REFIID riid,
7130         void **ppvObject);
7131 
7132     ULONG (STDMETHODCALLTYPE *AddRef)(
7133         IInternetSecurityManagerEx2 *This);
7134 
7135     ULONG (STDMETHODCALLTYPE *Release)(
7136         IInternetSecurityManagerEx2 *This);
7137 
7138     /*** IInternetSecurityManager methods ***/
7139     HRESULT (STDMETHODCALLTYPE *SetSecuritySite)(
7140         IInternetSecurityManagerEx2 *This,
7141         IInternetSecurityMgrSite *pSite);
7142 
7143     HRESULT (STDMETHODCALLTYPE *GetSecuritySite)(
7144         IInternetSecurityManagerEx2 *This,
7145         IInternetSecurityMgrSite **ppSite);
7146 
7147     HRESULT (STDMETHODCALLTYPE *MapUrlToZone)(
7148         IInternetSecurityManagerEx2 *This,
7149         LPCWSTR pwszUrl,
7150         DWORD *pdwZone,
7151         DWORD dwFlags);
7152 
7153     HRESULT (STDMETHODCALLTYPE *GetSecurityId)(
7154         IInternetSecurityManagerEx2 *This,
7155         LPCWSTR pwszUrl,
7156         BYTE *pbSecurityId,
7157         DWORD *pcbSecurityId,
7158         DWORD_PTR dwReserved);
7159 
7160     HRESULT (STDMETHODCALLTYPE *ProcessUrlAction)(
7161         IInternetSecurityManagerEx2 *This,
7162         LPCWSTR pwszUrl,
7163         DWORD dwAction,
7164         BYTE *pPolicy,
7165         DWORD cbPolicy,
7166         BYTE *pContext,
7167         DWORD cbContext,
7168         DWORD dwFlags,
7169         DWORD dwReserved);
7170 
7171     HRESULT (STDMETHODCALLTYPE *QueryCustomPolicy)(
7172         IInternetSecurityManagerEx2 *This,
7173         LPCWSTR pwszUrl,
7174         REFGUID guidKey,
7175         BYTE **ppPolicy,
7176         DWORD *pcbPolicy,
7177         BYTE *pContext,
7178         DWORD cbContext,
7179         DWORD dwReserved);
7180 
7181     HRESULT (STDMETHODCALLTYPE *SetZoneMapping)(
7182         IInternetSecurityManagerEx2 *This,
7183         DWORD dwZone,
7184         LPCWSTR lpszPattern,
7185         DWORD dwFlags);
7186 
7187     HRESULT (STDMETHODCALLTYPE *GetZoneMappings)(
7188         IInternetSecurityManagerEx2 *This,
7189         DWORD dwZone,
7190         IEnumString **ppenumString,
7191         DWORD dwFlags);
7192 
7193     /*** IInternetSecurityManagerEx methods ***/
7194     HRESULT (STDMETHODCALLTYPE *ProcessUrlActionEx)(
7195         IInternetSecurityManagerEx2 *This,
7196         LPCWSTR pwszUrl,
7197         DWORD dwAction,
7198         BYTE *pPolicy,
7199         DWORD cbPolicy,
7200         BYTE *pContext,
7201         DWORD cbContext,
7202         DWORD dwFlags,
7203         DWORD dwReserved,
7204         DWORD *pdwOutFlags);
7205 
7206     /*** IInternetSecurityManagerEx2 methods ***/
7207     HRESULT (STDMETHODCALLTYPE *MapUrlToZoneEx2)(
7208         IInternetSecurityManagerEx2 *This,
7209         IUri *pUri,
7210         DWORD *pdwZone,
7211         DWORD dwFlags,
7212         LPWSTR *ppwszMappedUrl,
7213         DWORD *pdwOutFlags);
7214 
7215     HRESULT (STDMETHODCALLTYPE *ProcessUrlActionEx2)(
7216         IInternetSecurityManagerEx2 *This,
7217         IUri *pUri,
7218         DWORD dwAction,
7219         BYTE *pPolicy,
7220         DWORD cbPolicy,
7221         BYTE *pContext,
7222         DWORD cbContext,
7223         DWORD dwFlags,
7224         DWORD_PTR dwReserved,
7225         DWORD *pdwOutFlags);
7226 
7227     HRESULT (STDMETHODCALLTYPE *GetSecurityIdEx2)(
7228         IInternetSecurityManagerEx2 *This,
7229         IUri *pUri,
7230         BYTE *pbSecurityId,
7231         DWORD *pcbSecurityId,
7232         DWORD_PTR dwReserved);
7233 
7234     HRESULT (STDMETHODCALLTYPE *QueryCustomPolicyEx2)(
7235         IInternetSecurityManagerEx2 *This,
7236         IUri *pUri,
7237         REFGUID guidKey,
7238         BYTE **ppPolicy,
7239         DWORD *pcbPolicy,
7240         BYTE *pContext,
7241         DWORD cbContext,
7242         DWORD_PTR dwReserved);
7243 
7244     END_INTERFACE
7245 } IInternetSecurityManagerEx2Vtbl;
7246 
7247 interface IInternetSecurityManagerEx2 {
7248     CONST_VTBL IInternetSecurityManagerEx2Vtbl* lpVtbl;
7249 };
7250 
7251 #ifdef COBJMACROS
7252 #ifndef WIDL_C_INLINE_WRAPPERS
7253 /*** IUnknown methods ***/
7254 #define IInternetSecurityManagerEx2_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
7255 #define IInternetSecurityManagerEx2_AddRef(This) (This)->lpVtbl->AddRef(This)
7256 #define IInternetSecurityManagerEx2_Release(This) (This)->lpVtbl->Release(This)
7257 /*** IInternetSecurityManager methods ***/
7258 #define IInternetSecurityManagerEx2_SetSecuritySite(This,pSite) (This)->lpVtbl->SetSecuritySite(This,pSite)
7259 #define IInternetSecurityManagerEx2_GetSecuritySite(This,ppSite) (This)->lpVtbl->GetSecuritySite(This,ppSite)
7260 #define IInternetSecurityManagerEx2_MapUrlToZone(This,pwszUrl,pdwZone,dwFlags) (This)->lpVtbl->MapUrlToZone(This,pwszUrl,pdwZone,dwFlags)
7261 #define IInternetSecurityManagerEx2_GetSecurityId(This,pwszUrl,pbSecurityId,pcbSecurityId,dwReserved) (This)->lpVtbl->GetSecurityId(This,pwszUrl,pbSecurityId,pcbSecurityId,dwReserved)
7262 #define IInternetSecurityManagerEx2_ProcessUrlAction(This,pwszUrl,dwAction,pPolicy,cbPolicy,pContext,cbContext,dwFlags,dwReserved) (This)->lpVtbl->ProcessUrlAction(This,pwszUrl,dwAction,pPolicy,cbPolicy,pContext,cbContext,dwFlags,dwReserved)
7263 #define IInternetSecurityManagerEx2_QueryCustomPolicy(This,pwszUrl,guidKey,ppPolicy,pcbPolicy,pContext,cbContext,dwReserved) (This)->lpVtbl->QueryCustomPolicy(This,pwszUrl,guidKey,ppPolicy,pcbPolicy,pContext,cbContext,dwReserved)
7264 #define IInternetSecurityManagerEx2_SetZoneMapping(This,dwZone,lpszPattern,dwFlags) (This)->lpVtbl->SetZoneMapping(This,dwZone,lpszPattern,dwFlags)
7265 #define IInternetSecurityManagerEx2_GetZoneMappings(This,dwZone,ppenumString,dwFlags) (This)->lpVtbl->GetZoneMappings(This,dwZone,ppenumString,dwFlags)
7266 /*** IInternetSecurityManagerEx methods ***/
7267 #define IInternetSecurityManagerEx2_ProcessUrlActionEx(This,pwszUrl,dwAction,pPolicy,cbPolicy,pContext,cbContext,dwFlags,dwReserved,pdwOutFlags) (This)->lpVtbl->ProcessUrlActionEx(This,pwszUrl,dwAction,pPolicy,cbPolicy,pContext,cbContext,dwFlags,dwReserved,pdwOutFlags)
7268 /*** IInternetSecurityManagerEx2 methods ***/
7269 #define IInternetSecurityManagerEx2_MapUrlToZoneEx2(This,pUri,pdwZone,dwFlags,ppwszMappedUrl,pdwOutFlags) (This)->lpVtbl->MapUrlToZoneEx2(This,pUri,pdwZone,dwFlags,ppwszMappedUrl,pdwOutFlags)
7270 #define IInternetSecurityManagerEx2_ProcessUrlActionEx2(This,pUri,dwAction,pPolicy,cbPolicy,pContext,cbContext,dwFlags,dwReserved,pdwOutFlags) (This)->lpVtbl->ProcessUrlActionEx2(This,pUri,dwAction,pPolicy,cbPolicy,pContext,cbContext,dwFlags,dwReserved,pdwOutFlags)
7271 #define IInternetSecurityManagerEx2_GetSecurityIdEx2(This,pUri,pbSecurityId,pcbSecurityId,dwReserved) (This)->lpVtbl->GetSecurityIdEx2(This,pUri,pbSecurityId,pcbSecurityId,dwReserved)
7272 #define IInternetSecurityManagerEx2_QueryCustomPolicyEx2(This,pUri,guidKey,ppPolicy,pcbPolicy,pContext,cbContext,dwReserved) (This)->lpVtbl->QueryCustomPolicyEx2(This,pUri,guidKey,ppPolicy,pcbPolicy,pContext,cbContext,dwReserved)
7273 #else
7274 /*** IUnknown methods ***/
7275 static FORCEINLINE HRESULT IInternetSecurityManagerEx2_QueryInterface(IInternetSecurityManagerEx2* This,REFIID riid,void **ppvObject) {
7276     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
7277 }
7278 static FORCEINLINE ULONG IInternetSecurityManagerEx2_AddRef(IInternetSecurityManagerEx2* This) {
7279     return This->lpVtbl->AddRef(This);
7280 }
7281 static FORCEINLINE ULONG IInternetSecurityManagerEx2_Release(IInternetSecurityManagerEx2* This) {
7282     return This->lpVtbl->Release(This);
7283 }
7284 /*** IInternetSecurityManager methods ***/
7285 static FORCEINLINE HRESULT IInternetSecurityManagerEx2_SetSecuritySite(IInternetSecurityManagerEx2* This,IInternetSecurityMgrSite *pSite) {
7286     return This->lpVtbl->SetSecuritySite(This,pSite);
7287 }
7288 static FORCEINLINE HRESULT IInternetSecurityManagerEx2_GetSecuritySite(IInternetSecurityManagerEx2* This,IInternetSecurityMgrSite **ppSite) {
7289     return This->lpVtbl->GetSecuritySite(This,ppSite);
7290 }
7291 static FORCEINLINE HRESULT IInternetSecurityManagerEx2_MapUrlToZone(IInternetSecurityManagerEx2* This,LPCWSTR pwszUrl,DWORD *pdwZone,DWORD dwFlags) {
7292     return This->lpVtbl->MapUrlToZone(This,pwszUrl,pdwZone,dwFlags);
7293 }
7294 static FORCEINLINE HRESULT IInternetSecurityManagerEx2_GetSecurityId(IInternetSecurityManagerEx2* This,LPCWSTR pwszUrl,BYTE *pbSecurityId,DWORD *pcbSecurityId,DWORD_PTR dwReserved) {
7295     return This->lpVtbl->GetSecurityId(This,pwszUrl,pbSecurityId,pcbSecurityId,dwReserved);
7296 }
7297 static FORCEINLINE HRESULT IInternetSecurityManagerEx2_ProcessUrlAction(IInternetSecurityManagerEx2* This,LPCWSTR pwszUrl,DWORD dwAction,BYTE *pPolicy,DWORD cbPolicy,BYTE *pContext,DWORD cbContext,DWORD dwFlags,DWORD dwReserved) {
7298     return This->lpVtbl->ProcessUrlAction(This,pwszUrl,dwAction,pPolicy,cbPolicy,pContext,cbContext,dwFlags,dwReserved);
7299 }
7300 static FORCEINLINE HRESULT IInternetSecurityManagerEx2_QueryCustomPolicy(IInternetSecurityManagerEx2* This,LPCWSTR pwszUrl,REFGUID guidKey,BYTE **ppPolicy,DWORD *pcbPolicy,BYTE *pContext,DWORD cbContext,DWORD dwReserved) {
7301     return This->lpVtbl->QueryCustomPolicy(This,pwszUrl,guidKey,ppPolicy,pcbPolicy,pContext,cbContext,dwReserved);
7302 }
7303 static FORCEINLINE HRESULT IInternetSecurityManagerEx2_SetZoneMapping(IInternetSecurityManagerEx2* This,DWORD dwZone,LPCWSTR lpszPattern,DWORD dwFlags) {
7304     return This->lpVtbl->SetZoneMapping(This,dwZone,lpszPattern,dwFlags);
7305 }
7306 static FORCEINLINE HRESULT IInternetSecurityManagerEx2_GetZoneMappings(IInternetSecurityManagerEx2* This,DWORD dwZone,IEnumString **ppenumString,DWORD dwFlags) {
7307     return This->lpVtbl->GetZoneMappings(This,dwZone,ppenumString,dwFlags);
7308 }
7309 /*** IInternetSecurityManagerEx methods ***/
7310 static FORCEINLINE HRESULT IInternetSecurityManagerEx2_ProcessUrlActionEx(IInternetSecurityManagerEx2* This,LPCWSTR pwszUrl,DWORD dwAction,BYTE *pPolicy,DWORD cbPolicy,BYTE *pContext,DWORD cbContext,DWORD dwFlags,DWORD dwReserved,DWORD *pdwOutFlags) {
7311     return This->lpVtbl->ProcessUrlActionEx(This,pwszUrl,dwAction,pPolicy,cbPolicy,pContext,cbContext,dwFlags,dwReserved,pdwOutFlags);
7312 }
7313 /*** IInternetSecurityManagerEx2 methods ***/
7314 static FORCEINLINE HRESULT IInternetSecurityManagerEx2_MapUrlToZoneEx2(IInternetSecurityManagerEx2* This,IUri *pUri,DWORD *pdwZone,DWORD dwFlags,LPWSTR *ppwszMappedUrl,DWORD *pdwOutFlags) {
7315     return This->lpVtbl->MapUrlToZoneEx2(This,pUri,pdwZone,dwFlags,ppwszMappedUrl,pdwOutFlags);
7316 }
7317 static FORCEINLINE HRESULT IInternetSecurityManagerEx2_ProcessUrlActionEx2(IInternetSecurityManagerEx2* This,IUri *pUri,DWORD dwAction,BYTE *pPolicy,DWORD cbPolicy,BYTE *pContext,DWORD cbContext,DWORD dwFlags,DWORD_PTR dwReserved,DWORD *pdwOutFlags) {
7318     return This->lpVtbl->ProcessUrlActionEx2(This,pUri,dwAction,pPolicy,cbPolicy,pContext,cbContext,dwFlags,dwReserved,pdwOutFlags);
7319 }
7320 static FORCEINLINE HRESULT IInternetSecurityManagerEx2_GetSecurityIdEx2(IInternetSecurityManagerEx2* This,IUri *pUri,BYTE *pbSecurityId,DWORD *pcbSecurityId,DWORD_PTR dwReserved) {
7321     return This->lpVtbl->GetSecurityIdEx2(This,pUri,pbSecurityId,pcbSecurityId,dwReserved);
7322 }
7323 static FORCEINLINE HRESULT IInternetSecurityManagerEx2_QueryCustomPolicyEx2(IInternetSecurityManagerEx2* This,IUri *pUri,REFGUID guidKey,BYTE **ppPolicy,DWORD *pcbPolicy,BYTE *pContext,DWORD cbContext,DWORD_PTR dwReserved) {
7324     return This->lpVtbl->QueryCustomPolicyEx2(This,pUri,guidKey,ppPolicy,pcbPolicy,pContext,cbContext,dwReserved);
7325 }
7326 #endif
7327 #endif
7328 
7329 #endif
7330 
7331 
7332 #endif  /* __IInternetSecurityManagerEx2_INTERFACE_DEFINED__ */
7333 
7334 #endif
7335 #endif
7336 
7337 #if (_WIN32_IE >= _WIN32_IE_IE60SP2)
7338 /*****************************************************************************
7339  * IZoneIdentifier interface
7340  */
7341 #ifndef __IZoneIdentifier_INTERFACE_DEFINED__
7342 #define __IZoneIdentifier_INTERFACE_DEFINED__
7343 
7344 DEFINE_GUID(IID_IZoneIdentifier, 0xcd45f185, 0x1b21, 0x48e2, 0x96,0x7b, 0xea,0xd7,0x43,0xa8,0x91,0x4e);
7345 #if defined(__cplusplus) && !defined(CINTERFACE)
7346 MIDL_INTERFACE("cd45f185-1b21-48e2-967b-ead743a8914e")
7347 IZoneIdentifier : public IUnknown
7348 {
7349     virtual HRESULT STDMETHODCALLTYPE GetId(
7350         DWORD *pdwZone) = 0;
7351 
7352     virtual HRESULT STDMETHODCALLTYPE SetId(
7353         DWORD dwZone) = 0;
7354 
7355     virtual HRESULT STDMETHODCALLTYPE Remove(
7356         ) = 0;
7357 
7358 };
7359 #ifdef __CRT_UUID_DECL
7360 __CRT_UUID_DECL(IZoneIdentifier, 0xcd45f185, 0x1b21, 0x48e2, 0x96,0x7b, 0xea,0xd7,0x43,0xa8,0x91,0x4e)
7361 #endif
7362 #else
7363 typedef struct IZoneIdentifierVtbl {
7364     BEGIN_INTERFACE
7365 
7366     /*** IUnknown methods ***/
7367     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
7368         IZoneIdentifier *This,
7369         REFIID riid,
7370         void **ppvObject);
7371 
7372     ULONG (STDMETHODCALLTYPE *AddRef)(
7373         IZoneIdentifier *This);
7374 
7375     ULONG (STDMETHODCALLTYPE *Release)(
7376         IZoneIdentifier *This);
7377 
7378     /*** IZoneIdentifier methods ***/
7379     HRESULT (STDMETHODCALLTYPE *GetId)(
7380         IZoneIdentifier *This,
7381         DWORD *pdwZone);
7382 
7383     HRESULT (STDMETHODCALLTYPE *SetId)(
7384         IZoneIdentifier *This,
7385         DWORD dwZone);
7386 
7387     HRESULT (STDMETHODCALLTYPE *Remove)(
7388         IZoneIdentifier *This);
7389 
7390     END_INTERFACE
7391 } IZoneIdentifierVtbl;
7392 
7393 interface IZoneIdentifier {
7394     CONST_VTBL IZoneIdentifierVtbl* lpVtbl;
7395 };
7396 
7397 #ifdef COBJMACROS
7398 #ifndef WIDL_C_INLINE_WRAPPERS
7399 /*** IUnknown methods ***/
7400 #define IZoneIdentifier_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
7401 #define IZoneIdentifier_AddRef(This) (This)->lpVtbl->AddRef(This)
7402 #define IZoneIdentifier_Release(This) (This)->lpVtbl->Release(This)
7403 /*** IZoneIdentifier methods ***/
7404 #define IZoneIdentifier_GetId(This,pdwZone) (This)->lpVtbl->GetId(This,pdwZone)
7405 #define IZoneIdentifier_SetId(This,dwZone) (This)->lpVtbl->SetId(This,dwZone)
7406 #define IZoneIdentifier_Remove(This) (This)->lpVtbl->Remove(This)
7407 #else
7408 /*** IUnknown methods ***/
7409 static FORCEINLINE HRESULT IZoneIdentifier_QueryInterface(IZoneIdentifier* This,REFIID riid,void **ppvObject) {
7410     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
7411 }
7412 static FORCEINLINE ULONG IZoneIdentifier_AddRef(IZoneIdentifier* This) {
7413     return This->lpVtbl->AddRef(This);
7414 }
7415 static FORCEINLINE ULONG IZoneIdentifier_Release(IZoneIdentifier* This) {
7416     return This->lpVtbl->Release(This);
7417 }
7418 /*** IZoneIdentifier methods ***/
7419 static FORCEINLINE HRESULT IZoneIdentifier_GetId(IZoneIdentifier* This,DWORD *pdwZone) {
7420     return This->lpVtbl->GetId(This,pdwZone);
7421 }
7422 static FORCEINLINE HRESULT IZoneIdentifier_SetId(IZoneIdentifier* This,DWORD dwZone) {
7423     return This->lpVtbl->SetId(This,dwZone);
7424 }
7425 static FORCEINLINE HRESULT IZoneIdentifier_Remove(IZoneIdentifier* This) {
7426     return This->lpVtbl->Remove(This);
7427 }
7428 #endif
7429 #endif
7430 
7431 #endif
7432 
7433 
7434 #endif  /* __IZoneIdentifier_INTERFACE_DEFINED__ */
7435 
7436 #endif
7437 
7438 #ifndef _LPINTERNETHOSTSECURITYMANANGER_DEFINED
7439 #define _LPINTERNETHOSTSECURITYMANANGER_DEFINED
7440 
7441 /*****************************************************************************
7442  * IInternetHostSecurityManager interface
7443  */
7444 #ifndef __IInternetHostSecurityManager_INTERFACE_DEFINED__
7445 #define __IInternetHostSecurityManager_INTERFACE_DEFINED__
7446 
7447 DEFINE_GUID(IID_IInternetHostSecurityManager, 0x3af280b6, 0xcb3f, 0x11d0, 0x89,0x1e, 0x00,0xc0,0x4f,0xb6,0xbf,0xc4);
7448 #if defined(__cplusplus) && !defined(CINTERFACE)
7449 MIDL_INTERFACE("3af280b6-cb3f-11d0-891e-00c04fb6bfc4")
7450 IInternetHostSecurityManager : public IUnknown
7451 {
7452     virtual HRESULT STDMETHODCALLTYPE GetSecurityId(
7453         BYTE *pbSecurityId,
7454         DWORD *pcbSecurityId,
7455         DWORD_PTR dwReserved) = 0;
7456 
7457     virtual HRESULT STDMETHODCALLTYPE ProcessUrlAction(
7458         DWORD dwAction,
7459         BYTE *pPolicy,
7460         DWORD cbPolicy,
7461         BYTE *pContext,
7462         DWORD cbContext,
7463         DWORD dwFlags,
7464         DWORD dwReserved) = 0;
7465 
7466     virtual HRESULT STDMETHODCALLTYPE QueryCustomPolicy(
7467         REFGUID guidKey,
7468         BYTE **ppPolicy,
7469         DWORD *pcbPolicy,
7470         BYTE *pContext,
7471         DWORD cbContext,
7472         DWORD dwReserved) = 0;
7473 
7474 };
7475 #ifdef __CRT_UUID_DECL
7476 __CRT_UUID_DECL(IInternetHostSecurityManager, 0x3af280b6, 0xcb3f, 0x11d0, 0x89,0x1e, 0x00,0xc0,0x4f,0xb6,0xbf,0xc4)
7477 #endif
7478 #else
7479 typedef struct IInternetHostSecurityManagerVtbl {
7480     BEGIN_INTERFACE
7481 
7482     /*** IUnknown methods ***/
7483     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
7484         IInternetHostSecurityManager *This,
7485         REFIID riid,
7486         void **ppvObject);
7487 
7488     ULONG (STDMETHODCALLTYPE *AddRef)(
7489         IInternetHostSecurityManager *This);
7490 
7491     ULONG (STDMETHODCALLTYPE *Release)(
7492         IInternetHostSecurityManager *This);
7493 
7494     /*** IInternetHostSecurityManager methods ***/
7495     HRESULT (STDMETHODCALLTYPE *GetSecurityId)(
7496         IInternetHostSecurityManager *This,
7497         BYTE *pbSecurityId,
7498         DWORD *pcbSecurityId,
7499         DWORD_PTR dwReserved);
7500 
7501     HRESULT (STDMETHODCALLTYPE *ProcessUrlAction)(
7502         IInternetHostSecurityManager *This,
7503         DWORD dwAction,
7504         BYTE *pPolicy,
7505         DWORD cbPolicy,
7506         BYTE *pContext,
7507         DWORD cbContext,
7508         DWORD dwFlags,
7509         DWORD dwReserved);
7510 
7511     HRESULT (STDMETHODCALLTYPE *QueryCustomPolicy)(
7512         IInternetHostSecurityManager *This,
7513         REFGUID guidKey,
7514         BYTE **ppPolicy,
7515         DWORD *pcbPolicy,
7516         BYTE *pContext,
7517         DWORD cbContext,
7518         DWORD dwReserved);
7519 
7520     END_INTERFACE
7521 } IInternetHostSecurityManagerVtbl;
7522 
7523 interface IInternetHostSecurityManager {
7524     CONST_VTBL IInternetHostSecurityManagerVtbl* lpVtbl;
7525 };
7526 
7527 #ifdef COBJMACROS
7528 #ifndef WIDL_C_INLINE_WRAPPERS
7529 /*** IUnknown methods ***/
7530 #define IInternetHostSecurityManager_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
7531 #define IInternetHostSecurityManager_AddRef(This) (This)->lpVtbl->AddRef(This)
7532 #define IInternetHostSecurityManager_Release(This) (This)->lpVtbl->Release(This)
7533 /*** IInternetHostSecurityManager methods ***/
7534 #define IInternetHostSecurityManager_GetSecurityId(This,pbSecurityId,pcbSecurityId,dwReserved) (This)->lpVtbl->GetSecurityId(This,pbSecurityId,pcbSecurityId,dwReserved)
7535 #define IInternetHostSecurityManager_ProcessUrlAction(This,dwAction,pPolicy,cbPolicy,pContext,cbContext,dwFlags,dwReserved) (This)->lpVtbl->ProcessUrlAction(This,dwAction,pPolicy,cbPolicy,pContext,cbContext,dwFlags,dwReserved)
7536 #define IInternetHostSecurityManager_QueryCustomPolicy(This,guidKey,ppPolicy,pcbPolicy,pContext,cbContext,dwReserved) (This)->lpVtbl->QueryCustomPolicy(This,guidKey,ppPolicy,pcbPolicy,pContext,cbContext,dwReserved)
7537 #else
7538 /*** IUnknown methods ***/
7539 static FORCEINLINE HRESULT IInternetHostSecurityManager_QueryInterface(IInternetHostSecurityManager* This,REFIID riid,void **ppvObject) {
7540     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
7541 }
7542 static FORCEINLINE ULONG IInternetHostSecurityManager_AddRef(IInternetHostSecurityManager* This) {
7543     return This->lpVtbl->AddRef(This);
7544 }
7545 static FORCEINLINE ULONG IInternetHostSecurityManager_Release(IInternetHostSecurityManager* This) {
7546     return This->lpVtbl->Release(This);
7547 }
7548 /*** IInternetHostSecurityManager methods ***/
7549 static FORCEINLINE HRESULT IInternetHostSecurityManager_GetSecurityId(IInternetHostSecurityManager* This,BYTE *pbSecurityId,DWORD *pcbSecurityId,DWORD_PTR dwReserved) {
7550     return This->lpVtbl->GetSecurityId(This,pbSecurityId,pcbSecurityId,dwReserved);
7551 }
7552 static FORCEINLINE HRESULT IInternetHostSecurityManager_ProcessUrlAction(IInternetHostSecurityManager* This,DWORD dwAction,BYTE *pPolicy,DWORD cbPolicy,BYTE *pContext,DWORD cbContext,DWORD dwFlags,DWORD dwReserved) {
7553     return This->lpVtbl->ProcessUrlAction(This,dwAction,pPolicy,cbPolicy,pContext,cbContext,dwFlags,dwReserved);
7554 }
7555 static FORCEINLINE HRESULT IInternetHostSecurityManager_QueryCustomPolicy(IInternetHostSecurityManager* This,REFGUID guidKey,BYTE **ppPolicy,DWORD *pcbPolicy,BYTE *pContext,DWORD cbContext,DWORD dwReserved) {
7556     return This->lpVtbl->QueryCustomPolicy(This,guidKey,ppPolicy,pcbPolicy,pContext,cbContext,dwReserved);
7557 }
7558 #endif
7559 #endif
7560 
7561 #endif
7562 
7563 
7564 #endif  /* __IInternetHostSecurityManager_INTERFACE_DEFINED__ */
7565 
7566 #endif
7567 
7568 #define URLACTION_MIN 0x1000
7569 
7570 #define URLACTION_DOWNLOAD_MIN 0x1000
7571 #define URLACTION_DOWNLOAD_SIGNED_ACTIVEX 0x1001
7572 #define URLACTION_DOWNLOAD_UNSIGNED_ACTIVEX 0x1004
7573 #define URLACTION_DOWNLOAD_CURR_MAX 0x1004
7574 #define URLACTION_DOWNLOAD_MAX 0x11FF
7575 
7576 #define URLACTION_ACTIVEX_MIN 0x1200
7577 #define URLACTION_ACTIVEX_RUN 0x1200
7578 #define URLPOLICY_ACTIVEX_CHECK_LIST 0x10000
7579 #define URLACTION_ACTIVEX_OVERRIDE_OBJECT_SAFETY 0x1201
7580 #define URLACTION_ACTIVEX_OVERRIDE_DATA_SAFETY 0x1202
7581 #define URLACTION_ACTIVEX_OVERRIDE_SCRIPT_SAFETY 0x1203
7582 #define URLACTION_SCRIPT_OVERRIDE_SAFETY 0x1401
7583 #define URLACTION_ACTIVEX_CONFIRM_NOOBJECTSAFETY 0x1204
7584 #define URLACTION_ACTIVEX_TREATASUNTRUSTED 0x1205
7585 #define URLACTION_ACTIVEX_NO_WEBOC_SCRIPT 0x1206
7586 #define URLACTION_ACTIVEX_OVERRIDE_REPURPOSEDETECTION 0x1207
7587 #define URLACTION_ACTIVEX_OVERRIDE_OPTIN 0x1208
7588 #define URLACTION_ACTIVEX_SCRIPTLET_RUN 0x1209
7589 #define URLACTION_ACTIVEX_DYNSRC_VIDEO_AND_ANIMATION 0x120A
7590 #define URLACTION_ACTIVEX_OVERRIDE_DOMAINLIST 0x120B
7591 #define URLACTION_ACTIVEX_CURR_MAX 0x120B
7592 #define URLACTION_ACTIVEX_MAX 0x13ff
7593 
7594 #define URLACTION_SCRIPT_MIN 0x1400
7595 #define URLACTION_SCRIPT_RUN 0x1400
7596 #define URLACTION_SCRIPT_JAVA_USE 0x1402
7597 #define URLACTION_SCRIPT_SAFE_ACTIVEX 0x1405
7598 #define URLACTION_CROSS_DOMAIN_DATA 0x1406
7599 #define URLACTION_SCRIPT_PASTE 0x1407
7600 #define URLACTION_ALLOW_XDOMAIN_SUBFRAME_RESIZE 0x1408
7601 #define URLACTION_SCRIPT_XSSFILTER 0x1409
7602 #define URLACTION_SCRIPT_NAVIGATE 0x140A
7603 #define URLACTION_PLUGGABLE_PROTOCOL_XHR 0x140B
7604 #define URLACTION_SCRIPT_CURR_MAX 0x140B
7605 #define URLACTION_SCRIPT_MAX 0x15ff
7606 
7607 #define URLACTION_HTML_MIN 0x1600
7608 #define URLACTION_HTML_SUBMIT_FORMS 0x1601
7609 #define URLACTION_HTML_SUBMIT_FORMS_FROM 0x1602
7610 #define URLACTION_HTML_SUBMIT_FORMS_TO 0x1603
7611 #define URLACTION_HTML_FONT_DOWNLOAD 0x1604
7612 #define URLACTION_HTML_JAVA_RUN 0x1605
7613 #define URLACTION_HTML_USERDATA_SAVE 0x1606
7614 #define URLACTION_HTML_SUBFRAME_NAVIGATE 0x1607
7615 #define URLACTION_HTML_META_REFRESH 0x1608
7616 #define URLACTION_HTML_MIXED_CONTENT 0x1609
7617 #define URLACTION_HTML_INCLUDE_FILE_PATH 0x160A
7618 #define URLACTION_HTML_ALLOW_INJECTED_DYNAMIC_HTML 0x160B
7619 #define URLACTION_HTML_REQUIRE_UTF8_DOCUMENT_CODEPAGE 0x160C
7620 #define URLACTION_HTML_ALLOW_CROSS_DOMAIN_CANVAS 0x160D
7621 #define URLACTION_HTML_ALLOW_WINDOW_CLOSE 0x160E
7622 #define URLACTION_HTML_ALLOW_CROSS_DOMAIN_WEBWORKER 0x160F
7623 #define URLACTION_HTML_ALLOW_CROSS_DOMAIN_TEXTTRACK 0x1610
7624 #define URLACTION_HTML_ALLOW_INDEXEDDB 0x1611
7625 
7626 #define URLACTION_HTML_MAX 0x17ff
7627 
7628 #define URLACTION_SHELL_MIN 0x1800
7629 #define URLACTION_SHELL_INSTALL_DTITEMS 0x1800
7630 #define URLACTION_SHELL_MOVE_OR_COPY 0x1802
7631 #define URLACTION_SHELL_FILE_DOWNLOAD 0x1803
7632 #define URLACTION_SHELL_VERB 0x1804
7633 #define URLACTION_SHELL_WEBVIEW_VERB 0x1805
7634 #define URLACTION_SHELL_SHELLEXECUTE 0x1806
7635 
7636 #if (_WIN32_IE >= _WIN32_IE_IE60SP2)
7637 #define URLACTION_SHELL_EXECUTE_HIGHRISK 0x1806
7638 #define URLACTION_SHELL_EXECUTE_MODRISK 0x1807
7639 #define URLACTION_SHELL_EXECUTE_LOWRISK 0x1808
7640 #define URLACTION_SHELL_POPUPMGR 0x1809
7641 #define URLACTION_SHELL_RTF_OBJECTS_LOAD 0x180A
7642 #define URLACTION_SHELL_ENHANCED_DRAGDROP_SECURITY 0x180B
7643 #define URLACTION_SHELL_EXTENSIONSECURITY 0x180C
7644 #define URLACTION_SHELL_SECURE_DRAGSOURCE 0x180D
7645 #endif
7646 #if (_WIN32_IE >= _WIN32_IE_WIN7)
7647 #define URLACTION_SHELL_REMOTEQUERY 0x180E
7648 #define URLACTION_SHELL_PREVIEW 0x180F
7649 #define URLACTION_SHELL_SHARE 0x1810
7650 #define URLACTION_SHELL_ALLOW_CROSS_SITE_SHARE 0x1811
7651 #endif
7652 #define URLACTION_SHELL_CURR_MAX 0x1811
7653 #define URLACTION_SHELL_MAX 0x19ff
7654 
7655 #define URLACTION_NETWORK_MIN 0x1A00
7656 
7657 #define URLACTION_CREDENTIALS_USE 0x1A00
7658 #define URLPOLICY_CREDENTIALS_SILENT_LOGON_OK 0x0
7659 #define URLPOLICY_CREDENTIALS_MUST_PROMPT_USER 0x10000
7660 #define URLPOLICY_CREDENTIALS_CONDITIONAL_PROMPT 0x20000
7661 #define URLPOLICY_CREDENTIALS_ANONYMOUS_ONLY 0x30000
7662 
7663 #define URLACTION_AUTHENTICATE_CLIENT 0x1A01
7664 #define URLPOLICY_AUTHENTICATE_CLEARTEXT_OK 0x0
7665 #define URLPOLICY_AUTHENTICATE_CHALLENGE_RESPONSE 0x10000
7666 #define URLPOLICY_AUTHENTICATE_MUTUAL_ONLY 0x30000
7667 
7668 #define URLACTION_COOKIES 0x1A02
7669 #define URLACTION_COOKIES_SESSION 0x1A03
7670 
7671 #define URLACTION_CLIENT_CERT_PROMPT 0x1A04
7672 
7673 #define URLACTION_COOKIES_THIRD_PARTY 0x1A05
7674 #define URLACTION_COOKIES_SESSION_THIRD_PARTY 0x1A06
7675 
7676 #define URLACTION_COOKIES_ENABLED 0x1A10
7677 
7678 #define URLACTION_NETWORK_CURR_MAX 0x1A10
7679 #define URLACTION_NETWORK_MAX 0x1Bff
7680 
7681 #define URLACTION_JAVA_MIN 0x1C00
7682 #define URLACTION_JAVA_PERMISSIONS 0x1C00
7683 #define URLPOLICY_JAVA_PROHIBIT 0x0
7684 #define URLPOLICY_JAVA_HIGH 0x10000
7685 #define URLPOLICY_JAVA_MEDIUM 0x20000
7686 #define URLPOLICY_JAVA_LOW 0x30000
7687 #define URLPOLICY_JAVA_CUSTOM 0x800000
7688 #define URLACTION_JAVA_CURR_MAX 0x1C00
7689 #define URLACTION_JAVA_MAX 0x1Cff
7690 
7691 #define URLACTION_INFODELIVERY_MIN 0x1D00
7692 #define URLACTION_INFODELIVERY_NO_ADDING_CHANNELS 0x1D00
7693 #define URLACTION_INFODELIVERY_NO_EDITING_CHANNELS 0x1D01
7694 #define URLACTION_INFODELIVERY_NO_REMOVING_CHANNELS 0x1D02
7695 #define URLACTION_INFODELIVERY_NO_ADDING_SUBSCRIPTIONS 0x1D03
7696 #define URLACTION_INFODELIVERY_NO_EDITING_SUBSCRIPTIONS 0x1D04
7697 #define URLACTION_INFODELIVERY_NO_REMOVING_SUBSCRIPTIONS 0x1D05
7698 #define URLACTION_INFODELIVERY_NO_CHANNEL_LOGGING 0x1D06
7699 #define URLACTION_INFODELIVERY_CURR_MAX 0x1D06
7700 #define URLACTION_INFODELIVERY_MAX 0x1Dff
7701 #define URLACTION_CHANNEL_SOFTDIST_MIN 0x1E00
7702 #define URLACTION_CHANNEL_SOFTDIST_PERMISSIONS 0x1E05
7703 #define URLPOLICY_CHANNEL_SOFTDIST_PROHIBIT 0x10000
7704 #define URLPOLICY_CHANNEL_SOFTDIST_PRECACHE 0x20000
7705 #define URLPOLICY_CHANNEL_SOFTDIST_AUTOINSTALL 0x30000
7706 #define URLACTION_CHANNEL_SOFTDIST_MAX 0x1Eff
7707 #if (_WIN32_IE >= _WIN32_IE_IE80)
7708 #define URLACTION_DOTNET_USERCONTROLS 0x2005
7709 #endif
7710 
7711 #if (_WIN32_IE >= _WIN32_IE_IE60SP2)
7712 #define URLACTION_BEHAVIOR_MIN 0x2000
7713 #define URLACTION_BEHAVIOR_RUN 0x2000
7714 #define URLPOLICY_BEHAVIOR_CHECK_LIST 0x10000
7715 
7716 #define URLACTION_FEATURE_MIN 0x2100
7717 #define URLACTION_FEATURE_MIME_SNIFFING 0x2100
7718 #define URLACTION_FEATURE_ZONE_ELEVATION 0x2101
7719 #define URLACTION_FEATURE_WINDOW_RESTRICTIONS 0x2102
7720 #define URLACTION_FEATURE_SCRIPT_STATUS_BAR 0x2103
7721 #define URLACTION_FEATURE_FORCE_ADDR_AND_STATUS 0x2104
7722 #define URLACTION_FEATURE_BLOCK_INPUT_PROMPTS 0x2105
7723 #define URLACTION_FEATURE_DATA_BINDING 0x2106
7724 #define URLACTION_FEATURE_CROSSDOMAIN_FOCUS_CHANGE 0x2107
7725 
7726 #define URLACTION_AUTOMATIC_DOWNLOAD_UI_MIN 0x2200
7727 #define URLACTION_AUTOMATIC_DOWNLOAD_UI 0x2200
7728 #define URLACTION_AUTOMATIC_ACTIVEX_UI 0x2201
7729 
7730 #define URLACTION_ALLOW_RESTRICTEDPROTOCOLS 0x2300
7731 #endif
7732 #if (_WIN32_IE >= _WIN32_IE_IE70)
7733 #define URLACTION_ALLOW_APEVALUATION 0x2301
7734 #define URLACTION_ALLOW_XHR_EVALUATION 0x2302
7735 #define URLACTION_WINDOWS_BROWSER_APPLICATIONS 0x2400
7736 #define URLACTION_XPS_DOCUMENTS 0x2401
7737 #define URLACTION_LOOSE_XAML 0x2402
7738 #define URLACTION_LOWRIGHTS 0x2500
7739 #define URLACTION_WINFX_SETUP 0x2600
7740 #define URLACTION_INPRIVATE_BLOCKING 0x2700
7741 #endif
7742 #define URLACTION_ALLOW_AUDIO_VIDEO 0x2701
7743 #define URLACTION_ALLOW_ACTIVEX_FILTERING 0x2702
7744 #define URLACTION_ALLOW_STRUCTURED_STORAGE_SNIFFING 0x2703
7745 #define URLACTION_ALLOW_AUDIO_VIDEO_PLUGINS 0x2704
7746 #define URLACTION_ALLOW_ZONE_ELEVATION_VIA_OPT_OUT 0x2705
7747 #define URLACTION_ALLOW_ZONE_ELEVATION_OPT_OUT_ADDITION 0x2706
7748 #define URLACTION_ALLOW_CROSSDOMAIN_DROP_WITHIN_WINDOW 0x2708
7749 #define URLACTION_ALLOW_CROSSDOMAIN_DROP_ACROSS_WINDOWS 0x2709
7750 #define URLACTION_ALLOW_CROSSDOMAIN_APPCACHE_MANIFEST 0x270A
7751 #define URLACTION_ALLOW_RENDER_LEGACY_DXTFILTERS 0x270B
7752 
7753 #define URLPOLICY_ALLOW 0x0
7754 #define URLPOLICY_QUERY 0x1
7755 #define URLPOLICY_DISALLOW 0x3
7756 #define URLPOLICY_NOTIFY_ON_ALLOW 0x10
7757 #define URLPOLICY_NOTIFY_ON_DISALLOW 0x20
7758 #define URLPOLICY_LOG_ON_ALLOW 0x40
7759 #define URLPOLICY_LOG_ON_DISALLOW 0x80
7760 
7761 #define URLPOLICY_MASK_PERMISSIONS 0x0f
7762 #define GetUrlPolicyPermissions(dw) (dw & URLPOLICY_MASK_PERMISSIONS)
7763 #define SetUrlPolicyPermissions(dw,dw2) ((dw) = ((dw) & ~(URLPOLICY_MASK_PERMISSIONS)) | (dw2))
7764 
7765 #define URLPOLICY_DONTCHECKDLGBOX 0x100
7766 
7767 #if (_WIN32_IE >= _WIN32_IE_IE60SP2)
7768 EXTERN_C const GUID GUID_CUSTOM_LOCALMACHINEZONEUNLOCKED;
7769 #endif
7770 
7771 #ifndef _LPINTERNETZONEMANAGER_DEFINED
7772 #define _LPINTERNETZONEMANAGER_DEFINED
7773 
7774 /*****************************************************************************
7775  * IInternetZoneManager interface
7776  */
7777 #ifndef __IInternetZoneManager_INTERFACE_DEFINED__
7778 #define __IInternetZoneManager_INTERFACE_DEFINED__
7779 
7780 typedef IInternetZoneManager *LPURLZONEMANAGER;
7781 
7782 typedef enum tagURLZONE {
7783     URLZONE_INVALID = -1,
7784     URLZONE_PREDEFINED_MIN = 0,
7785     URLZONE_LOCAL_MACHINE = 0,
7786     URLZONE_INTRANET = 1,
7787     URLZONE_TRUSTED = 2,
7788     URLZONE_INTERNET = 3,
7789     URLZONE_UNTRUSTED = 4,
7790     URLZONE_PREDEFINED_MAX = 999,
7791     URLZONE_USER_MIN = 1000,
7792     URLZONE_USER_MAX = 10000
7793 } URLZONE;
7794 
7795 #define URLZONE_ESC_FLAG 0x100
7796 
7797 typedef enum tagURLTEMPLATE {
7798     URLTEMPLATE_CUSTOM = 0x0,
7799     URLTEMPLATE_PREDEFINED_MIN = 0x10000,
7800     URLTEMPLATE_LOW = 0x10000,
7801     URLTEMPLATE_MEDLOW = 0x10500,
7802     URLTEMPLATE_MEDIUM = 0x11000,
7803     URLTEMPLATE_MEDHIGH = 0x11500,
7804     URLTEMPLATE_HIGH = 0x12000,
7805     URLTEMPLATE_PREDEFINED_MAX = 0x20000
7806 } URLTEMPLATE;
7807 
7808 enum {
7809     MAX_ZONE_PATH = 260,
7810     MAX_ZONE_DESCRIPTION = 200
7811 };
7812 
7813 typedef enum __WIDL_urlmon_generated_name_00000011 {
7814     ZAFLAGS_CUSTOM_EDIT = 0x1,
7815     ZAFLAGS_ADD_SITES = 0x2,
7816     ZAFLAGS_REQUIRE_VERIFICATION = 0x4,
7817     ZAFLAGS_INCLUDE_PROXY_OVERRIDE = 0x8,
7818     ZAFLAGS_INCLUDE_INTRANET_SITES = 0x10,
7819     ZAFLAGS_NO_UI = 0x20,
7820     ZAFLAGS_SUPPORTS_VERIFICATION = 0x40,
7821     ZAFLAGS_UNC_AS_INTRANET = 0x80,
7822     ZAFLAGS_DETECT_INTRANET = 0x100,
7823     ZAFLAGS_USE_LOCKED_ZONES = 0x10000,
7824     ZAFLAGS_VERIFY_TEMPLATE_SETTINGS = 0x20000,
7825     ZAFLAGS_NO_CACHE = 0x40000
7826 } ZAFLAGS;
7827 
7828 typedef struct _ZONEATTRIBUTES {
7829     ULONG cbSize;
7830     WCHAR szDisplayName[260];
7831     WCHAR szDescription[200];
7832     WCHAR szIconPath[260];
7833     DWORD dwTemplateMinLevel;
7834     DWORD dwTemplateRecommended;
7835     DWORD dwTemplateCurrentLevel;
7836     DWORD dwFlags;
7837 } ZONEATTRIBUTES;
7838 typedef struct _ZONEATTRIBUTES *LPZONEATTRIBUTES;
7839 
7840 
7841 typedef enum _URLZONEREG {
7842     URLZONEREG_DEFAULT = 0,
7843     URLZONEREG_HKLM = 1,
7844     URLZONEREG_HKCU = 2
7845 } URLZONEREG;
7846 
7847 DEFINE_GUID(IID_IInternetZoneManager, 0x79eac9ef, 0xbaf9, 0x11ce, 0x8c,0x82, 0x00,0xaa,0x00,0x4b,0xa9,0x0b);
7848 #if defined(__cplusplus) && !defined(CINTERFACE)
7849 MIDL_INTERFACE("79eac9ef-baf9-11ce-8c82-00aa004ba90b")
7850 IInternetZoneManager : public IUnknown
7851 {
7852     virtual HRESULT STDMETHODCALLTYPE GetZoneAttributes(
7853         DWORD dwZone,
7854         ZONEATTRIBUTES *pZoneAttributes) = 0;
7855 
7856     virtual HRESULT STDMETHODCALLTYPE SetZoneAttributes(
7857         DWORD dwZone,
7858         ZONEATTRIBUTES *pZoneAttributes) = 0;
7859 
7860     virtual HRESULT STDMETHODCALLTYPE GetZoneCustomPolicy(
7861         DWORD dwZone,
7862         REFGUID guidKey,
7863         BYTE **ppPolicy,
7864         DWORD *pcbPolicy,
7865         URLZONEREG urlZoneReg) = 0;
7866 
7867     virtual HRESULT STDMETHODCALLTYPE SetZoneCustomPolicy(
7868         DWORD dwZone,
7869         REFGUID guidKey,
7870         BYTE *pPolicy,
7871         DWORD cbPolicy,
7872         URLZONEREG urlZoneReg) = 0;
7873 
7874     virtual HRESULT STDMETHODCALLTYPE GetZoneActionPolicy(
7875         DWORD dwZone,
7876         DWORD dwAction,
7877         BYTE *pPolicy,
7878         DWORD cbPolicy,
7879         URLZONEREG urlZoneReg) = 0;
7880 
7881     virtual HRESULT STDMETHODCALLTYPE SetZoneActionPolicy(
7882         DWORD dwZone,
7883         DWORD dwAction,
7884         BYTE *pPolicy,
7885         DWORD cbPolicy,
7886         URLZONEREG urlZoneReg) = 0;
7887 
7888     virtual HRESULT STDMETHODCALLTYPE PromptAction(
7889         DWORD dwAction,
7890         HWND hwndParent,
7891         LPCWSTR pwszUrl,
7892         LPCWSTR pwszText,
7893         DWORD dwPromptFlags) = 0;
7894 
7895     virtual HRESULT STDMETHODCALLTYPE LogAction(
7896         DWORD dwAction,
7897         LPCWSTR pwszUrl,
7898         LPCWSTR pwszText,
7899         DWORD dwLogFlags) = 0;
7900 
7901     virtual HRESULT STDMETHODCALLTYPE CreateZoneEnumerator(
7902         DWORD *pdwEnum,
7903         DWORD *pdwCount,
7904         DWORD dwFlags) = 0;
7905 
7906     virtual HRESULT STDMETHODCALLTYPE GetZoneAt(
7907         DWORD dwEnum,
7908         DWORD dwIndex,
7909         DWORD *pdwZone) = 0;
7910 
7911     virtual HRESULT STDMETHODCALLTYPE DestroyZoneEnumerator(
7912         DWORD dwEnum) = 0;
7913 
7914     virtual HRESULT STDMETHODCALLTYPE CopyTemplatePoliciesToZone(
7915         DWORD dwTemplate,
7916         DWORD dwZone,
7917         DWORD dwReserved) = 0;
7918 
7919 };
7920 #ifdef __CRT_UUID_DECL
7921 __CRT_UUID_DECL(IInternetZoneManager, 0x79eac9ef, 0xbaf9, 0x11ce, 0x8c,0x82, 0x00,0xaa,0x00,0x4b,0xa9,0x0b)
7922 #endif
7923 #else
7924 typedef struct IInternetZoneManagerVtbl {
7925     BEGIN_INTERFACE
7926 
7927     /*** IUnknown methods ***/
7928     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
7929         IInternetZoneManager *This,
7930         REFIID riid,
7931         void **ppvObject);
7932 
7933     ULONG (STDMETHODCALLTYPE *AddRef)(
7934         IInternetZoneManager *This);
7935 
7936     ULONG (STDMETHODCALLTYPE *Release)(
7937         IInternetZoneManager *This);
7938 
7939     /*** IInternetZoneManager methods ***/
7940     HRESULT (STDMETHODCALLTYPE *GetZoneAttributes)(
7941         IInternetZoneManager *This,
7942         DWORD dwZone,
7943         ZONEATTRIBUTES *pZoneAttributes);
7944 
7945     HRESULT (STDMETHODCALLTYPE *SetZoneAttributes)(
7946         IInternetZoneManager *This,
7947         DWORD dwZone,
7948         ZONEATTRIBUTES *pZoneAttributes);
7949 
7950     HRESULT (STDMETHODCALLTYPE *GetZoneCustomPolicy)(
7951         IInternetZoneManager *This,
7952         DWORD dwZone,
7953         REFGUID guidKey,
7954         BYTE **ppPolicy,
7955         DWORD *pcbPolicy,
7956         URLZONEREG urlZoneReg);
7957 
7958     HRESULT (STDMETHODCALLTYPE *SetZoneCustomPolicy)(
7959         IInternetZoneManager *This,
7960         DWORD dwZone,
7961         REFGUID guidKey,
7962         BYTE *pPolicy,
7963         DWORD cbPolicy,
7964         URLZONEREG urlZoneReg);
7965 
7966     HRESULT (STDMETHODCALLTYPE *GetZoneActionPolicy)(
7967         IInternetZoneManager *This,
7968         DWORD dwZone,
7969         DWORD dwAction,
7970         BYTE *pPolicy,
7971         DWORD cbPolicy,
7972         URLZONEREG urlZoneReg);
7973 
7974     HRESULT (STDMETHODCALLTYPE *SetZoneActionPolicy)(
7975         IInternetZoneManager *This,
7976         DWORD dwZone,
7977         DWORD dwAction,
7978         BYTE *pPolicy,
7979         DWORD cbPolicy,
7980         URLZONEREG urlZoneReg);
7981 
7982     HRESULT (STDMETHODCALLTYPE *PromptAction)(
7983         IInternetZoneManager *This,
7984         DWORD dwAction,
7985         HWND hwndParent,
7986         LPCWSTR pwszUrl,
7987         LPCWSTR pwszText,
7988         DWORD dwPromptFlags);
7989 
7990     HRESULT (STDMETHODCALLTYPE *LogAction)(
7991         IInternetZoneManager *This,
7992         DWORD dwAction,
7993         LPCWSTR pwszUrl,
7994         LPCWSTR pwszText,
7995         DWORD dwLogFlags);
7996 
7997     HRESULT (STDMETHODCALLTYPE *CreateZoneEnumerator)(
7998         IInternetZoneManager *This,
7999         DWORD *pdwEnum,
8000         DWORD *pdwCount,
8001         DWORD dwFlags);
8002 
8003     HRESULT (STDMETHODCALLTYPE *GetZoneAt)(
8004         IInternetZoneManager *This,
8005         DWORD dwEnum,
8006         DWORD dwIndex,
8007         DWORD *pdwZone);
8008 
8009     HRESULT (STDMETHODCALLTYPE *DestroyZoneEnumerator)(
8010         IInternetZoneManager *This,
8011         DWORD dwEnum);
8012 
8013     HRESULT (STDMETHODCALLTYPE *CopyTemplatePoliciesToZone)(
8014         IInternetZoneManager *This,
8015         DWORD dwTemplate,
8016         DWORD dwZone,
8017         DWORD dwReserved);
8018 
8019     END_INTERFACE
8020 } IInternetZoneManagerVtbl;
8021 
8022 interface IInternetZoneManager {
8023     CONST_VTBL IInternetZoneManagerVtbl* lpVtbl;
8024 };
8025 
8026 #ifdef COBJMACROS
8027 #ifndef WIDL_C_INLINE_WRAPPERS
8028 /*** IUnknown methods ***/
8029 #define IInternetZoneManager_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
8030 #define IInternetZoneManager_AddRef(This) (This)->lpVtbl->AddRef(This)
8031 #define IInternetZoneManager_Release(This) (This)->lpVtbl->Release(This)
8032 /*** IInternetZoneManager methods ***/
8033 #define IInternetZoneManager_GetZoneAttributes(This,dwZone,pZoneAttributes) (This)->lpVtbl->GetZoneAttributes(This,dwZone,pZoneAttributes)
8034 #define IInternetZoneManager_SetZoneAttributes(This,dwZone,pZoneAttributes) (This)->lpVtbl->SetZoneAttributes(This,dwZone,pZoneAttributes)
8035 #define IInternetZoneManager_GetZoneCustomPolicy(This,dwZone,guidKey,ppPolicy,pcbPolicy,urlZoneReg) (This)->lpVtbl->GetZoneCustomPolicy(This,dwZone,guidKey,ppPolicy,pcbPolicy,urlZoneReg)
8036 #define IInternetZoneManager_SetZoneCustomPolicy(This,dwZone,guidKey,pPolicy,cbPolicy,urlZoneReg) (This)->lpVtbl->SetZoneCustomPolicy(This,dwZone,guidKey,pPolicy,cbPolicy,urlZoneReg)
8037 #define IInternetZoneManager_GetZoneActionPolicy(This,dwZone,dwAction,pPolicy,cbPolicy,urlZoneReg) (This)->lpVtbl->GetZoneActionPolicy(This,dwZone,dwAction,pPolicy,cbPolicy,urlZoneReg)
8038 #define IInternetZoneManager_SetZoneActionPolicy(This,dwZone,dwAction,pPolicy,cbPolicy,urlZoneReg) (This)->lpVtbl->SetZoneActionPolicy(This,dwZone,dwAction,pPolicy,cbPolicy,urlZoneReg)
8039 #define IInternetZoneManager_PromptAction(This,dwAction,hwndParent,pwszUrl,pwszText,dwPromptFlags) (This)->lpVtbl->PromptAction(This,dwAction,hwndParent,pwszUrl,pwszText,dwPromptFlags)
8040 #define IInternetZoneManager_LogAction(This,dwAction,pwszUrl,pwszText,dwLogFlags) (This)->lpVtbl->LogAction(This,dwAction,pwszUrl,pwszText,dwLogFlags)
8041 #define IInternetZoneManager_CreateZoneEnumerator(This,pdwEnum,pdwCount,dwFlags) (This)->lpVtbl->CreateZoneEnumerator(This,pdwEnum,pdwCount,dwFlags)
8042 #define IInternetZoneManager_GetZoneAt(This,dwEnum,dwIndex,pdwZone) (This)->lpVtbl->GetZoneAt(This,dwEnum,dwIndex,pdwZone)
8043 #define IInternetZoneManager_DestroyZoneEnumerator(This,dwEnum) (This)->lpVtbl->DestroyZoneEnumerator(This,dwEnum)
8044 #define IInternetZoneManager_CopyTemplatePoliciesToZone(This,dwTemplate,dwZone,dwReserved) (This)->lpVtbl->CopyTemplatePoliciesToZone(This,dwTemplate,dwZone,dwReserved)
8045 #else
8046 /*** IUnknown methods ***/
8047 static FORCEINLINE HRESULT IInternetZoneManager_QueryInterface(IInternetZoneManager* This,REFIID riid,void **ppvObject) {
8048     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
8049 }
8050 static FORCEINLINE ULONG IInternetZoneManager_AddRef(IInternetZoneManager* This) {
8051     return This->lpVtbl->AddRef(This);
8052 }
8053 static FORCEINLINE ULONG IInternetZoneManager_Release(IInternetZoneManager* This) {
8054     return This->lpVtbl->Release(This);
8055 }
8056 /*** IInternetZoneManager methods ***/
8057 static FORCEINLINE HRESULT IInternetZoneManager_GetZoneAttributes(IInternetZoneManager* This,DWORD dwZone,ZONEATTRIBUTES *pZoneAttributes) {
8058     return This->lpVtbl->GetZoneAttributes(This,dwZone,pZoneAttributes);
8059 }
8060 static FORCEINLINE HRESULT IInternetZoneManager_SetZoneAttributes(IInternetZoneManager* This,DWORD dwZone,ZONEATTRIBUTES *pZoneAttributes) {
8061     return This->lpVtbl->SetZoneAttributes(This,dwZone,pZoneAttributes);
8062 }
8063 static FORCEINLINE HRESULT IInternetZoneManager_GetZoneCustomPolicy(IInternetZoneManager* This,DWORD dwZone,REFGUID guidKey,BYTE **ppPolicy,DWORD *pcbPolicy,URLZONEREG urlZoneReg) {
8064     return This->lpVtbl->GetZoneCustomPolicy(This,dwZone,guidKey,ppPolicy,pcbPolicy,urlZoneReg);
8065 }
8066 static FORCEINLINE HRESULT IInternetZoneManager_SetZoneCustomPolicy(IInternetZoneManager* This,DWORD dwZone,REFGUID guidKey,BYTE *pPolicy,DWORD cbPolicy,URLZONEREG urlZoneReg) {
8067     return This->lpVtbl->SetZoneCustomPolicy(This,dwZone,guidKey,pPolicy,cbPolicy,urlZoneReg);
8068 }
8069 static FORCEINLINE HRESULT IInternetZoneManager_GetZoneActionPolicy(IInternetZoneManager* This,DWORD dwZone,DWORD dwAction,BYTE *pPolicy,DWORD cbPolicy,URLZONEREG urlZoneReg) {
8070     return This->lpVtbl->GetZoneActionPolicy(This,dwZone,dwAction,pPolicy,cbPolicy,urlZoneReg);
8071 }
8072 static FORCEINLINE HRESULT IInternetZoneManager_SetZoneActionPolicy(IInternetZoneManager* This,DWORD dwZone,DWORD dwAction,BYTE *pPolicy,DWORD cbPolicy,URLZONEREG urlZoneReg) {
8073     return This->lpVtbl->SetZoneActionPolicy(This,dwZone,dwAction,pPolicy,cbPolicy,urlZoneReg);
8074 }
8075 static FORCEINLINE HRESULT IInternetZoneManager_PromptAction(IInternetZoneManager* This,DWORD dwAction,HWND hwndParent,LPCWSTR pwszUrl,LPCWSTR pwszText,DWORD dwPromptFlags) {
8076     return This->lpVtbl->PromptAction(This,dwAction,hwndParent,pwszUrl,pwszText,dwPromptFlags);
8077 }
8078 static FORCEINLINE HRESULT IInternetZoneManager_LogAction(IInternetZoneManager* This,DWORD dwAction,LPCWSTR pwszUrl,LPCWSTR pwszText,DWORD dwLogFlags) {
8079     return This->lpVtbl->LogAction(This,dwAction,pwszUrl,pwszText,dwLogFlags);
8080 }
8081 static FORCEINLINE HRESULT IInternetZoneManager_CreateZoneEnumerator(IInternetZoneManager* This,DWORD *pdwEnum,DWORD *pdwCount,DWORD dwFlags) {
8082     return This->lpVtbl->CreateZoneEnumerator(This,pdwEnum,pdwCount,dwFlags);
8083 }
8084 static FORCEINLINE HRESULT IInternetZoneManager_GetZoneAt(IInternetZoneManager* This,DWORD dwEnum,DWORD dwIndex,DWORD *pdwZone) {
8085     return This->lpVtbl->GetZoneAt(This,dwEnum,dwIndex,pdwZone);
8086 }
8087 static FORCEINLINE HRESULT IInternetZoneManager_DestroyZoneEnumerator(IInternetZoneManager* This,DWORD dwEnum) {
8088     return This->lpVtbl->DestroyZoneEnumerator(This,dwEnum);
8089 }
8090 static FORCEINLINE HRESULT IInternetZoneManager_CopyTemplatePoliciesToZone(IInternetZoneManager* This,DWORD dwTemplate,DWORD dwZone,DWORD dwReserved) {
8091     return This->lpVtbl->CopyTemplatePoliciesToZone(This,dwTemplate,dwZone,dwReserved);
8092 }
8093 #endif
8094 #endif
8095 
8096 #endif
8097 
8098 
8099 #endif  /* __IInternetZoneManager_INTERFACE_DEFINED__ */
8100 
8101 #endif
8102 
8103 #if (_WIN32_IE >= _WIN32_IE_IE60SP2)
8104 #ifndef _LPINTERNETZONEMANAGEREX_DEFINED
8105 #define _LPINTERNETZONEMANAGEREX_DEFINED
8106 
8107 /*****************************************************************************
8108  * IInternetZoneManagerEx interface
8109  */
8110 #ifndef __IInternetZoneManagerEx_INTERFACE_DEFINED__
8111 #define __IInternetZoneManagerEx_INTERFACE_DEFINED__
8112 
8113 DEFINE_GUID(IID_IInternetZoneManagerEx, 0xa4c23339, 0x8e06, 0x431e, 0x9b,0xf4, 0x7e,0x71,0x1c,0x08,0x56,0x48);
8114 #if defined(__cplusplus) && !defined(CINTERFACE)
8115 MIDL_INTERFACE("a4c23339-8e06-431e-9bf4-7e711c085648")
8116 IInternetZoneManagerEx : public IInternetZoneManager
8117 {
8118     virtual HRESULT STDMETHODCALLTYPE GetZoneActionPolicyEx(
8119         DWORD dwZone,
8120         DWORD dwAction,
8121         BYTE *pPolicy,
8122         DWORD cbPolicy,
8123         URLZONEREG urlZoneReg,
8124         DWORD dwFlags) = 0;
8125 
8126     virtual HRESULT STDMETHODCALLTYPE SetZoneActionPolicyEx(
8127         DWORD dwZone,
8128         DWORD dwAction,
8129         BYTE *pPolicy,
8130         DWORD cbPolicy,
8131         URLZONEREG urlZoneReg,
8132         DWORD dwFlags) = 0;
8133 
8134 };
8135 #ifdef __CRT_UUID_DECL
8136 __CRT_UUID_DECL(IInternetZoneManagerEx, 0xa4c23339, 0x8e06, 0x431e, 0x9b,0xf4, 0x7e,0x71,0x1c,0x08,0x56,0x48)
8137 #endif
8138 #else
8139 typedef struct IInternetZoneManagerExVtbl {
8140     BEGIN_INTERFACE
8141 
8142     /*** IUnknown methods ***/
8143     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
8144         IInternetZoneManagerEx *This,
8145         REFIID riid,
8146         void **ppvObject);
8147 
8148     ULONG (STDMETHODCALLTYPE *AddRef)(
8149         IInternetZoneManagerEx *This);
8150 
8151     ULONG (STDMETHODCALLTYPE *Release)(
8152         IInternetZoneManagerEx *This);
8153 
8154     /*** IInternetZoneManager methods ***/
8155     HRESULT (STDMETHODCALLTYPE *GetZoneAttributes)(
8156         IInternetZoneManagerEx *This,
8157         DWORD dwZone,
8158         ZONEATTRIBUTES *pZoneAttributes);
8159 
8160     HRESULT (STDMETHODCALLTYPE *SetZoneAttributes)(
8161         IInternetZoneManagerEx *This,
8162         DWORD dwZone,
8163         ZONEATTRIBUTES *pZoneAttributes);
8164 
8165     HRESULT (STDMETHODCALLTYPE *GetZoneCustomPolicy)(
8166         IInternetZoneManagerEx *This,
8167         DWORD dwZone,
8168         REFGUID guidKey,
8169         BYTE **ppPolicy,
8170         DWORD *pcbPolicy,
8171         URLZONEREG urlZoneReg);
8172 
8173     HRESULT (STDMETHODCALLTYPE *SetZoneCustomPolicy)(
8174         IInternetZoneManagerEx *This,
8175         DWORD dwZone,
8176         REFGUID guidKey,
8177         BYTE *pPolicy,
8178         DWORD cbPolicy,
8179         URLZONEREG urlZoneReg);
8180 
8181     HRESULT (STDMETHODCALLTYPE *GetZoneActionPolicy)(
8182         IInternetZoneManagerEx *This,
8183         DWORD dwZone,
8184         DWORD dwAction,
8185         BYTE *pPolicy,
8186         DWORD cbPolicy,
8187         URLZONEREG urlZoneReg);
8188 
8189     HRESULT (STDMETHODCALLTYPE *SetZoneActionPolicy)(
8190         IInternetZoneManagerEx *This,
8191         DWORD dwZone,
8192         DWORD dwAction,
8193         BYTE *pPolicy,
8194         DWORD cbPolicy,
8195         URLZONEREG urlZoneReg);
8196 
8197     HRESULT (STDMETHODCALLTYPE *PromptAction)(
8198         IInternetZoneManagerEx *This,
8199         DWORD dwAction,
8200         HWND hwndParent,
8201         LPCWSTR pwszUrl,
8202         LPCWSTR pwszText,
8203         DWORD dwPromptFlags);
8204 
8205     HRESULT (STDMETHODCALLTYPE *LogAction)(
8206         IInternetZoneManagerEx *This,
8207         DWORD dwAction,
8208         LPCWSTR pwszUrl,
8209         LPCWSTR pwszText,
8210         DWORD dwLogFlags);
8211 
8212     HRESULT (STDMETHODCALLTYPE *CreateZoneEnumerator)(
8213         IInternetZoneManagerEx *This,
8214         DWORD *pdwEnum,
8215         DWORD *pdwCount,
8216         DWORD dwFlags);
8217 
8218     HRESULT (STDMETHODCALLTYPE *GetZoneAt)(
8219         IInternetZoneManagerEx *This,
8220         DWORD dwEnum,
8221         DWORD dwIndex,
8222         DWORD *pdwZone);
8223 
8224     HRESULT (STDMETHODCALLTYPE *DestroyZoneEnumerator)(
8225         IInternetZoneManagerEx *This,
8226         DWORD dwEnum);
8227 
8228     HRESULT (STDMETHODCALLTYPE *CopyTemplatePoliciesToZone)(
8229         IInternetZoneManagerEx *This,
8230         DWORD dwTemplate,
8231         DWORD dwZone,
8232         DWORD dwReserved);
8233 
8234     /*** IInternetZoneManagerEx methods ***/
8235     HRESULT (STDMETHODCALLTYPE *GetZoneActionPolicyEx)(
8236         IInternetZoneManagerEx *This,
8237         DWORD dwZone,
8238         DWORD dwAction,
8239         BYTE *pPolicy,
8240         DWORD cbPolicy,
8241         URLZONEREG urlZoneReg,
8242         DWORD dwFlags);
8243 
8244     HRESULT (STDMETHODCALLTYPE *SetZoneActionPolicyEx)(
8245         IInternetZoneManagerEx *This,
8246         DWORD dwZone,
8247         DWORD dwAction,
8248         BYTE *pPolicy,
8249         DWORD cbPolicy,
8250         URLZONEREG urlZoneReg,
8251         DWORD dwFlags);
8252 
8253     END_INTERFACE
8254 } IInternetZoneManagerExVtbl;
8255 
8256 interface IInternetZoneManagerEx {
8257     CONST_VTBL IInternetZoneManagerExVtbl* lpVtbl;
8258 };
8259 
8260 #ifdef COBJMACROS
8261 #ifndef WIDL_C_INLINE_WRAPPERS
8262 /*** IUnknown methods ***/
8263 #define IInternetZoneManagerEx_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
8264 #define IInternetZoneManagerEx_AddRef(This) (This)->lpVtbl->AddRef(This)
8265 #define IInternetZoneManagerEx_Release(This) (This)->lpVtbl->Release(This)
8266 /*** IInternetZoneManager methods ***/
8267 #define IInternetZoneManagerEx_GetZoneAttributes(This,dwZone,pZoneAttributes) (This)->lpVtbl->GetZoneAttributes(This,dwZone,pZoneAttributes)
8268 #define IInternetZoneManagerEx_SetZoneAttributes(This,dwZone,pZoneAttributes) (This)->lpVtbl->SetZoneAttributes(This,dwZone,pZoneAttributes)
8269 #define IInternetZoneManagerEx_GetZoneCustomPolicy(This,dwZone,guidKey,ppPolicy,pcbPolicy,urlZoneReg) (This)->lpVtbl->GetZoneCustomPolicy(This,dwZone,guidKey,ppPolicy,pcbPolicy,urlZoneReg)
8270 #define IInternetZoneManagerEx_SetZoneCustomPolicy(This,dwZone,guidKey,pPolicy,cbPolicy,urlZoneReg) (This)->lpVtbl->SetZoneCustomPolicy(This,dwZone,guidKey,pPolicy,cbPolicy,urlZoneReg)
8271 #define IInternetZoneManagerEx_GetZoneActionPolicy(This,dwZone,dwAction,pPolicy,cbPolicy,urlZoneReg) (This)->lpVtbl->GetZoneActionPolicy(This,dwZone,dwAction,pPolicy,cbPolicy,urlZoneReg)
8272 #define IInternetZoneManagerEx_SetZoneActionPolicy(This,dwZone,dwAction,pPolicy,cbPolicy,urlZoneReg) (This)->lpVtbl->SetZoneActionPolicy(This,dwZone,dwAction,pPolicy,cbPolicy,urlZoneReg)
8273 #define IInternetZoneManagerEx_PromptAction(This,dwAction,hwndParent,pwszUrl,pwszText,dwPromptFlags) (This)->lpVtbl->PromptAction(This,dwAction,hwndParent,pwszUrl,pwszText,dwPromptFlags)
8274 #define IInternetZoneManagerEx_LogAction(This,dwAction,pwszUrl,pwszText,dwLogFlags) (This)->lpVtbl->LogAction(This,dwAction,pwszUrl,pwszText,dwLogFlags)
8275 #define IInternetZoneManagerEx_CreateZoneEnumerator(This,pdwEnum,pdwCount,dwFlags) (This)->lpVtbl->CreateZoneEnumerator(This,pdwEnum,pdwCount,dwFlags)
8276 #define IInternetZoneManagerEx_GetZoneAt(This,dwEnum,dwIndex,pdwZone) (This)->lpVtbl->GetZoneAt(This,dwEnum,dwIndex,pdwZone)
8277 #define IInternetZoneManagerEx_DestroyZoneEnumerator(This,dwEnum) (This)->lpVtbl->DestroyZoneEnumerator(This,dwEnum)
8278 #define IInternetZoneManagerEx_CopyTemplatePoliciesToZone(This,dwTemplate,dwZone,dwReserved) (This)->lpVtbl->CopyTemplatePoliciesToZone(This,dwTemplate,dwZone,dwReserved)
8279 /*** IInternetZoneManagerEx methods ***/
8280 #define IInternetZoneManagerEx_GetZoneActionPolicyEx(This,dwZone,dwAction,pPolicy,cbPolicy,urlZoneReg,dwFlags) (This)->lpVtbl->GetZoneActionPolicyEx(This,dwZone,dwAction,pPolicy,cbPolicy,urlZoneReg,dwFlags)
8281 #define IInternetZoneManagerEx_SetZoneActionPolicyEx(This,dwZone,dwAction,pPolicy,cbPolicy,urlZoneReg,dwFlags) (This)->lpVtbl->SetZoneActionPolicyEx(This,dwZone,dwAction,pPolicy,cbPolicy,urlZoneReg,dwFlags)
8282 #else
8283 /*** IUnknown methods ***/
8284 static FORCEINLINE HRESULT IInternetZoneManagerEx_QueryInterface(IInternetZoneManagerEx* This,REFIID riid,void **ppvObject) {
8285     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
8286 }
8287 static FORCEINLINE ULONG IInternetZoneManagerEx_AddRef(IInternetZoneManagerEx* This) {
8288     return This->lpVtbl->AddRef(This);
8289 }
8290 static FORCEINLINE ULONG IInternetZoneManagerEx_Release(IInternetZoneManagerEx* This) {
8291     return This->lpVtbl->Release(This);
8292 }
8293 /*** IInternetZoneManager methods ***/
8294 static FORCEINLINE HRESULT IInternetZoneManagerEx_GetZoneAttributes(IInternetZoneManagerEx* This,DWORD dwZone,ZONEATTRIBUTES *pZoneAttributes) {
8295     return This->lpVtbl->GetZoneAttributes(This,dwZone,pZoneAttributes);
8296 }
8297 static FORCEINLINE HRESULT IInternetZoneManagerEx_SetZoneAttributes(IInternetZoneManagerEx* This,DWORD dwZone,ZONEATTRIBUTES *pZoneAttributes) {
8298     return This->lpVtbl->SetZoneAttributes(This,dwZone,pZoneAttributes);
8299 }
8300 static FORCEINLINE HRESULT IInternetZoneManagerEx_GetZoneCustomPolicy(IInternetZoneManagerEx* This,DWORD dwZone,REFGUID guidKey,BYTE **ppPolicy,DWORD *pcbPolicy,URLZONEREG urlZoneReg) {
8301     return This->lpVtbl->GetZoneCustomPolicy(This,dwZone,guidKey,ppPolicy,pcbPolicy,urlZoneReg);
8302 }
8303 static FORCEINLINE HRESULT IInternetZoneManagerEx_SetZoneCustomPolicy(IInternetZoneManagerEx* This,DWORD dwZone,REFGUID guidKey,BYTE *pPolicy,DWORD cbPolicy,URLZONEREG urlZoneReg) {
8304     return This->lpVtbl->SetZoneCustomPolicy(This,dwZone,guidKey,pPolicy,cbPolicy,urlZoneReg);
8305 }
8306 static FORCEINLINE HRESULT IInternetZoneManagerEx_GetZoneActionPolicy(IInternetZoneManagerEx* This,DWORD dwZone,DWORD dwAction,BYTE *pPolicy,DWORD cbPolicy,URLZONEREG urlZoneReg) {
8307     return This->lpVtbl->GetZoneActionPolicy(This,dwZone,dwAction,pPolicy,cbPolicy,urlZoneReg);
8308 }
8309 static FORCEINLINE HRESULT IInternetZoneManagerEx_SetZoneActionPolicy(IInternetZoneManagerEx* This,DWORD dwZone,DWORD dwAction,BYTE *pPolicy,DWORD cbPolicy,URLZONEREG urlZoneReg) {
8310     return This->lpVtbl->SetZoneActionPolicy(This,dwZone,dwAction,pPolicy,cbPolicy,urlZoneReg);
8311 }
8312 static FORCEINLINE HRESULT IInternetZoneManagerEx_PromptAction(IInternetZoneManagerEx* This,DWORD dwAction,HWND hwndParent,LPCWSTR pwszUrl,LPCWSTR pwszText,DWORD dwPromptFlags) {
8313     return This->lpVtbl->PromptAction(This,dwAction,hwndParent,pwszUrl,pwszText,dwPromptFlags);
8314 }
8315 static FORCEINLINE HRESULT IInternetZoneManagerEx_LogAction(IInternetZoneManagerEx* This,DWORD dwAction,LPCWSTR pwszUrl,LPCWSTR pwszText,DWORD dwLogFlags) {
8316     return This->lpVtbl->LogAction(This,dwAction,pwszUrl,pwszText,dwLogFlags);
8317 }
8318 static FORCEINLINE HRESULT IInternetZoneManagerEx_CreateZoneEnumerator(IInternetZoneManagerEx* This,DWORD *pdwEnum,DWORD *pdwCount,DWORD dwFlags) {
8319     return This->lpVtbl->CreateZoneEnumerator(This,pdwEnum,pdwCount,dwFlags);
8320 }
8321 static FORCEINLINE HRESULT IInternetZoneManagerEx_GetZoneAt(IInternetZoneManagerEx* This,DWORD dwEnum,DWORD dwIndex,DWORD *pdwZone) {
8322     return This->lpVtbl->GetZoneAt(This,dwEnum,dwIndex,pdwZone);
8323 }
8324 static FORCEINLINE HRESULT IInternetZoneManagerEx_DestroyZoneEnumerator(IInternetZoneManagerEx* This,DWORD dwEnum) {
8325     return This->lpVtbl->DestroyZoneEnumerator(This,dwEnum);
8326 }
8327 static FORCEINLINE HRESULT IInternetZoneManagerEx_CopyTemplatePoliciesToZone(IInternetZoneManagerEx* This,DWORD dwTemplate,DWORD dwZone,DWORD dwReserved) {
8328     return This->lpVtbl->CopyTemplatePoliciesToZone(This,dwTemplate,dwZone,dwReserved);
8329 }
8330 /*** IInternetZoneManagerEx methods ***/
8331 static FORCEINLINE HRESULT IInternetZoneManagerEx_GetZoneActionPolicyEx(IInternetZoneManagerEx* This,DWORD dwZone,DWORD dwAction,BYTE *pPolicy,DWORD cbPolicy,URLZONEREG urlZoneReg,DWORD dwFlags) {
8332     return This->lpVtbl->GetZoneActionPolicyEx(This,dwZone,dwAction,pPolicy,cbPolicy,urlZoneReg,dwFlags);
8333 }
8334 static FORCEINLINE HRESULT IInternetZoneManagerEx_SetZoneActionPolicyEx(IInternetZoneManagerEx* This,DWORD dwZone,DWORD dwAction,BYTE *pPolicy,DWORD cbPolicy,URLZONEREG urlZoneReg,DWORD dwFlags) {
8335     return This->lpVtbl->SetZoneActionPolicyEx(This,dwZone,dwAction,pPolicy,cbPolicy,urlZoneReg,dwFlags);
8336 }
8337 #endif
8338 #endif
8339 
8340 #endif
8341 
8342 
8343 #endif  /* __IInternetZoneManagerEx_INTERFACE_DEFINED__ */
8344 
8345 #endif
8346 #endif
8347 
8348 #if (_WIN32_IE >= _WIN32_IE_IE70)
8349 #ifndef _LPINTERNETZONEMANAGEREX2_DEFINED
8350 #define _LPINTERNETZONEMANAGEREX2_DEFINED
8351 
8352 #define SECURITY_IE_STATE_GREEN 0x0
8353 #define SECURITY_IE_STATE_RED 0x1
8354 
8355 /*****************************************************************************
8356  * IInternetZoneManagerEx2 interface
8357  */
8358 #ifndef __IInternetZoneManagerEx2_INTERFACE_DEFINED__
8359 #define __IInternetZoneManagerEx2_INTERFACE_DEFINED__
8360 
8361 DEFINE_GUID(IID_IInternetZoneManagerEx2, 0xedc17559, 0xdd5d, 0x4846, 0x8e,0xef, 0x8b,0xec,0xba,0x5a,0x4a,0xbf);
8362 #if defined(__cplusplus) && !defined(CINTERFACE)
8363 MIDL_INTERFACE("edc17559-dd5d-4846-8eef-8becba5a4abf")
8364 IInternetZoneManagerEx2 : public IInternetZoneManagerEx
8365 {
8366     virtual HRESULT STDMETHODCALLTYPE GetZoneAttributesEx(
8367         DWORD dwZone,
8368         ZONEATTRIBUTES *pZoneAttributes,
8369         DWORD dwFlags) = 0;
8370 
8371     virtual HRESULT STDMETHODCALLTYPE GetZoneSecurityState(
8372         DWORD dwZoneIndex,
8373         WINBOOL fRespectPolicy,
8374         LPDWORD pdwState,
8375         WINBOOL *pfPolicyEncountered) = 0;
8376 
8377     virtual HRESULT STDMETHODCALLTYPE GetIESecurityState(
8378         WINBOOL fRespectPolicy,
8379         LPDWORD pdwState,
8380         WINBOOL *pfPolicyEncountered,
8381         WINBOOL fNoCache) = 0;
8382 
8383     virtual HRESULT STDMETHODCALLTYPE FixUnsecureSettings(
8384         ) = 0;
8385 
8386 };
8387 #ifdef __CRT_UUID_DECL
8388 __CRT_UUID_DECL(IInternetZoneManagerEx2, 0xedc17559, 0xdd5d, 0x4846, 0x8e,0xef, 0x8b,0xec,0xba,0x5a,0x4a,0xbf)
8389 #endif
8390 #else
8391 typedef struct IInternetZoneManagerEx2Vtbl {
8392     BEGIN_INTERFACE
8393 
8394     /*** IUnknown methods ***/
8395     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
8396         IInternetZoneManagerEx2 *This,
8397         REFIID riid,
8398         void **ppvObject);
8399 
8400     ULONG (STDMETHODCALLTYPE *AddRef)(
8401         IInternetZoneManagerEx2 *This);
8402 
8403     ULONG (STDMETHODCALLTYPE *Release)(
8404         IInternetZoneManagerEx2 *This);
8405 
8406     /*** IInternetZoneManager methods ***/
8407     HRESULT (STDMETHODCALLTYPE *GetZoneAttributes)(
8408         IInternetZoneManagerEx2 *This,
8409         DWORD dwZone,
8410         ZONEATTRIBUTES *pZoneAttributes);
8411 
8412     HRESULT (STDMETHODCALLTYPE *SetZoneAttributes)(
8413         IInternetZoneManagerEx2 *This,
8414         DWORD dwZone,
8415         ZONEATTRIBUTES *pZoneAttributes);
8416 
8417     HRESULT (STDMETHODCALLTYPE *GetZoneCustomPolicy)(
8418         IInternetZoneManagerEx2 *This,
8419         DWORD dwZone,
8420         REFGUID guidKey,
8421         BYTE **ppPolicy,
8422         DWORD *pcbPolicy,
8423         URLZONEREG urlZoneReg);
8424 
8425     HRESULT (STDMETHODCALLTYPE *SetZoneCustomPolicy)(
8426         IInternetZoneManagerEx2 *This,
8427         DWORD dwZone,
8428         REFGUID guidKey,
8429         BYTE *pPolicy,
8430         DWORD cbPolicy,
8431         URLZONEREG urlZoneReg);
8432 
8433     HRESULT (STDMETHODCALLTYPE *GetZoneActionPolicy)(
8434         IInternetZoneManagerEx2 *This,
8435         DWORD dwZone,
8436         DWORD dwAction,
8437         BYTE *pPolicy,
8438         DWORD cbPolicy,
8439         URLZONEREG urlZoneReg);
8440 
8441     HRESULT (STDMETHODCALLTYPE *SetZoneActionPolicy)(
8442         IInternetZoneManagerEx2 *This,
8443         DWORD dwZone,
8444         DWORD dwAction,
8445         BYTE *pPolicy,
8446         DWORD cbPolicy,
8447         URLZONEREG urlZoneReg);
8448 
8449     HRESULT (STDMETHODCALLTYPE *PromptAction)(
8450         IInternetZoneManagerEx2 *This,
8451         DWORD dwAction,
8452         HWND hwndParent,
8453         LPCWSTR pwszUrl,
8454         LPCWSTR pwszText,
8455         DWORD dwPromptFlags);
8456 
8457     HRESULT (STDMETHODCALLTYPE *LogAction)(
8458         IInternetZoneManagerEx2 *This,
8459         DWORD dwAction,
8460         LPCWSTR pwszUrl,
8461         LPCWSTR pwszText,
8462         DWORD dwLogFlags);
8463 
8464     HRESULT (STDMETHODCALLTYPE *CreateZoneEnumerator)(
8465         IInternetZoneManagerEx2 *This,
8466         DWORD *pdwEnum,
8467         DWORD *pdwCount,
8468         DWORD dwFlags);
8469 
8470     HRESULT (STDMETHODCALLTYPE *GetZoneAt)(
8471         IInternetZoneManagerEx2 *This,
8472         DWORD dwEnum,
8473         DWORD dwIndex,
8474         DWORD *pdwZone);
8475 
8476     HRESULT (STDMETHODCALLTYPE *DestroyZoneEnumerator)(
8477         IInternetZoneManagerEx2 *This,
8478         DWORD dwEnum);
8479 
8480     HRESULT (STDMETHODCALLTYPE *CopyTemplatePoliciesToZone)(
8481         IInternetZoneManagerEx2 *This,
8482         DWORD dwTemplate,
8483         DWORD dwZone,
8484         DWORD dwReserved);
8485 
8486     /*** IInternetZoneManagerEx methods ***/
8487     HRESULT (STDMETHODCALLTYPE *GetZoneActionPolicyEx)(
8488         IInternetZoneManagerEx2 *This,
8489         DWORD dwZone,
8490         DWORD dwAction,
8491         BYTE *pPolicy,
8492         DWORD cbPolicy,
8493         URLZONEREG urlZoneReg,
8494         DWORD dwFlags);
8495 
8496     HRESULT (STDMETHODCALLTYPE *SetZoneActionPolicyEx)(
8497         IInternetZoneManagerEx2 *This,
8498         DWORD dwZone,
8499         DWORD dwAction,
8500         BYTE *pPolicy,
8501         DWORD cbPolicy,
8502         URLZONEREG urlZoneReg,
8503         DWORD dwFlags);
8504 
8505     /*** IInternetZoneManagerEx2 methods ***/
8506     HRESULT (STDMETHODCALLTYPE *GetZoneAttributesEx)(
8507         IInternetZoneManagerEx2 *This,
8508         DWORD dwZone,
8509         ZONEATTRIBUTES *pZoneAttributes,
8510         DWORD dwFlags);
8511 
8512     HRESULT (STDMETHODCALLTYPE *GetZoneSecurityState)(
8513         IInternetZoneManagerEx2 *This,
8514         DWORD dwZoneIndex,
8515         WINBOOL fRespectPolicy,
8516         LPDWORD pdwState,
8517         WINBOOL *pfPolicyEncountered);
8518 
8519     HRESULT (STDMETHODCALLTYPE *GetIESecurityState)(
8520         IInternetZoneManagerEx2 *This,
8521         WINBOOL fRespectPolicy,
8522         LPDWORD pdwState,
8523         WINBOOL *pfPolicyEncountered,
8524         WINBOOL fNoCache);
8525 
8526     HRESULT (STDMETHODCALLTYPE *FixUnsecureSettings)(
8527         IInternetZoneManagerEx2 *This);
8528 
8529     END_INTERFACE
8530 } IInternetZoneManagerEx2Vtbl;
8531 
8532 interface IInternetZoneManagerEx2 {
8533     CONST_VTBL IInternetZoneManagerEx2Vtbl* lpVtbl;
8534 };
8535 
8536 #ifdef COBJMACROS
8537 #ifndef WIDL_C_INLINE_WRAPPERS
8538 /*** IUnknown methods ***/
8539 #define IInternetZoneManagerEx2_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
8540 #define IInternetZoneManagerEx2_AddRef(This) (This)->lpVtbl->AddRef(This)
8541 #define IInternetZoneManagerEx2_Release(This) (This)->lpVtbl->Release(This)
8542 /*** IInternetZoneManager methods ***/
8543 #define IInternetZoneManagerEx2_GetZoneAttributes(This,dwZone,pZoneAttributes) (This)->lpVtbl->GetZoneAttributes(This,dwZone,pZoneAttributes)
8544 #define IInternetZoneManagerEx2_SetZoneAttributes(This,dwZone,pZoneAttributes) (This)->lpVtbl->SetZoneAttributes(This,dwZone,pZoneAttributes)
8545 #define IInternetZoneManagerEx2_GetZoneCustomPolicy(This,dwZone,guidKey,ppPolicy,pcbPolicy,urlZoneReg) (This)->lpVtbl->GetZoneCustomPolicy(This,dwZone,guidKey,ppPolicy,pcbPolicy,urlZoneReg)
8546 #define IInternetZoneManagerEx2_SetZoneCustomPolicy(This,dwZone,guidKey,pPolicy,cbPolicy,urlZoneReg) (This)->lpVtbl->SetZoneCustomPolicy(This,dwZone,guidKey,pPolicy,cbPolicy,urlZoneReg)
8547 #define IInternetZoneManagerEx2_GetZoneActionPolicy(This,dwZone,dwAction,pPolicy,cbPolicy,urlZoneReg) (This)->lpVtbl->GetZoneActionPolicy(This,dwZone,dwAction,pPolicy,cbPolicy,urlZoneReg)
8548 #define IInternetZoneManagerEx2_SetZoneActionPolicy(This,dwZone,dwAction,pPolicy,cbPolicy,urlZoneReg) (This)->lpVtbl->SetZoneActionPolicy(This,dwZone,dwAction,pPolicy,cbPolicy,urlZoneReg)
8549 #define IInternetZoneManagerEx2_PromptAction(This,dwAction,hwndParent,pwszUrl,pwszText,dwPromptFlags) (This)->lpVtbl->PromptAction(This,dwAction,hwndParent,pwszUrl,pwszText,dwPromptFlags)
8550 #define IInternetZoneManagerEx2_LogAction(This,dwAction,pwszUrl,pwszText,dwLogFlags) (This)->lpVtbl->LogAction(This,dwAction,pwszUrl,pwszText,dwLogFlags)
8551 #define IInternetZoneManagerEx2_CreateZoneEnumerator(This,pdwEnum,pdwCount,dwFlags) (This)->lpVtbl->CreateZoneEnumerator(This,pdwEnum,pdwCount,dwFlags)
8552 #define IInternetZoneManagerEx2_GetZoneAt(This,dwEnum,dwIndex,pdwZone) (This)->lpVtbl->GetZoneAt(This,dwEnum,dwIndex,pdwZone)
8553 #define IInternetZoneManagerEx2_DestroyZoneEnumerator(This,dwEnum) (This)->lpVtbl->DestroyZoneEnumerator(This,dwEnum)
8554 #define IInternetZoneManagerEx2_CopyTemplatePoliciesToZone(This,dwTemplate,dwZone,dwReserved) (This)->lpVtbl->CopyTemplatePoliciesToZone(This,dwTemplate,dwZone,dwReserved)
8555 /*** IInternetZoneManagerEx methods ***/
8556 #define IInternetZoneManagerEx2_GetZoneActionPolicyEx(This,dwZone,dwAction,pPolicy,cbPolicy,urlZoneReg,dwFlags) (This)->lpVtbl->GetZoneActionPolicyEx(This,dwZone,dwAction,pPolicy,cbPolicy,urlZoneReg,dwFlags)
8557 #define IInternetZoneManagerEx2_SetZoneActionPolicyEx(This,dwZone,dwAction,pPolicy,cbPolicy,urlZoneReg,dwFlags) (This)->lpVtbl->SetZoneActionPolicyEx(This,dwZone,dwAction,pPolicy,cbPolicy,urlZoneReg,dwFlags)
8558 /*** IInternetZoneManagerEx2 methods ***/
8559 #define IInternetZoneManagerEx2_GetZoneAttributesEx(This,dwZone,pZoneAttributes,dwFlags) (This)->lpVtbl->GetZoneAttributesEx(This,dwZone,pZoneAttributes,dwFlags)
8560 #define IInternetZoneManagerEx2_GetZoneSecurityState(This,dwZoneIndex,fRespectPolicy,pdwState,pfPolicyEncountered) (This)->lpVtbl->GetZoneSecurityState(This,dwZoneIndex,fRespectPolicy,pdwState,pfPolicyEncountered)
8561 #define IInternetZoneManagerEx2_GetIESecurityState(This,fRespectPolicy,pdwState,pfPolicyEncountered,fNoCache) (This)->lpVtbl->GetIESecurityState(This,fRespectPolicy,pdwState,pfPolicyEncountered,fNoCache)
8562 #define IInternetZoneManagerEx2_FixUnsecureSettings(This) (This)->lpVtbl->FixUnsecureSettings(This)
8563 #else
8564 /*** IUnknown methods ***/
8565 static FORCEINLINE HRESULT IInternetZoneManagerEx2_QueryInterface(IInternetZoneManagerEx2* This,REFIID riid,void **ppvObject) {
8566     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
8567 }
8568 static FORCEINLINE ULONG IInternetZoneManagerEx2_AddRef(IInternetZoneManagerEx2* This) {
8569     return This->lpVtbl->AddRef(This);
8570 }
8571 static FORCEINLINE ULONG IInternetZoneManagerEx2_Release(IInternetZoneManagerEx2* This) {
8572     return This->lpVtbl->Release(This);
8573 }
8574 /*** IInternetZoneManager methods ***/
8575 static FORCEINLINE HRESULT IInternetZoneManagerEx2_GetZoneAttributes(IInternetZoneManagerEx2* This,DWORD dwZone,ZONEATTRIBUTES *pZoneAttributes) {
8576     return This->lpVtbl->GetZoneAttributes(This,dwZone,pZoneAttributes);
8577 }
8578 static FORCEINLINE HRESULT IInternetZoneManagerEx2_SetZoneAttributes(IInternetZoneManagerEx2* This,DWORD dwZone,ZONEATTRIBUTES *pZoneAttributes) {
8579     return This->lpVtbl->SetZoneAttributes(This,dwZone,pZoneAttributes);
8580 }
8581 static FORCEINLINE HRESULT IInternetZoneManagerEx2_GetZoneCustomPolicy(IInternetZoneManagerEx2* This,DWORD dwZone,REFGUID guidKey,BYTE **ppPolicy,DWORD *pcbPolicy,URLZONEREG urlZoneReg) {
8582     return This->lpVtbl->GetZoneCustomPolicy(This,dwZone,guidKey,ppPolicy,pcbPolicy,urlZoneReg);
8583 }
8584 static FORCEINLINE HRESULT IInternetZoneManagerEx2_SetZoneCustomPolicy(IInternetZoneManagerEx2* This,DWORD dwZone,REFGUID guidKey,BYTE *pPolicy,DWORD cbPolicy,URLZONEREG urlZoneReg) {
8585     return This->lpVtbl->SetZoneCustomPolicy(This,dwZone,guidKey,pPolicy,cbPolicy,urlZoneReg);
8586 }
8587 static FORCEINLINE HRESULT IInternetZoneManagerEx2_GetZoneActionPolicy(IInternetZoneManagerEx2* This,DWORD dwZone,DWORD dwAction,BYTE *pPolicy,DWORD cbPolicy,URLZONEREG urlZoneReg) {
8588     return This->lpVtbl->GetZoneActionPolicy(This,dwZone,dwAction,pPolicy,cbPolicy,urlZoneReg);
8589 }
8590 static FORCEINLINE HRESULT IInternetZoneManagerEx2_SetZoneActionPolicy(IInternetZoneManagerEx2* This,DWORD dwZone,DWORD dwAction,BYTE *pPolicy,DWORD cbPolicy,URLZONEREG urlZoneReg) {
8591     return This->lpVtbl->SetZoneActionPolicy(This,dwZone,dwAction,pPolicy,cbPolicy,urlZoneReg);
8592 }
8593 static FORCEINLINE HRESULT IInternetZoneManagerEx2_PromptAction(IInternetZoneManagerEx2* This,DWORD dwAction,HWND hwndParent,LPCWSTR pwszUrl,LPCWSTR pwszText,DWORD dwPromptFlags) {
8594     return This->lpVtbl->PromptAction(This,dwAction,hwndParent,pwszUrl,pwszText,dwPromptFlags);
8595 }
8596 static FORCEINLINE HRESULT IInternetZoneManagerEx2_LogAction(IInternetZoneManagerEx2* This,DWORD dwAction,LPCWSTR pwszUrl,LPCWSTR pwszText,DWORD dwLogFlags) {
8597     return This->lpVtbl->LogAction(This,dwAction,pwszUrl,pwszText,dwLogFlags);
8598 }
8599 static FORCEINLINE HRESULT IInternetZoneManagerEx2_CreateZoneEnumerator(IInternetZoneManagerEx2* This,DWORD *pdwEnum,DWORD *pdwCount,DWORD dwFlags) {
8600     return This->lpVtbl->CreateZoneEnumerator(This,pdwEnum,pdwCount,dwFlags);
8601 }
8602 static FORCEINLINE HRESULT IInternetZoneManagerEx2_GetZoneAt(IInternetZoneManagerEx2* This,DWORD dwEnum,DWORD dwIndex,DWORD *pdwZone) {
8603     return This->lpVtbl->GetZoneAt(This,dwEnum,dwIndex,pdwZone);
8604 }
8605 static FORCEINLINE HRESULT IInternetZoneManagerEx2_DestroyZoneEnumerator(IInternetZoneManagerEx2* This,DWORD dwEnum) {
8606     return This->lpVtbl->DestroyZoneEnumerator(This,dwEnum);
8607 }
8608 static FORCEINLINE HRESULT IInternetZoneManagerEx2_CopyTemplatePoliciesToZone(IInternetZoneManagerEx2* This,DWORD dwTemplate,DWORD dwZone,DWORD dwReserved) {
8609     return This->lpVtbl->CopyTemplatePoliciesToZone(This,dwTemplate,dwZone,dwReserved);
8610 }
8611 /*** IInternetZoneManagerEx methods ***/
8612 static FORCEINLINE HRESULT IInternetZoneManagerEx2_GetZoneActionPolicyEx(IInternetZoneManagerEx2* This,DWORD dwZone,DWORD dwAction,BYTE *pPolicy,DWORD cbPolicy,URLZONEREG urlZoneReg,DWORD dwFlags) {
8613     return This->lpVtbl->GetZoneActionPolicyEx(This,dwZone,dwAction,pPolicy,cbPolicy,urlZoneReg,dwFlags);
8614 }
8615 static FORCEINLINE HRESULT IInternetZoneManagerEx2_SetZoneActionPolicyEx(IInternetZoneManagerEx2* This,DWORD dwZone,DWORD dwAction,BYTE *pPolicy,DWORD cbPolicy,URLZONEREG urlZoneReg,DWORD dwFlags) {
8616     return This->lpVtbl->SetZoneActionPolicyEx(This,dwZone,dwAction,pPolicy,cbPolicy,urlZoneReg,dwFlags);
8617 }
8618 /*** IInternetZoneManagerEx2 methods ***/
8619 static FORCEINLINE HRESULT IInternetZoneManagerEx2_GetZoneAttributesEx(IInternetZoneManagerEx2* This,DWORD dwZone,ZONEATTRIBUTES *pZoneAttributes,DWORD dwFlags) {
8620     return This->lpVtbl->GetZoneAttributesEx(This,dwZone,pZoneAttributes,dwFlags);
8621 }
8622 static FORCEINLINE HRESULT IInternetZoneManagerEx2_GetZoneSecurityState(IInternetZoneManagerEx2* This,DWORD dwZoneIndex,WINBOOL fRespectPolicy,LPDWORD pdwState,WINBOOL *pfPolicyEncountered) {
8623     return This->lpVtbl->GetZoneSecurityState(This,dwZoneIndex,fRespectPolicy,pdwState,pfPolicyEncountered);
8624 }
8625 static FORCEINLINE HRESULT IInternetZoneManagerEx2_GetIESecurityState(IInternetZoneManagerEx2* This,WINBOOL fRespectPolicy,LPDWORD pdwState,WINBOOL *pfPolicyEncountered,WINBOOL fNoCache) {
8626     return This->lpVtbl->GetIESecurityState(This,fRespectPolicy,pdwState,pfPolicyEncountered,fNoCache);
8627 }
8628 static FORCEINLINE HRESULT IInternetZoneManagerEx2_FixUnsecureSettings(IInternetZoneManagerEx2* This) {
8629     return This->lpVtbl->FixUnsecureSettings(This);
8630 }
8631 #endif
8632 #endif
8633 
8634 #endif
8635 
8636 
8637 #endif  /* __IInternetZoneManagerEx2_INTERFACE_DEFINED__ */
8638 
8639 #endif
8640 #endif
8641 
8642 EXTERN_C const IID CLSID_SoftDistExt;
8643 
8644 #ifndef _LPSOFTDISTEXT_DEFINED
8645 #define _LPSOFTDISTEXT_DEFINED
8646 
8647 #define SOFTDIST_FLAG_USAGE_EMAIL 0x1
8648 #define SOFTDIST_FLAG_USAGE_PRECACHE 0x2
8649 #define SOFTDIST_FLAG_USAGE_AUTOINSTALL 0x4
8650 #define SOFTDIST_FLAG_DELETE_SUBSCRIPTION 0x8
8651 
8652 #define SOFTDIST_ADSTATE_NONE 0x0
8653 #define SOFTDIST_ADSTATE_AVAILABLE 0x1
8654 #define SOFTDIST_ADSTATE_DOWNLOADED 0x2
8655 #define SOFTDIST_ADSTATE_INSTALLED 0x3
8656 
8657 typedef struct _tagCODEBASEHOLD {
8658     ULONG cbSize;
8659     LPWSTR szDistUnit;
8660     LPWSTR szCodeBase;
8661     DWORD dwVersionMS;
8662     DWORD dwVersionLS;
8663     DWORD dwStyle;
8664 } CODEBASEHOLD;
8665 typedef struct _tagCODEBASEHOLD *LPCODEBASEHOLD;
8666 
8667 typedef struct _tagSOFTDISTINFO {
8668     ULONG cbSize;
8669     DWORD dwFlags;
8670     DWORD dwAdState;
8671     LPWSTR szTitle;
8672     LPWSTR szAbstract;
8673     LPWSTR szHREF;
8674     DWORD dwInstalledVersionMS;
8675     DWORD dwInstalledVersionLS;
8676     DWORD dwUpdateVersionMS;
8677     DWORD dwUpdateVersionLS;
8678     DWORD dwAdvertisedVersionMS;
8679     DWORD dwAdvertisedVersionLS;
8680     DWORD dwReserved;
8681 } SOFTDISTINFO;
8682 typedef struct _tagSOFTDISTINFO *LPSOFTDISTINFO;
8683 
8684 /*****************************************************************************
8685  * ISoftDistExt interface
8686  */
8687 #ifndef __ISoftDistExt_INTERFACE_DEFINED__
8688 #define __ISoftDistExt_INTERFACE_DEFINED__
8689 
8690 DEFINE_GUID(IID_ISoftDistExt, 0xb15b8dc1, 0xc7e1, 0x11d0, 0x86,0x80, 0x00,0xaa,0x00,0xbd,0xcb,0x71);
8691 #if defined(__cplusplus) && !defined(CINTERFACE)
8692 MIDL_INTERFACE("b15b8dc1-c7e1-11d0-8680-00aa00bdcb71")
8693 ISoftDistExt : public IUnknown
8694 {
8695     virtual HRESULT STDMETHODCALLTYPE ProcessSoftDist(
8696         LPCWSTR szCDFURL,
8697         IXMLElement *pSoftDistElement,
8698         LPSOFTDISTINFO lpsdi) = 0;
8699 
8700     virtual HRESULT STDMETHODCALLTYPE GetFirstCodeBase(
8701         LPWSTR *szCodeBase,
8702         LPDWORD dwMaxSize) = 0;
8703 
8704     virtual HRESULT STDMETHODCALLTYPE GetNextCodeBase(
8705         LPWSTR *szCodeBase,
8706         LPDWORD dwMaxSize) = 0;
8707 
8708     virtual HRESULT STDMETHODCALLTYPE AsyncInstallDistributionUnit(
8709         IBindCtx *pbc,
8710         LPVOID pvReserved,
8711         DWORD flags,
8712         LPCODEBASEHOLD lpcbh) = 0;
8713 
8714 };
8715 #ifdef __CRT_UUID_DECL
8716 __CRT_UUID_DECL(ISoftDistExt, 0xb15b8dc1, 0xc7e1, 0x11d0, 0x86,0x80, 0x00,0xaa,0x00,0xbd,0xcb,0x71)
8717 #endif
8718 #else
8719 typedef struct ISoftDistExtVtbl {
8720     BEGIN_INTERFACE
8721 
8722     /*** IUnknown methods ***/
8723     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
8724         ISoftDistExt *This,
8725         REFIID riid,
8726         void **ppvObject);
8727 
8728     ULONG (STDMETHODCALLTYPE *AddRef)(
8729         ISoftDistExt *This);
8730 
8731     ULONG (STDMETHODCALLTYPE *Release)(
8732         ISoftDistExt *This);
8733 
8734     /*** ISoftDistExt methods ***/
8735     HRESULT (STDMETHODCALLTYPE *ProcessSoftDist)(
8736         ISoftDistExt *This,
8737         LPCWSTR szCDFURL,
8738         IXMLElement *pSoftDistElement,
8739         LPSOFTDISTINFO lpsdi);
8740 
8741     HRESULT (STDMETHODCALLTYPE *GetFirstCodeBase)(
8742         ISoftDistExt *This,
8743         LPWSTR *szCodeBase,
8744         LPDWORD dwMaxSize);
8745 
8746     HRESULT (STDMETHODCALLTYPE *GetNextCodeBase)(
8747         ISoftDistExt *This,
8748         LPWSTR *szCodeBase,
8749         LPDWORD dwMaxSize);
8750 
8751     HRESULT (STDMETHODCALLTYPE *AsyncInstallDistributionUnit)(
8752         ISoftDistExt *This,
8753         IBindCtx *pbc,
8754         LPVOID pvReserved,
8755         DWORD flags,
8756         LPCODEBASEHOLD lpcbh);
8757 
8758     END_INTERFACE
8759 } ISoftDistExtVtbl;
8760 
8761 interface ISoftDistExt {
8762     CONST_VTBL ISoftDistExtVtbl* lpVtbl;
8763 };
8764 
8765 #ifdef COBJMACROS
8766 #ifndef WIDL_C_INLINE_WRAPPERS
8767 /*** IUnknown methods ***/
8768 #define ISoftDistExt_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
8769 #define ISoftDistExt_AddRef(This) (This)->lpVtbl->AddRef(This)
8770 #define ISoftDistExt_Release(This) (This)->lpVtbl->Release(This)
8771 /*** ISoftDistExt methods ***/
8772 #define ISoftDistExt_ProcessSoftDist(This,szCDFURL,pSoftDistElement,lpsdi) (This)->lpVtbl->ProcessSoftDist(This,szCDFURL,pSoftDistElement,lpsdi)
8773 #define ISoftDistExt_GetFirstCodeBase(This,szCodeBase,dwMaxSize) (This)->lpVtbl->GetFirstCodeBase(This,szCodeBase,dwMaxSize)
8774 #define ISoftDistExt_GetNextCodeBase(This,szCodeBase,dwMaxSize) (This)->lpVtbl->GetNextCodeBase(This,szCodeBase,dwMaxSize)
8775 #define ISoftDistExt_AsyncInstallDistributionUnit(This,pbc,pvReserved,flags,lpcbh) (This)->lpVtbl->AsyncInstallDistributionUnit(This,pbc,pvReserved,flags,lpcbh)
8776 #else
8777 /*** IUnknown methods ***/
8778 static FORCEINLINE HRESULT ISoftDistExt_QueryInterface(ISoftDistExt* This,REFIID riid,void **ppvObject) {
8779     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
8780 }
8781 static FORCEINLINE ULONG ISoftDistExt_AddRef(ISoftDistExt* This) {
8782     return This->lpVtbl->AddRef(This);
8783 }
8784 static FORCEINLINE ULONG ISoftDistExt_Release(ISoftDistExt* This) {
8785     return This->lpVtbl->Release(This);
8786 }
8787 /*** ISoftDistExt methods ***/
8788 static FORCEINLINE HRESULT ISoftDistExt_ProcessSoftDist(ISoftDistExt* This,LPCWSTR szCDFURL,IXMLElement *pSoftDistElement,LPSOFTDISTINFO lpsdi) {
8789     return This->lpVtbl->ProcessSoftDist(This,szCDFURL,pSoftDistElement,lpsdi);
8790 }
8791 static FORCEINLINE HRESULT ISoftDistExt_GetFirstCodeBase(ISoftDistExt* This,LPWSTR *szCodeBase,LPDWORD dwMaxSize) {
8792     return This->lpVtbl->GetFirstCodeBase(This,szCodeBase,dwMaxSize);
8793 }
8794 static FORCEINLINE HRESULT ISoftDistExt_GetNextCodeBase(ISoftDistExt* This,LPWSTR *szCodeBase,LPDWORD dwMaxSize) {
8795     return This->lpVtbl->GetNextCodeBase(This,szCodeBase,dwMaxSize);
8796 }
8797 static FORCEINLINE HRESULT ISoftDistExt_AsyncInstallDistributionUnit(ISoftDistExt* This,IBindCtx *pbc,LPVOID pvReserved,DWORD flags,LPCODEBASEHOLD lpcbh) {
8798     return This->lpVtbl->AsyncInstallDistributionUnit(This,pbc,pvReserved,flags,lpcbh);
8799 }
8800 #endif
8801 #endif
8802 
8803 #endif
8804 
8805 
8806 #endif  /* __ISoftDistExt_INTERFACE_DEFINED__ */
8807 
8808 
8809 STDAPI GetSoftwareUpdateInfo(LPCWSTR szDistUnit, LPSOFTDISTINFO psdi);
8810 STDAPI SetSoftwareUpdateAdvertisementState(LPCWSTR szDistUnit, DWORD dwAdState, DWORD dwAdvertisedVersionMS, DWORD dwAdvertisedVersionLS);
8811 #endif
8812 
8813 #ifndef _LPCATALOGFILEINFO_DEFINED
8814 #define _LPCATALOGFILEINFO_DEFINED
8815 
8816 /*****************************************************************************
8817  * ICatalogFileInfo interface
8818  */
8819 #ifndef __ICatalogFileInfo_INTERFACE_DEFINED__
8820 #define __ICatalogFileInfo_INTERFACE_DEFINED__
8821 
8822 typedef ICatalogFileInfo *LPCATALOGFILEINFO;
8823 
8824 DEFINE_GUID(IID_ICatalogFileInfo, 0x711c7600, 0x6b48, 0x11d1, 0xb4,0x03, 0x00,0xaa,0x00,0xb9,0x2a,0xf1);
8825 #if defined(__cplusplus) && !defined(CINTERFACE)
8826 MIDL_INTERFACE("711c7600-6b48-11d1-b403-00aa00b92af1")
8827 ICatalogFileInfo : public IUnknown
8828 {
8829     virtual HRESULT STDMETHODCALLTYPE GetCatalogFile(
8830         LPSTR *ppszCatalogFile) = 0;
8831 
8832     virtual HRESULT STDMETHODCALLTYPE GetJavaTrust(
8833         void **ppJavaTrust) = 0;
8834 
8835 };
8836 #ifdef __CRT_UUID_DECL
8837 __CRT_UUID_DECL(ICatalogFileInfo, 0x711c7600, 0x6b48, 0x11d1, 0xb4,0x03, 0x00,0xaa,0x00,0xb9,0x2a,0xf1)
8838 #endif
8839 #else
8840 typedef struct ICatalogFileInfoVtbl {
8841     BEGIN_INTERFACE
8842 
8843     /*** IUnknown methods ***/
8844     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
8845         ICatalogFileInfo *This,
8846         REFIID riid,
8847         void **ppvObject);
8848 
8849     ULONG (STDMETHODCALLTYPE *AddRef)(
8850         ICatalogFileInfo *This);
8851 
8852     ULONG (STDMETHODCALLTYPE *Release)(
8853         ICatalogFileInfo *This);
8854 
8855     /*** ICatalogFileInfo methods ***/
8856     HRESULT (STDMETHODCALLTYPE *GetCatalogFile)(
8857         ICatalogFileInfo *This,
8858         LPSTR *ppszCatalogFile);
8859 
8860     HRESULT (STDMETHODCALLTYPE *GetJavaTrust)(
8861         ICatalogFileInfo *This,
8862         void **ppJavaTrust);
8863 
8864     END_INTERFACE
8865 } ICatalogFileInfoVtbl;
8866 
8867 interface ICatalogFileInfo {
8868     CONST_VTBL ICatalogFileInfoVtbl* lpVtbl;
8869 };
8870 
8871 #ifdef COBJMACROS
8872 #ifndef WIDL_C_INLINE_WRAPPERS
8873 /*** IUnknown methods ***/
8874 #define ICatalogFileInfo_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
8875 #define ICatalogFileInfo_AddRef(This) (This)->lpVtbl->AddRef(This)
8876 #define ICatalogFileInfo_Release(This) (This)->lpVtbl->Release(This)
8877 /*** ICatalogFileInfo methods ***/
8878 #define ICatalogFileInfo_GetCatalogFile(This,ppszCatalogFile) (This)->lpVtbl->GetCatalogFile(This,ppszCatalogFile)
8879 #define ICatalogFileInfo_GetJavaTrust(This,ppJavaTrust) (This)->lpVtbl->GetJavaTrust(This,ppJavaTrust)
8880 #else
8881 /*** IUnknown methods ***/
8882 static FORCEINLINE HRESULT ICatalogFileInfo_QueryInterface(ICatalogFileInfo* This,REFIID riid,void **ppvObject) {
8883     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
8884 }
8885 static FORCEINLINE ULONG ICatalogFileInfo_AddRef(ICatalogFileInfo* This) {
8886     return This->lpVtbl->AddRef(This);
8887 }
8888 static FORCEINLINE ULONG ICatalogFileInfo_Release(ICatalogFileInfo* This) {
8889     return This->lpVtbl->Release(This);
8890 }
8891 /*** ICatalogFileInfo methods ***/
8892 static FORCEINLINE HRESULT ICatalogFileInfo_GetCatalogFile(ICatalogFileInfo* This,LPSTR *ppszCatalogFile) {
8893     return This->lpVtbl->GetCatalogFile(This,ppszCatalogFile);
8894 }
8895 static FORCEINLINE HRESULT ICatalogFileInfo_GetJavaTrust(ICatalogFileInfo* This,void **ppJavaTrust) {
8896     return This->lpVtbl->GetJavaTrust(This,ppJavaTrust);
8897 }
8898 #endif
8899 #endif
8900 
8901 #endif
8902 
8903 
8904 #endif  /* __ICatalogFileInfo_INTERFACE_DEFINED__ */
8905 
8906 #endif
8907 
8908 #ifndef _LPDATAFILTER_DEFINED
8909 #define _LPDATAFILTER_DEFINED
8910 
8911 /*****************************************************************************
8912  * IDataFilter interface
8913  */
8914 #ifndef __IDataFilter_INTERFACE_DEFINED__
8915 #define __IDataFilter_INTERFACE_DEFINED__
8916 
8917 typedef IDataFilter *LPDATAFILTER;
8918 
8919 DEFINE_GUID(IID_IDataFilter, 0x69d14c80, 0xc18e, 0x11d0, 0xa9,0xce, 0x00,0x60,0x97,0x94,0x23,0x11);
8920 #if defined(__cplusplus) && !defined(CINTERFACE)
8921 MIDL_INTERFACE("69d14c80-c18e-11d0-a9ce-006097942311")
8922 IDataFilter : public IUnknown
8923 {
8924     virtual HRESULT STDMETHODCALLTYPE DoEncode(
8925         DWORD dwFlags,
8926         LONG lInBufferSize,
8927         BYTE *pbInBuffer,
8928         LONG lOutBufferSize,
8929         BYTE *pbOutBuffer,
8930         LONG lInBytesAvailable,
8931         LONG *plInBytesRead,
8932         LONG *plOutBytesWritten,
8933         DWORD dwReserved) = 0;
8934 
8935     virtual HRESULT STDMETHODCALLTYPE DoDecode(
8936         DWORD dwFlags,
8937         LONG lInBufferSize,
8938         BYTE *pbInBuffer,
8939         LONG lOutBufferSize,
8940         BYTE *pbOutBuffer,
8941         LONG lInBytesAvailable,
8942         LONG *plInBytesRead,
8943         LONG *plOutBytesWritten,
8944         DWORD dwReserved) = 0;
8945 
8946     virtual HRESULT STDMETHODCALLTYPE SetEncodingLevel(
8947         DWORD dwEncLevel) = 0;
8948 
8949 };
8950 #ifdef __CRT_UUID_DECL
8951 __CRT_UUID_DECL(IDataFilter, 0x69d14c80, 0xc18e, 0x11d0, 0xa9,0xce, 0x00,0x60,0x97,0x94,0x23,0x11)
8952 #endif
8953 #else
8954 typedef struct IDataFilterVtbl {
8955     BEGIN_INTERFACE
8956 
8957     /*** IUnknown methods ***/
8958     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
8959         IDataFilter *This,
8960         REFIID riid,
8961         void **ppvObject);
8962 
8963     ULONG (STDMETHODCALLTYPE *AddRef)(
8964         IDataFilter *This);
8965 
8966     ULONG (STDMETHODCALLTYPE *Release)(
8967         IDataFilter *This);
8968 
8969     /*** IDataFilter methods ***/
8970     HRESULT (STDMETHODCALLTYPE *DoEncode)(
8971         IDataFilter *This,
8972         DWORD dwFlags,
8973         LONG lInBufferSize,
8974         BYTE *pbInBuffer,
8975         LONG lOutBufferSize,
8976         BYTE *pbOutBuffer,
8977         LONG lInBytesAvailable,
8978         LONG *plInBytesRead,
8979         LONG *plOutBytesWritten,
8980         DWORD dwReserved);
8981 
8982     HRESULT (STDMETHODCALLTYPE *DoDecode)(
8983         IDataFilter *This,
8984         DWORD dwFlags,
8985         LONG lInBufferSize,
8986         BYTE *pbInBuffer,
8987         LONG lOutBufferSize,
8988         BYTE *pbOutBuffer,
8989         LONG lInBytesAvailable,
8990         LONG *plInBytesRead,
8991         LONG *plOutBytesWritten,
8992         DWORD dwReserved);
8993 
8994     HRESULT (STDMETHODCALLTYPE *SetEncodingLevel)(
8995         IDataFilter *This,
8996         DWORD dwEncLevel);
8997 
8998     END_INTERFACE
8999 } IDataFilterVtbl;
9000 
9001 interface IDataFilter {
9002     CONST_VTBL IDataFilterVtbl* lpVtbl;
9003 };
9004 
9005 #ifdef COBJMACROS
9006 #ifndef WIDL_C_INLINE_WRAPPERS
9007 /*** IUnknown methods ***/
9008 #define IDataFilter_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
9009 #define IDataFilter_AddRef(This) (This)->lpVtbl->AddRef(This)
9010 #define IDataFilter_Release(This) (This)->lpVtbl->Release(This)
9011 /*** IDataFilter methods ***/
9012 #define IDataFilter_DoEncode(This,dwFlags,lInBufferSize,pbInBuffer,lOutBufferSize,pbOutBuffer,lInBytesAvailable,plInBytesRead,plOutBytesWritten,dwReserved) (This)->lpVtbl->DoEncode(This,dwFlags,lInBufferSize,pbInBuffer,lOutBufferSize,pbOutBuffer,lInBytesAvailable,plInBytesRead,plOutBytesWritten,dwReserved)
9013 #define IDataFilter_DoDecode(This,dwFlags,lInBufferSize,pbInBuffer,lOutBufferSize,pbOutBuffer,lInBytesAvailable,plInBytesRead,plOutBytesWritten,dwReserved) (This)->lpVtbl->DoDecode(This,dwFlags,lInBufferSize,pbInBuffer,lOutBufferSize,pbOutBuffer,lInBytesAvailable,plInBytesRead,plOutBytesWritten,dwReserved)
9014 #define IDataFilter_SetEncodingLevel(This,dwEncLevel) (This)->lpVtbl->SetEncodingLevel(This,dwEncLevel)
9015 #else
9016 /*** IUnknown methods ***/
9017 static FORCEINLINE HRESULT IDataFilter_QueryInterface(IDataFilter* This,REFIID riid,void **ppvObject) {
9018     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
9019 }
9020 static FORCEINLINE ULONG IDataFilter_AddRef(IDataFilter* This) {
9021     return This->lpVtbl->AddRef(This);
9022 }
9023 static FORCEINLINE ULONG IDataFilter_Release(IDataFilter* This) {
9024     return This->lpVtbl->Release(This);
9025 }
9026 /*** IDataFilter methods ***/
9027 static FORCEINLINE HRESULT IDataFilter_DoEncode(IDataFilter* This,DWORD dwFlags,LONG lInBufferSize,BYTE *pbInBuffer,LONG lOutBufferSize,BYTE *pbOutBuffer,LONG lInBytesAvailable,LONG *plInBytesRead,LONG *plOutBytesWritten,DWORD dwReserved) {
9028     return This->lpVtbl->DoEncode(This,dwFlags,lInBufferSize,pbInBuffer,lOutBufferSize,pbOutBuffer,lInBytesAvailable,plInBytesRead,plOutBytesWritten,dwReserved);
9029 }
9030 static FORCEINLINE HRESULT IDataFilter_DoDecode(IDataFilter* This,DWORD dwFlags,LONG lInBufferSize,BYTE *pbInBuffer,LONG lOutBufferSize,BYTE *pbOutBuffer,LONG lInBytesAvailable,LONG *plInBytesRead,LONG *plOutBytesWritten,DWORD dwReserved) {
9031     return This->lpVtbl->DoDecode(This,dwFlags,lInBufferSize,pbInBuffer,lOutBufferSize,pbOutBuffer,lInBytesAvailable,plInBytesRead,plOutBytesWritten,dwReserved);
9032 }
9033 static FORCEINLINE HRESULT IDataFilter_SetEncodingLevel(IDataFilter* This,DWORD dwEncLevel) {
9034     return This->lpVtbl->SetEncodingLevel(This,dwEncLevel);
9035 }
9036 #endif
9037 #endif
9038 
9039 #endif
9040 
9041 
9042 #endif  /* __IDataFilter_INTERFACE_DEFINED__ */
9043 
9044 #endif
9045 
9046 #ifndef _LPENCODINGFILTERFACTORY_DEFINED
9047 #define _LPENCODINGFILTERFACTORY_DEFINED
9048 
9049 typedef struct _tagPROTOCOLFILTERDATA {
9050     DWORD cbSize;
9051     IInternetProtocolSink *pProtocolSink;
9052     IInternetProtocol *pProtocol;
9053     IUnknown *pUnk;
9054     DWORD dwFilterFlags;
9055 } PROTOCOLFILTERDATA;
9056 
9057 /*****************************************************************************
9058  * IEncodingFilterFactory interface
9059  */
9060 #ifndef __IEncodingFilterFactory_INTERFACE_DEFINED__
9061 #define __IEncodingFilterFactory_INTERFACE_DEFINED__
9062 
9063 typedef IEncodingFilterFactory *LPENCODINGFILTERFACTORY;
9064 
9065 typedef struct _tagDATAINFO {
9066     ULONG ulTotalSize;
9067     ULONG ulavrPacketSize;
9068     ULONG ulConnectSpeed;
9069     ULONG ulProcessorSpeed;
9070 } DATAINFO;
9071 
9072 DEFINE_GUID(IID_IEncodingFilterFactory, 0x70bdde00, 0xc18e, 0x11d0, 0xa9,0xce, 0x00,0x60,0x97,0x94,0x23,0x11);
9073 #if defined(__cplusplus) && !defined(CINTERFACE)
9074 MIDL_INTERFACE("70bdde00-c18e-11d0-a9ce-006097942311")
9075 IEncodingFilterFactory : public IUnknown
9076 {
9077     virtual HRESULT STDMETHODCALLTYPE FindBestFilter(
9078         LPCWSTR pwzCodeIn,
9079         LPCWSTR pwzCodeOut,
9080         DATAINFO info,
9081         IDataFilter **ppDF) = 0;
9082 
9083     virtual HRESULT STDMETHODCALLTYPE GetDefaultFilter(
9084         LPCWSTR pwzCodeIn,
9085         LPCWSTR pwzCodeOut,
9086         IDataFilter **ppDF) = 0;
9087 
9088 };
9089 #ifdef __CRT_UUID_DECL
9090 __CRT_UUID_DECL(IEncodingFilterFactory, 0x70bdde00, 0xc18e, 0x11d0, 0xa9,0xce, 0x00,0x60,0x97,0x94,0x23,0x11)
9091 #endif
9092 #else
9093 typedef struct IEncodingFilterFactoryVtbl {
9094     BEGIN_INTERFACE
9095 
9096     /*** IUnknown methods ***/
9097     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
9098         IEncodingFilterFactory *This,
9099         REFIID riid,
9100         void **ppvObject);
9101 
9102     ULONG (STDMETHODCALLTYPE *AddRef)(
9103         IEncodingFilterFactory *This);
9104 
9105     ULONG (STDMETHODCALLTYPE *Release)(
9106         IEncodingFilterFactory *This);
9107 
9108     /*** IEncodingFilterFactory methods ***/
9109     HRESULT (STDMETHODCALLTYPE *FindBestFilter)(
9110         IEncodingFilterFactory *This,
9111         LPCWSTR pwzCodeIn,
9112         LPCWSTR pwzCodeOut,
9113         DATAINFO info,
9114         IDataFilter **ppDF);
9115 
9116     HRESULT (STDMETHODCALLTYPE *GetDefaultFilter)(
9117         IEncodingFilterFactory *This,
9118         LPCWSTR pwzCodeIn,
9119         LPCWSTR pwzCodeOut,
9120         IDataFilter **ppDF);
9121 
9122     END_INTERFACE
9123 } IEncodingFilterFactoryVtbl;
9124 
9125 interface IEncodingFilterFactory {
9126     CONST_VTBL IEncodingFilterFactoryVtbl* lpVtbl;
9127 };
9128 
9129 #ifdef COBJMACROS
9130 #ifndef WIDL_C_INLINE_WRAPPERS
9131 /*** IUnknown methods ***/
9132 #define IEncodingFilterFactory_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
9133 #define IEncodingFilterFactory_AddRef(This) (This)->lpVtbl->AddRef(This)
9134 #define IEncodingFilterFactory_Release(This) (This)->lpVtbl->Release(This)
9135 /*** IEncodingFilterFactory methods ***/
9136 #define IEncodingFilterFactory_FindBestFilter(This,pwzCodeIn,pwzCodeOut,info,ppDF) (This)->lpVtbl->FindBestFilter(This,pwzCodeIn,pwzCodeOut,info,ppDF)
9137 #define IEncodingFilterFactory_GetDefaultFilter(This,pwzCodeIn,pwzCodeOut,ppDF) (This)->lpVtbl->GetDefaultFilter(This,pwzCodeIn,pwzCodeOut,ppDF)
9138 #else
9139 /*** IUnknown methods ***/
9140 static FORCEINLINE HRESULT IEncodingFilterFactory_QueryInterface(IEncodingFilterFactory* This,REFIID riid,void **ppvObject) {
9141     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
9142 }
9143 static FORCEINLINE ULONG IEncodingFilterFactory_AddRef(IEncodingFilterFactory* This) {
9144     return This->lpVtbl->AddRef(This);
9145 }
9146 static FORCEINLINE ULONG IEncodingFilterFactory_Release(IEncodingFilterFactory* This) {
9147     return This->lpVtbl->Release(This);
9148 }
9149 /*** IEncodingFilterFactory methods ***/
9150 static FORCEINLINE HRESULT IEncodingFilterFactory_FindBestFilter(IEncodingFilterFactory* This,LPCWSTR pwzCodeIn,LPCWSTR pwzCodeOut,DATAINFO info,IDataFilter **ppDF) {
9151     return This->lpVtbl->FindBestFilter(This,pwzCodeIn,pwzCodeOut,info,ppDF);
9152 }
9153 static FORCEINLINE HRESULT IEncodingFilterFactory_GetDefaultFilter(IEncodingFilterFactory* This,LPCWSTR pwzCodeIn,LPCWSTR pwzCodeOut,IDataFilter **ppDF) {
9154     return This->lpVtbl->GetDefaultFilter(This,pwzCodeIn,pwzCodeOut,ppDF);
9155 }
9156 #endif
9157 #endif
9158 
9159 #endif
9160 
9161 
9162 #endif  /* __IEncodingFilterFactory_INTERFACE_DEFINED__ */
9163 
9164 #endif
9165 
9166 #ifndef _HITLOGGING_DEFINED
9167 #define _HITLOGGING_DEFINED
9168 
9169 WINBOOL WINAPI IsLoggingEnabledA(LPCSTR pszUrl);
9170 WINBOOL WINAPI IsLoggingEnabledW(LPCWSTR pwszUrl);
9171 
9172 #define IsLoggingEnabled __MINGW_NAME_AW(IsLoggingEnabled)
9173 typedef struct _tagHIT_LOGGING_INFO {
9174     DWORD dwStructSize;
9175     LPSTR lpszLoggedUrlName;
9176     SYSTEMTIME StartTime;
9177     SYSTEMTIME EndTime;
9178     LPSTR lpszExtendedInfo;
9179 } HIT_LOGGING_INFO;
9180 typedef struct _tagHIT_LOGGING_INFO *LPHIT_LOGGING_INFO;
9181 
9182 WINBOOL WINAPI WriteHitLogging(LPHIT_LOGGING_INFO lpLogginginfo);
9183 
9184 #define CONFIRMSAFETYACTION_LOADOBJECT 0x1
9185 
9186 struct CONFIRMSAFETY {
9187     CLSID clsid;
9188     IUnknown *pUnk;
9189     DWORD dwFlags;
9190 };
9191 
9192 EXTERN_C const GUID GUID_CUSTOM_CONFIRMOBJECTSAFETY;
9193 #endif
9194 
9195 #ifndef _LPIWRAPPEDPROTOCOL_DEFINED
9196 #define _LPIWRAPPEDPROTOCOL_DEFINED
9197 
9198 /*****************************************************************************
9199  * IWrappedProtocol interface
9200  */
9201 #ifndef __IWrappedProtocol_INTERFACE_DEFINED__
9202 #define __IWrappedProtocol_INTERFACE_DEFINED__
9203 
9204 typedef IWrappedProtocol *LPIWRAPPEDPROTOCOL;
9205 
9206 DEFINE_GUID(IID_IWrappedProtocol, 0x53c84785, 0x8425, 0x4dc5, 0x97,0x1b, 0xe5,0x8d,0x9c,0x19,0xf9,0xb6);
9207 #if defined(__cplusplus) && !defined(CINTERFACE)
9208 MIDL_INTERFACE("53c84785-8425-4dc5-971b-e58d9c19f9b6")
9209 IWrappedProtocol : public IUnknown
9210 {
9211     virtual HRESULT STDMETHODCALLTYPE GetWrapperCode(
9212         LONG *pnCode,
9213         DWORD_PTR dwReserved) = 0;
9214 
9215 };
9216 #ifdef __CRT_UUID_DECL
9217 __CRT_UUID_DECL(IWrappedProtocol, 0x53c84785, 0x8425, 0x4dc5, 0x97,0x1b, 0xe5,0x8d,0x9c,0x19,0xf9,0xb6)
9218 #endif
9219 #else
9220 typedef struct IWrappedProtocolVtbl {
9221     BEGIN_INTERFACE
9222 
9223     /*** IUnknown methods ***/
9224     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
9225         IWrappedProtocol *This,
9226         REFIID riid,
9227         void **ppvObject);
9228 
9229     ULONG (STDMETHODCALLTYPE *AddRef)(
9230         IWrappedProtocol *This);
9231 
9232     ULONG (STDMETHODCALLTYPE *Release)(
9233         IWrappedProtocol *This);
9234 
9235     /*** IWrappedProtocol methods ***/
9236     HRESULT (STDMETHODCALLTYPE *GetWrapperCode)(
9237         IWrappedProtocol *This,
9238         LONG *pnCode,
9239         DWORD_PTR dwReserved);
9240 
9241     END_INTERFACE
9242 } IWrappedProtocolVtbl;
9243 
9244 interface IWrappedProtocol {
9245     CONST_VTBL IWrappedProtocolVtbl* lpVtbl;
9246 };
9247 
9248 #ifdef COBJMACROS
9249 #ifndef WIDL_C_INLINE_WRAPPERS
9250 /*** IUnknown methods ***/
9251 #define IWrappedProtocol_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
9252 #define IWrappedProtocol_AddRef(This) (This)->lpVtbl->AddRef(This)
9253 #define IWrappedProtocol_Release(This) (This)->lpVtbl->Release(This)
9254 /*** IWrappedProtocol methods ***/
9255 #define IWrappedProtocol_GetWrapperCode(This,pnCode,dwReserved) (This)->lpVtbl->GetWrapperCode(This,pnCode,dwReserved)
9256 #else
9257 /*** IUnknown methods ***/
9258 static FORCEINLINE HRESULT IWrappedProtocol_QueryInterface(IWrappedProtocol* This,REFIID riid,void **ppvObject) {
9259     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
9260 }
9261 static FORCEINLINE ULONG IWrappedProtocol_AddRef(IWrappedProtocol* This) {
9262     return This->lpVtbl->AddRef(This);
9263 }
9264 static FORCEINLINE ULONG IWrappedProtocol_Release(IWrappedProtocol* This) {
9265     return This->lpVtbl->Release(This);
9266 }
9267 /*** IWrappedProtocol methods ***/
9268 static FORCEINLINE HRESULT IWrappedProtocol_GetWrapperCode(IWrappedProtocol* This,LONG *pnCode,DWORD_PTR dwReserved) {
9269     return This->lpVtbl->GetWrapperCode(This,pnCode,dwReserved);
9270 }
9271 #endif
9272 #endif
9273 
9274 #endif
9275 
9276 
9277 #endif  /* __IWrappedProtocol_INTERFACE_DEFINED__ */
9278 
9279 #endif
9280 
9281 #ifndef _LPGETBINDHANDLE_DEFINED
9282 #define _LPGETBINDHANDLE_DEFINED
9283 
9284 /*****************************************************************************
9285  * IGetBindHandle interface
9286  */
9287 #ifndef __IGetBindHandle_INTERFACE_DEFINED__
9288 #define __IGetBindHandle_INTERFACE_DEFINED__
9289 
9290 typedef IGetBindHandle *LPGETBINDHANDLE;
9291 
9292 typedef enum __WIDL_urlmon_generated_name_00000012 {
9293     BINDHANDLETYPES_APPCACHE = 0x0,
9294     BINDHANDLETYPES_DEPENDENCY = 0x1,
9295     BINDHANDLETYPES_COUNT = 0x2
9296 } BINDHANDLETYPES;
9297 
9298 DEFINE_GUID(IID_IGetBindHandle, 0xaf0ff408, 0x129d, 0x4b20, 0x91,0xf0, 0x02,0xbd,0x23,0xd8,0x83,0x52);
9299 #if defined(__cplusplus) && !defined(CINTERFACE)
9300 MIDL_INTERFACE("af0ff408-129d-4b20-91f0-02bd23d88352")
9301 IGetBindHandle : public IUnknown
9302 {
9303     virtual HRESULT STDMETHODCALLTYPE GetBindHandle(
9304         BINDHANDLETYPES enumRequestedHandle,
9305         HANDLE *pRetHandle) = 0;
9306 
9307 };
9308 #ifdef __CRT_UUID_DECL
9309 __CRT_UUID_DECL(IGetBindHandle, 0xaf0ff408, 0x129d, 0x4b20, 0x91,0xf0, 0x02,0xbd,0x23,0xd8,0x83,0x52)
9310 #endif
9311 #else
9312 typedef struct IGetBindHandleVtbl {
9313     BEGIN_INTERFACE
9314 
9315     /*** IUnknown methods ***/
9316     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
9317         IGetBindHandle *This,
9318         REFIID riid,
9319         void **ppvObject);
9320 
9321     ULONG (STDMETHODCALLTYPE *AddRef)(
9322         IGetBindHandle *This);
9323 
9324     ULONG (STDMETHODCALLTYPE *Release)(
9325         IGetBindHandle *This);
9326 
9327     /*** IGetBindHandle methods ***/
9328     HRESULT (STDMETHODCALLTYPE *GetBindHandle)(
9329         IGetBindHandle *This,
9330         BINDHANDLETYPES enumRequestedHandle,
9331         HANDLE *pRetHandle);
9332 
9333     END_INTERFACE
9334 } IGetBindHandleVtbl;
9335 
9336 interface IGetBindHandle {
9337     CONST_VTBL IGetBindHandleVtbl* lpVtbl;
9338 };
9339 
9340 #ifdef COBJMACROS
9341 #ifndef WIDL_C_INLINE_WRAPPERS
9342 /*** IUnknown methods ***/
9343 #define IGetBindHandle_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
9344 #define IGetBindHandle_AddRef(This) (This)->lpVtbl->AddRef(This)
9345 #define IGetBindHandle_Release(This) (This)->lpVtbl->Release(This)
9346 /*** IGetBindHandle methods ***/
9347 #define IGetBindHandle_GetBindHandle(This,enumRequestedHandle,pRetHandle) (This)->lpVtbl->GetBindHandle(This,enumRequestedHandle,pRetHandle)
9348 #else
9349 /*** IUnknown methods ***/
9350 static FORCEINLINE HRESULT IGetBindHandle_QueryInterface(IGetBindHandle* This,REFIID riid,void **ppvObject) {
9351     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
9352 }
9353 static FORCEINLINE ULONG IGetBindHandle_AddRef(IGetBindHandle* This) {
9354     return This->lpVtbl->AddRef(This);
9355 }
9356 static FORCEINLINE ULONG IGetBindHandle_Release(IGetBindHandle* This) {
9357     return This->lpVtbl->Release(This);
9358 }
9359 /*** IGetBindHandle methods ***/
9360 static FORCEINLINE HRESULT IGetBindHandle_GetBindHandle(IGetBindHandle* This,BINDHANDLETYPES enumRequestedHandle,HANDLE *pRetHandle) {
9361     return This->lpVtbl->GetBindHandle(This,enumRequestedHandle,pRetHandle);
9362 }
9363 #endif
9364 #endif
9365 
9366 #endif
9367 
9368 
9369 #endif  /* __IGetBindHandle_INTERFACE_DEFINED__ */
9370 
9371 #endif
9372 
9373 #ifndef _XHRPLUGGABLEPROTOCOL_DEFINED
9374 #define _XHRPLUGGABLEPROTOCOL_DEFINED
9375 
9376 typedef struct _tagPROTOCOL_ARGUMENT {
9377     LPCWSTR szMethod;
9378     LPCWSTR szTargetUrl;
9379 } PROTOCOL_ARGUMENT;
9380 typedef struct _tagPROTOCOL_ARGUMENT *LPPROTOCOL_ARGUMENT;
9381 #endif
9382 
9383 #ifndef _LPBINDCALLBACKREDIRECT_DEFINED
9384 #define _LPBINDCALLBACKREDIRECT_DEFINED
9385 
9386 /*****************************************************************************
9387  * IBindCallbackRedirect interface
9388  */
9389 #ifndef __IBindCallbackRedirect_INTERFACE_DEFINED__
9390 #define __IBindCallbackRedirect_INTERFACE_DEFINED__
9391 
9392 typedef IBindCallbackRedirect *LPBINDCALLBACKREDIRECT;
9393 
9394 DEFINE_GUID(IID_IBindCallbackRedirect, 0x11c81bc2, 0x121e, 0x4ed5, 0xb9,0xc4, 0xb4,0x30,0xbd,0x54,0xf2,0xc0);
9395 #if defined(__cplusplus) && !defined(CINTERFACE)
9396 MIDL_INTERFACE("11c81bc2-121e-4ed5-b9c4-b430bd54f2c0")
9397 IBindCallbackRedirect : public IUnknown
9398 {
9399     virtual HRESULT STDMETHODCALLTYPE Redirect(
9400         LPCWSTR lpcUrl,
9401         VARIANT_BOOL *vbCancel) = 0;
9402 
9403 };
9404 #ifdef __CRT_UUID_DECL
9405 __CRT_UUID_DECL(IBindCallbackRedirect, 0x11c81bc2, 0x121e, 0x4ed5, 0xb9,0xc4, 0xb4,0x30,0xbd,0x54,0xf2,0xc0)
9406 #endif
9407 #else
9408 typedef struct IBindCallbackRedirectVtbl {
9409     BEGIN_INTERFACE
9410 
9411     /*** IUnknown methods ***/
9412     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
9413         IBindCallbackRedirect *This,
9414         REFIID riid,
9415         void **ppvObject);
9416 
9417     ULONG (STDMETHODCALLTYPE *AddRef)(
9418         IBindCallbackRedirect *This);
9419 
9420     ULONG (STDMETHODCALLTYPE *Release)(
9421         IBindCallbackRedirect *This);
9422 
9423     /*** IBindCallbackRedirect methods ***/
9424     HRESULT (STDMETHODCALLTYPE *Redirect)(
9425         IBindCallbackRedirect *This,
9426         LPCWSTR lpcUrl,
9427         VARIANT_BOOL *vbCancel);
9428 
9429     END_INTERFACE
9430 } IBindCallbackRedirectVtbl;
9431 
9432 interface IBindCallbackRedirect {
9433     CONST_VTBL IBindCallbackRedirectVtbl* lpVtbl;
9434 };
9435 
9436 #ifdef COBJMACROS
9437 #ifndef WIDL_C_INLINE_WRAPPERS
9438 /*** IUnknown methods ***/
9439 #define IBindCallbackRedirect_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
9440 #define IBindCallbackRedirect_AddRef(This) (This)->lpVtbl->AddRef(This)
9441 #define IBindCallbackRedirect_Release(This) (This)->lpVtbl->Release(This)
9442 /*** IBindCallbackRedirect methods ***/
9443 #define IBindCallbackRedirect_Redirect(This,lpcUrl,vbCancel) (This)->lpVtbl->Redirect(This,lpcUrl,vbCancel)
9444 #else
9445 /*** IUnknown methods ***/
9446 static FORCEINLINE HRESULT IBindCallbackRedirect_QueryInterface(IBindCallbackRedirect* This,REFIID riid,void **ppvObject) {
9447     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
9448 }
9449 static FORCEINLINE ULONG IBindCallbackRedirect_AddRef(IBindCallbackRedirect* This) {
9450     return This->lpVtbl->AddRef(This);
9451 }
9452 static FORCEINLINE ULONG IBindCallbackRedirect_Release(IBindCallbackRedirect* This) {
9453     return This->lpVtbl->Release(This);
9454 }
9455 /*** IBindCallbackRedirect methods ***/
9456 static FORCEINLINE HRESULT IBindCallbackRedirect_Redirect(IBindCallbackRedirect* This,LPCWSTR lpcUrl,VARIANT_BOOL *vbCancel) {
9457     return This->lpVtbl->Redirect(This,lpcUrl,vbCancel);
9458 }
9459 #endif
9460 #endif
9461 
9462 #endif
9463 
9464 
9465 #endif  /* __IBindCallbackRedirect_INTERFACE_DEFINED__ */
9466 
9467 #endif
9468 
9469 #endif
9470 /* Begin additional prototypes for all interfaces */
9471 
9472 ULONG           __RPC_USER STGMEDIUM_UserSize     (ULONG *, ULONG, STGMEDIUM *);
9473 unsigned char * __RPC_USER STGMEDIUM_UserMarshal  (ULONG *, unsigned char *, STGMEDIUM *);
9474 unsigned char * __RPC_USER STGMEDIUM_UserUnmarshal(ULONG *, unsigned char *, STGMEDIUM *);
9475 void            __RPC_USER STGMEDIUM_UserFree     (ULONG *, STGMEDIUM *);
9476 ULONG           __RPC_USER CLIPFORMAT_UserSize     (ULONG *, ULONG, CLIPFORMAT *);
9477 unsigned char * __RPC_USER CLIPFORMAT_UserMarshal  (ULONG *, unsigned char *, CLIPFORMAT *);
9478 unsigned char * __RPC_USER CLIPFORMAT_UserUnmarshal(ULONG *, unsigned char *, CLIPFORMAT *);
9479 void            __RPC_USER CLIPFORMAT_UserFree     (ULONG *, CLIPFORMAT *);
9480 ULONG           __RPC_USER HWND_UserSize     (ULONG *, ULONG, HWND *);
9481 unsigned char * __RPC_USER HWND_UserMarshal  (ULONG *, unsigned char *, HWND *);
9482 unsigned char * __RPC_USER HWND_UserUnmarshal(ULONG *, unsigned char *, HWND *);
9483 void            __RPC_USER HWND_UserFree     (ULONG *, HWND *);
9484 ULONG           __RPC_USER BSTR_UserSize     (ULONG *, ULONG, BSTR *);
9485 unsigned char * __RPC_USER BSTR_UserMarshal  (ULONG *, unsigned char *, BSTR *);
9486 unsigned char * __RPC_USER BSTR_UserUnmarshal(ULONG *, unsigned char *, BSTR *);
9487 void            __RPC_USER BSTR_UserFree     (ULONG *, BSTR *);
9488 
9489 /* End additional prototypes */
9490 
9491 #ifdef __cplusplus
9492 }
9493 #endif
9494 
9495 #endif /* __urlmon_h__ */
9496