master
   1/*** Autogenerated by WIDL 10.4 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__
  23typedef interface IPersistMoniker IPersistMoniker;
  24#ifdef __cplusplus
  25interface IPersistMoniker;
  26#endif /* __cplusplus */
  27#endif
  28
  29#ifndef __IMonikerProp_FWD_DEFINED__
  30#define __IMonikerProp_FWD_DEFINED__
  31typedef interface IMonikerProp IMonikerProp;
  32#ifdef __cplusplus
  33interface IMonikerProp;
  34#endif /* __cplusplus */
  35#endif
  36
  37#ifndef __IBindProtocol_FWD_DEFINED__
  38#define __IBindProtocol_FWD_DEFINED__
  39typedef interface IBindProtocol IBindProtocol;
  40#ifdef __cplusplus
  41interface IBindProtocol;
  42#endif /* __cplusplus */
  43#endif
  44
  45#ifndef __IBinding_FWD_DEFINED__
  46#define __IBinding_FWD_DEFINED__
  47typedef interface IBinding IBinding;
  48#ifdef __cplusplus
  49interface IBinding;
  50#endif /* __cplusplus */
  51#endif
  52
  53#ifndef __IBindStatusCallback_FWD_DEFINED__
  54#define __IBindStatusCallback_FWD_DEFINED__
  55typedef interface IBindStatusCallback IBindStatusCallback;
  56#ifdef __cplusplus
  57interface IBindStatusCallback;
  58#endif /* __cplusplus */
  59#endif
  60
  61#ifndef __IBindStatusCallbackEx_FWD_DEFINED__
  62#define __IBindStatusCallbackEx_FWD_DEFINED__
  63typedef interface IBindStatusCallbackEx IBindStatusCallbackEx;
  64#ifdef __cplusplus
  65interface IBindStatusCallbackEx;
  66#endif /* __cplusplus */
  67#endif
  68
  69#ifndef __IAuthenticate_FWD_DEFINED__
  70#define __IAuthenticate_FWD_DEFINED__
  71typedef interface IAuthenticate IAuthenticate;
  72#ifdef __cplusplus
  73interface IAuthenticate;
  74#endif /* __cplusplus */
  75#endif
  76
  77#ifndef __IAuthenticateEx_FWD_DEFINED__
  78#define __IAuthenticateEx_FWD_DEFINED__
  79typedef interface IAuthenticateEx IAuthenticateEx;
  80#ifdef __cplusplus
  81interface IAuthenticateEx;
  82#endif /* __cplusplus */
  83#endif
  84
  85#ifndef __IHttpNegotiate_FWD_DEFINED__
  86#define __IHttpNegotiate_FWD_DEFINED__
  87typedef interface IHttpNegotiate IHttpNegotiate;
  88#ifdef __cplusplus
  89interface IHttpNegotiate;
  90#endif /* __cplusplus */
  91#endif
  92
  93#ifndef __IHttpNegotiate2_FWD_DEFINED__
  94#define __IHttpNegotiate2_FWD_DEFINED__
  95typedef interface IHttpNegotiate2 IHttpNegotiate2;
  96#ifdef __cplusplus
  97interface IHttpNegotiate2;
  98#endif /* __cplusplus */
  99#endif
 100
 101#ifndef __IHttpNegotiate3_FWD_DEFINED__
 102#define __IHttpNegotiate3_FWD_DEFINED__
 103typedef interface IHttpNegotiate3 IHttpNegotiate3;
 104#ifdef __cplusplus
 105interface IHttpNegotiate3;
 106#endif /* __cplusplus */
 107#endif
 108
 109#ifndef __IWinInetFileStream_FWD_DEFINED__
 110#define __IWinInetFileStream_FWD_DEFINED__
 111typedef interface IWinInetFileStream IWinInetFileStream;
 112#ifdef __cplusplus
 113interface IWinInetFileStream;
 114#endif /* __cplusplus */
 115#endif
 116
 117#ifndef __IWindowForBindingUI_FWD_DEFINED__
 118#define __IWindowForBindingUI_FWD_DEFINED__
 119typedef interface IWindowForBindingUI IWindowForBindingUI;
 120#ifdef __cplusplus
 121interface IWindowForBindingUI;
 122#endif /* __cplusplus */
 123#endif
 124
 125#ifndef __ICodeInstall_FWD_DEFINED__
 126#define __ICodeInstall_FWD_DEFINED__
 127typedef interface ICodeInstall ICodeInstall;
 128#ifdef __cplusplus
 129interface ICodeInstall;
 130#endif /* __cplusplus */
 131#endif
 132
 133#ifndef __IUri_FWD_DEFINED__
 134#define __IUri_FWD_DEFINED__
 135typedef interface IUri IUri;
 136#ifdef __cplusplus
 137interface IUri;
 138#endif /* __cplusplus */
 139#endif
 140
 141#ifndef __IUriContainer_FWD_DEFINED__
 142#define __IUriContainer_FWD_DEFINED__
 143typedef interface IUriContainer IUriContainer;
 144#ifdef __cplusplus
 145interface IUriContainer;
 146#endif /* __cplusplus */
 147#endif
 148
 149#ifndef __IUriBuilder_FWD_DEFINED__
 150#define __IUriBuilder_FWD_DEFINED__
 151typedef interface IUriBuilder IUriBuilder;
 152#ifdef __cplusplus
 153interface IUriBuilder;
 154#endif /* __cplusplus */
 155#endif
 156
 157#ifndef __IUriBuilderFactory_FWD_DEFINED__
 158#define __IUriBuilderFactory_FWD_DEFINED__
 159typedef interface IUriBuilderFactory IUriBuilderFactory;
 160#ifdef __cplusplus
 161interface IUriBuilderFactory;
 162#endif /* __cplusplus */
 163#endif
 164
 165#ifndef __IWinInetInfo_FWD_DEFINED__
 166#define __IWinInetInfo_FWD_DEFINED__
 167typedef interface IWinInetInfo IWinInetInfo;
 168#ifdef __cplusplus
 169interface IWinInetInfo;
 170#endif /* __cplusplus */
 171#endif
 172
 173#ifndef __IHttpSecurity_FWD_DEFINED__
 174#define __IHttpSecurity_FWD_DEFINED__
 175typedef interface IHttpSecurity IHttpSecurity;
 176#ifdef __cplusplus
 177interface IHttpSecurity;
 178#endif /* __cplusplus */
 179#endif
 180
 181#ifndef __IWinInetHttpInfo_FWD_DEFINED__
 182#define __IWinInetHttpInfo_FWD_DEFINED__
 183typedef interface IWinInetHttpInfo IWinInetHttpInfo;
 184#ifdef __cplusplus
 185interface IWinInetHttpInfo;
 186#endif /* __cplusplus */
 187#endif
 188
 189#ifndef __IWinInetHttpTimeouts_FWD_DEFINED__
 190#define __IWinInetHttpTimeouts_FWD_DEFINED__
 191typedef interface IWinInetHttpTimeouts IWinInetHttpTimeouts;
 192#ifdef __cplusplus
 193interface IWinInetHttpTimeouts;
 194#endif /* __cplusplus */
 195#endif
 196
 197#ifndef __IWinInetCacheHints_FWD_DEFINED__
 198#define __IWinInetCacheHints_FWD_DEFINED__
 199typedef interface IWinInetCacheHints IWinInetCacheHints;
 200#ifdef __cplusplus
 201interface IWinInetCacheHints;
 202#endif /* __cplusplus */
 203#endif
 204
 205#ifndef __IWinInetCacheHints2_FWD_DEFINED__
 206#define __IWinInetCacheHints2_FWD_DEFINED__
 207typedef interface IWinInetCacheHints2 IWinInetCacheHints2;
 208#ifdef __cplusplus
 209interface IWinInetCacheHints2;
 210#endif /* __cplusplus */
 211#endif
 212
 213#ifndef __IBindHost_FWD_DEFINED__
 214#define __IBindHost_FWD_DEFINED__
 215typedef interface IBindHost IBindHost;
 216#ifdef __cplusplus
 217interface IBindHost;
 218#endif /* __cplusplus */
 219#endif
 220
 221#ifndef __IInternet_FWD_DEFINED__
 222#define __IInternet_FWD_DEFINED__
 223typedef interface IInternet IInternet;
 224#ifdef __cplusplus
 225interface IInternet;
 226#endif /* __cplusplus */
 227#endif
 228
 229#ifndef __IInternetBindInfo_FWD_DEFINED__
 230#define __IInternetBindInfo_FWD_DEFINED__
 231typedef interface IInternetBindInfo IInternetBindInfo;
 232#ifdef __cplusplus
 233interface IInternetBindInfo;
 234#endif /* __cplusplus */
 235#endif
 236
 237#ifndef __IInternetBindInfoEx_FWD_DEFINED__
 238#define __IInternetBindInfoEx_FWD_DEFINED__
 239typedef interface IInternetBindInfoEx IInternetBindInfoEx;
 240#ifdef __cplusplus
 241interface IInternetBindInfoEx;
 242#endif /* __cplusplus */
 243#endif
 244
 245#ifndef __IInternetProtocolRoot_FWD_DEFINED__
 246#define __IInternetProtocolRoot_FWD_DEFINED__
 247typedef interface IInternetProtocolRoot IInternetProtocolRoot;
 248#ifdef __cplusplus
 249interface IInternetProtocolRoot;
 250#endif /* __cplusplus */
 251#endif
 252
 253#ifndef __IInternetProtocol_FWD_DEFINED__
 254#define __IInternetProtocol_FWD_DEFINED__
 255typedef interface IInternetProtocol IInternetProtocol;
 256#ifdef __cplusplus
 257interface IInternetProtocol;
 258#endif /* __cplusplus */
 259#endif
 260
 261#ifndef __IInternetProtocolEx_FWD_DEFINED__
 262#define __IInternetProtocolEx_FWD_DEFINED__
 263typedef interface IInternetProtocolEx IInternetProtocolEx;
 264#ifdef __cplusplus
 265interface IInternetProtocolEx;
 266#endif /* __cplusplus */
 267#endif
 268
 269#ifndef __IInternetProtocolSink_FWD_DEFINED__
 270#define __IInternetProtocolSink_FWD_DEFINED__
 271typedef interface IInternetProtocolSink IInternetProtocolSink;
 272#ifdef __cplusplus
 273interface IInternetProtocolSink;
 274#endif /* __cplusplus */
 275#endif
 276
 277#ifndef __IInternetProtocolSinkStackable_FWD_DEFINED__
 278#define __IInternetProtocolSinkStackable_FWD_DEFINED__
 279typedef interface IInternetProtocolSinkStackable IInternetProtocolSinkStackable;
 280#ifdef __cplusplus
 281interface IInternetProtocolSinkStackable;
 282#endif /* __cplusplus */
 283#endif
 284
 285#ifndef __IInternetSession_FWD_DEFINED__
 286#define __IInternetSession_FWD_DEFINED__
 287typedef interface IInternetSession IInternetSession;
 288#ifdef __cplusplus
 289interface IInternetSession;
 290#endif /* __cplusplus */
 291#endif
 292
 293#ifndef __IInternetThreadSwitch_FWD_DEFINED__
 294#define __IInternetThreadSwitch_FWD_DEFINED__
 295typedef interface IInternetThreadSwitch IInternetThreadSwitch;
 296#ifdef __cplusplus
 297interface IInternetThreadSwitch;
 298#endif /* __cplusplus */
 299#endif
 300
 301#ifndef __IInternetPriority_FWD_DEFINED__
 302#define __IInternetPriority_FWD_DEFINED__
 303typedef interface IInternetPriority IInternetPriority;
 304#ifdef __cplusplus
 305interface IInternetPriority;
 306#endif /* __cplusplus */
 307#endif
 308
 309#ifndef __IInternetProtocolInfo_FWD_DEFINED__
 310#define __IInternetProtocolInfo_FWD_DEFINED__
 311typedef interface IInternetProtocolInfo IInternetProtocolInfo;
 312#ifdef __cplusplus
 313interface IInternetProtocolInfo;
 314#endif /* __cplusplus */
 315#endif
 316
 317#ifndef __IInternetSecurityMgrSite_FWD_DEFINED__
 318#define __IInternetSecurityMgrSite_FWD_DEFINED__
 319typedef interface IInternetSecurityMgrSite IInternetSecurityMgrSite;
 320#ifdef __cplusplus
 321interface IInternetSecurityMgrSite;
 322#endif /* __cplusplus */
 323#endif
 324
 325#ifndef __IInternetSecurityManager_FWD_DEFINED__
 326#define __IInternetSecurityManager_FWD_DEFINED__
 327typedef interface IInternetSecurityManager IInternetSecurityManager;
 328#ifdef __cplusplus
 329interface IInternetSecurityManager;
 330#endif /* __cplusplus */
 331#endif
 332
 333#ifndef __IInternetSecurityManagerEx_FWD_DEFINED__
 334#define __IInternetSecurityManagerEx_FWD_DEFINED__
 335typedef interface IInternetSecurityManagerEx IInternetSecurityManagerEx;
 336#ifdef __cplusplus
 337interface IInternetSecurityManagerEx;
 338#endif /* __cplusplus */
 339#endif
 340
 341#ifndef __IInternetSecurityManagerEx2_FWD_DEFINED__
 342#define __IInternetSecurityManagerEx2_FWD_DEFINED__
 343typedef interface IInternetSecurityManagerEx2 IInternetSecurityManagerEx2;
 344#ifdef __cplusplus
 345interface IInternetSecurityManagerEx2;
 346#endif /* __cplusplus */
 347#endif
 348
 349#ifndef __IZoneIdentifier_FWD_DEFINED__
 350#define __IZoneIdentifier_FWD_DEFINED__
 351typedef interface IZoneIdentifier IZoneIdentifier;
 352#ifdef __cplusplus
 353interface IZoneIdentifier;
 354#endif /* __cplusplus */
 355#endif
 356
 357#ifndef __IInternetHostSecurityManager_FWD_DEFINED__
 358#define __IInternetHostSecurityManager_FWD_DEFINED__
 359typedef interface IInternetHostSecurityManager IInternetHostSecurityManager;
 360#ifdef __cplusplus
 361interface IInternetHostSecurityManager;
 362#endif /* __cplusplus */
 363#endif
 364
 365#ifndef __IInternetZoneManager_FWD_DEFINED__
 366#define __IInternetZoneManager_FWD_DEFINED__
 367typedef interface IInternetZoneManager IInternetZoneManager;
 368#ifdef __cplusplus
 369interface IInternetZoneManager;
 370#endif /* __cplusplus */
 371#endif
 372
 373#ifndef __IInternetZoneManagerEx_FWD_DEFINED__
 374#define __IInternetZoneManagerEx_FWD_DEFINED__
 375typedef interface IInternetZoneManagerEx IInternetZoneManagerEx;
 376#ifdef __cplusplus
 377interface IInternetZoneManagerEx;
 378#endif /* __cplusplus */
 379#endif
 380
 381#ifndef __IInternetZoneManagerEx2_FWD_DEFINED__
 382#define __IInternetZoneManagerEx2_FWD_DEFINED__
 383typedef interface IInternetZoneManagerEx2 IInternetZoneManagerEx2;
 384#ifdef __cplusplus
 385interface IInternetZoneManagerEx2;
 386#endif /* __cplusplus */
 387#endif
 388
 389#ifndef __ISoftDistExt_FWD_DEFINED__
 390#define __ISoftDistExt_FWD_DEFINED__
 391typedef interface ISoftDistExt ISoftDistExt;
 392#ifdef __cplusplus
 393interface ISoftDistExt;
 394#endif /* __cplusplus */
 395#endif
 396
 397#ifndef __ICatalogFileInfo_FWD_DEFINED__
 398#define __ICatalogFileInfo_FWD_DEFINED__
 399typedef interface ICatalogFileInfo ICatalogFileInfo;
 400#ifdef __cplusplus
 401interface ICatalogFileInfo;
 402#endif /* __cplusplus */
 403#endif
 404
 405#ifndef __IDataFilter_FWD_DEFINED__
 406#define __IDataFilter_FWD_DEFINED__
 407typedef interface IDataFilter IDataFilter;
 408#ifdef __cplusplus
 409interface IDataFilter;
 410#endif /* __cplusplus */
 411#endif
 412
 413#ifndef __IEncodingFilterFactory_FWD_DEFINED__
 414#define __IEncodingFilterFactory_FWD_DEFINED__
 415typedef interface IEncodingFilterFactory IEncodingFilterFactory;
 416#ifdef __cplusplus
 417interface IEncodingFilterFactory;
 418#endif /* __cplusplus */
 419#endif
 420
 421#ifndef __IWrappedProtocol_FWD_DEFINED__
 422#define __IWrappedProtocol_FWD_DEFINED__
 423typedef interface IWrappedProtocol IWrappedProtocol;
 424#ifdef __cplusplus
 425interface IWrappedProtocol;
 426#endif /* __cplusplus */
 427#endif
 428
 429#ifndef __IGetBindHandle_FWD_DEFINED__
 430#define __IGetBindHandle_FWD_DEFINED__
 431typedef interface IGetBindHandle IGetBindHandle;
 432#ifdef __cplusplus
 433interface IGetBindHandle;
 434#endif /* __cplusplus */
 435#endif
 436
 437#ifndef __IBindCallbackRedirect_FWD_DEFINED__
 438#define __IBindCallbackRedirect_FWD_DEFINED__
 439typedef interface IBindCallbackRedirect IBindCallbackRedirect;
 440#ifdef __cplusplus
 441interface 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
 453extern "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__
 468typedef interface IPersistMoniker IPersistMoniker;
 469#ifdef __cplusplus
 470interface IPersistMoniker;
 471#endif /* __cplusplus */
 472#endif
 473
 474#ifndef __IBindProtocol_FWD_DEFINED__
 475#define __IBindProtocol_FWD_DEFINED__
 476typedef interface IBindProtocol IBindProtocol;
 477#ifdef __cplusplus
 478interface IBindProtocol;
 479#endif /* __cplusplus */
 480#endif
 481
 482#ifndef __IBinding_FWD_DEFINED__
 483#define __IBinding_FWD_DEFINED__
 484typedef interface IBinding IBinding;
 485#ifdef __cplusplus
 486interface IBinding;
 487#endif /* __cplusplus */
 488#endif
 489
 490#ifndef __IBindStatusCallback_FWD_DEFINED__
 491#define __IBindStatusCallback_FWD_DEFINED__
 492typedef interface IBindStatusCallback IBindStatusCallback;
 493#ifdef __cplusplus
 494interface IBindStatusCallback;
 495#endif /* __cplusplus */
 496#endif
 497
 498#ifndef __IBindStatusCallbackEx_FWD_DEFINED__
 499#define __IBindStatusCallbackEx_FWD_DEFINED__
 500typedef interface IBindStatusCallbackEx IBindStatusCallbackEx;
 501#ifdef __cplusplus
 502interface IBindStatusCallbackEx;
 503#endif /* __cplusplus */
 504#endif
 505
 506#ifndef __IBindStatusCallbackMsg_FWD_DEFINED__
 507#define __IBindStatusCallbackMsg_FWD_DEFINED__
 508typedef interface IBindStatusCallbackMsg IBindStatusCallbackMsg;
 509#ifdef __cplusplus
 510interface IBindStatusCallbackMsg;
 511#endif /* __cplusplus */
 512#endif
 513
 514#ifndef __IAuthenticate_FWD_DEFINED__
 515#define __IAuthenticate_FWD_DEFINED__
 516typedef interface IAuthenticate IAuthenticate;
 517#ifdef __cplusplus
 518interface IAuthenticate;
 519#endif /* __cplusplus */
 520#endif
 521
 522#ifndef __IAuthenticateEx_FWD_DEFINED__
 523#define __IAuthenticateEx_FWD_DEFINED__
 524typedef interface IAuthenticateEx IAuthenticateEx;
 525#ifdef __cplusplus
 526interface IAuthenticateEx;
 527#endif /* __cplusplus */
 528#endif
 529
 530#ifndef __IWindowForBindingUI_FWD_DEFINED__
 531#define __IWindowForBindingUI_FWD_DEFINED__
 532typedef interface IWindowForBindingUI IWindowForBindingUI;
 533#ifdef __cplusplus
 534interface IWindowForBindingUI;
 535#endif /* __cplusplus */
 536#endif
 537
 538#ifndef __ICodeInstall_FWD_DEFINED__
 539#define __ICodeInstall_FWD_DEFINED__
 540typedef interface ICodeInstall ICodeInstall;
 541#ifdef __cplusplus
 542interface ICodeInstall;
 543#endif /* __cplusplus */
 544#endif
 545
 546#ifndef __IHttpNegotiate_FWD_DEFINED__
 547#define __IHttpNegotiate_FWD_DEFINED__
 548typedef interface IHttpNegotiate IHttpNegotiate;
 549#ifdef __cplusplus
 550interface IHttpNegotiate;
 551#endif /* __cplusplus */
 552#endif
 553
 554#ifndef __IHttpNegotiate2_FWD_DEFINED__
 555#define __IHttpNegotiate2_FWD_DEFINED__
 556typedef interface IHttpNegotiate2 IHttpNegotiate2;
 557#ifdef __cplusplus
 558interface IHttpNegotiate2;
 559#endif /* __cplusplus */
 560#endif
 561
 562#ifndef __IHttpNegotiate3_FWD_DEFINED__
 563#define __IHttpNegotiate3_FWD_DEFINED__
 564typedef interface IHttpNegotiate3 IHttpNegotiate3;
 565#ifdef __cplusplus
 566interface IHttpNegotiate3;
 567#endif /* __cplusplus */
 568#endif
 569
 570#ifndef __IWinInetFileStream_FWD_DEFINED__
 571#define __IWinInetFileStream_FWD_DEFINED__
 572typedef interface IWinInetFileStream IWinInetFileStream;
 573#ifdef __cplusplus
 574interface IWinInetFileStream;
 575#endif /* __cplusplus */
 576#endif
 577
 578#ifndef __IXMLElement_FWD_DEFINED__
 579#define __IXMLElement_FWD_DEFINED__
 580typedef interface IXMLElement IXMLElement;
 581#ifdef __cplusplus
 582interface IXMLElement;
 583#endif /* __cplusplus */
 584#endif
 585
 586
 587EXTERN_C const IID CLSID_SBS_StdURLMoniker;
 588EXTERN_C const IID CLSID_SBS_HttpProtocol;
 589EXTERN_C const IID CLSID_SBS_FtpProtocol;
 590EXTERN_C const IID CLSID_SBS_GopherProtocol;
 591EXTERN_C const IID CLSID_SBS_HttpSProtocol;
 592EXTERN_C const IID CLSID_SBS_FileProtocol;
 593EXTERN_C const IID CLSID_SBS_MkProtocol;
 594EXTERN_C const IID CLSID_SBS_UrlMkBindCtx;
 595EXTERN_C const IID CLSID_SBS_SoftDistExt;
 596EXTERN_C const IID CLSID_SBS_CdlProtocol;
 597EXTERN_C const IID CLSID_SBS_ClassInstallFilter;
 598EXTERN_C const IID CLSID_SBS_InternetSecurityManager;
 599EXTERN_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
 608EXTERN_C const IID IID_IAsyncMoniker;
 609EXTERN_C const IID CLSID_StdURLMoniker;
 610EXTERN_C const IID CLSID_HttpProtocol;
 611EXTERN_C const IID CLSID_FtpProtocol;
 612EXTERN_C const IID CLSID_GopherProtocol;
 613EXTERN_C const IID CLSID_HttpSProtocol;
 614EXTERN_C const IID CLSID_FileProtocol;
 615EXTERN_C const IID CLSID_MkProtocol;
 616EXTERN_C const IID CLSID_StdURLProtocol;
 617EXTERN_C const IID CLSID_UrlMkBindCtx;
 618EXTERN_C const IID CLSID_CdlProtocol;
 619EXTERN_C const IID CLSID_ClassInstallFilter;
 620EXTERN_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
 630STDAPI CreateURLMoniker(LPMONIKER pMkCtx, LPCWSTR szURL, LPMONIKER *ppmk);
 631STDAPI CreateURLMonikerEx(LPMONIKER pMkCtx, LPCWSTR szURL, LPMONIKER *ppmk, DWORD dwFlags);
 632STDAPI GetClassURL(LPCWSTR szURL, CLSID *pClsID);
 633STDAPI CreateAsyncBindCtx(DWORD reserved, IBindStatusCallback *pBSCb, IEnumFORMATETC *pEFetc, IBindCtx **ppBC);
 634#if (_WIN32_IE >= _WIN32_IE_IE70)
 635STDAPI CreateURLMonikerEx2(LPMONIKER pMkCtx, IUri *pUri, LPMONIKER *ppmk, DWORD dwFlags);
 636#endif
 637STDAPI CreateAsyncBindCtxEx(IBindCtx *pbc, DWORD dwOptions, IBindStatusCallback *pBSCb, IEnumFORMATETC *pEnum, IBindCtx **ppBC, DWORD reserved);
 638STDAPI MkParseDisplayNameEx(IBindCtx *pbc, LPCWSTR szDisplayName, ULONG *pchEaten, LPMONIKER *ppmk);
 639STDAPI RegisterBindStatusCallback(LPBC pBC, IBindStatusCallback *pBSCb, IBindStatusCallback **ppBSCBPrev, DWORD dwReserved);
 640STDAPI RevokeBindStatusCallback(LPBC pBC, IBindStatusCallback *pBSCb);
 641STDAPI GetClassFileOrMime(LPBC pBC, LPCWSTR szFilename, LPVOID pBuffer, DWORD cbSize, LPCWSTR szMime, DWORD dwReserved, CLSID *pclsid);
 642STDAPI IsValidURL(LPBC pBC, LPCWSTR szURL, DWORD dwReserved);
 643STDAPI CoGetClassObjectFromURL(REFCLSID rCLASSID, LPCWSTR szCODE, DWORD dwFileVersionMS, DWORD dwFileVersionLS, LPCWSTR szTYPE, LPBINDCTX pBindCtx, DWORD dwClsContext, LPVOID pvReserved, REFIID riid, LPVOID *ppv);
 644STDAPI IEInstallScope(LPDWORD pdwScope);
 645STDAPI FaultInIEFeature(HWND hWnd, uCLSSPEC *pClassSpec, QUERYCONTEXT *pQuery, DWORD dwFlags);
 646STDAPI 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
 652STDAPI IsAsyncMoniker(IMoniker *pmk);
 653STDAPI CreateURLBinding(LPCWSTR lpszUrl, IBindCtx *pbc, IBinding **ppBdg);
 654STDAPI RegisterMediaTypes(UINT ctypes, const LPCSTR *rgszTypes, CLIPFORMAT *rgcfTypes);
 655STDAPI FindMediaType(LPCSTR rgszTypes, CLIPFORMAT *rgcfTypes);
 656STDAPI CreateFormatEnumerator(UINT cfmtetc, FORMATETC *rgfmtetc, IEnumFORMATETC **ppenumfmtetc);
 657STDAPI RegisterFormatEnumerator(LPBC pBC, IEnumFORMATETC *pEFetc, DWORD reserved);
 658STDAPI RevokeFormatEnumerator(LPBC pBC, IEnumFORMATETC *pEFetc);
 659STDAPI RegisterMediaTypeClass(LPBC pBC,UINT ctypes, const LPCSTR *rgszTypes, CLSID *rgclsID, DWORD reserved);
 660STDAPI FindMediaTypeClass(LPBC pBC, LPCSTR szType, CLSID *pclsID, DWORD reserved);
 661STDAPI UrlMkSetSessionOption(DWORD dwOption, LPVOID pBuffer, DWORD dwBufferLength, DWORD dwReserved);
 662STDAPI UrlMkGetSessionOption(DWORD dwOption, LPVOID pBuffer, DWORD dwBufferLength, DWORD *pdwBufferLengthOut, DWORD dwReserved);
 663STDAPI 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
 677STDAPI ObtainUserAgentString(DWORD dwOption, LPSTR pszUAOut, DWORD *cbSize);
 678STDAPI CompareSecurityIds(BYTE *pbSecurityId1, DWORD dwLen1, BYTE *pbSecurityId2, DWORD dwLen2, DWORD dwReserved);
 679STDAPI 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
 795typedef IPersistMoniker *LPPERSISTMONIKER;
 796
 797DEFINE_GUID(IID_IPersistMoniker, 0x79eac9c9, 0xbaf9, 0x11ce, 0x8c,0x82, 0x00,0xaa,0x00,0x4b,0xa9,0x0b);
 798#if defined(__cplusplus) && !defined(CINTERFACE)
 799MIDL_INTERFACE("79eac9c9-baf9-11ce-8c82-00aa004ba90b")
 800IPersistMoniker : 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
 831typedef 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
 879interface 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 ***/
 898static inline HRESULT IPersistMoniker_QueryInterface(IPersistMoniker* This,REFIID riid,void **ppvObject) {
 899    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
 900}
 901static inline ULONG IPersistMoniker_AddRef(IPersistMoniker* This) {
 902    return This->lpVtbl->AddRef(This);
 903}
 904static inline ULONG IPersistMoniker_Release(IPersistMoniker* This) {
 905    return This->lpVtbl->Release(This);
 906}
 907/*** IPersistMoniker methods ***/
 908static inline HRESULT IPersistMoniker_GetClassID(IPersistMoniker* This,CLSID *pClassID) {
 909    return This->lpVtbl->GetClassID(This,pClassID);
 910}
 911static inline HRESULT IPersistMoniker_IsDirty(IPersistMoniker* This) {
 912    return This->lpVtbl->IsDirty(This);
 913}
 914static inline HRESULT IPersistMoniker_Load(IPersistMoniker* This,WINBOOL fFullyAvailable,IMoniker *pimkName,LPBC pibc,DWORD grfMode) {
 915    return This->lpVtbl->Load(This,fFullyAvailable,pimkName,pibc,grfMode);
 916}
 917static inline HRESULT IPersistMoniker_Save(IPersistMoniker* This,IMoniker *pimkName,LPBC pbc,WINBOOL fRemember) {
 918    return This->lpVtbl->Save(This,pimkName,pbc,fRemember);
 919}
 920static inline HRESULT IPersistMoniker_SaveCompleted(IPersistMoniker* This,IMoniker *pimkName,LPBC pibc) {
 921    return This->lpVtbl->SaveCompleted(This,pimkName,pibc);
 922}
 923static inline 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
 944typedef IMonikerProp *LPMONIKERPROP;
 945
 946typedef enum __WIDL_urlmon_generated_name_0000000F {
 947    MIMETYPEPROP = 0x0,
 948    USE_SRC_URL = 0x1,
 949    CLASSIDPROP = 0x2,
 950    TRUSTEDDOWNLOADPROP = 0x3,
 951    POPUPLEVELPROP = 0x4
 952} MONIKERPROPERTY;
 953
 954DEFINE_GUID(IID_IMonikerProp, 0xa5ca5f7f, 0x1847, 0x4d87, 0x9c,0x5b, 0x91,0x85,0x09,0xf7,0x51,0x1d);
 955#if defined(__cplusplus) && !defined(CINTERFACE)
 956MIDL_INTERFACE("a5ca5f7f-1847-4d87-9c5b-918509f7511d")
 957IMonikerProp : 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
 968typedef 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
 992interface 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 ***/
1006static inline HRESULT IMonikerProp_QueryInterface(IMonikerProp* This,REFIID riid,void **ppvObject) {
1007    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
1008}
1009static inline ULONG IMonikerProp_AddRef(IMonikerProp* This) {
1010    return This->lpVtbl->AddRef(This);
1011}
1012static inline ULONG IMonikerProp_Release(IMonikerProp* This) {
1013    return This->lpVtbl->Release(This);
1014}
1015/*** IMonikerProp methods ***/
1016static inline 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
1038typedef IBindProtocol *LPBINDPROTOCOL;
1039
1040DEFINE_GUID(IID_IBindProtocol, 0x79eac9cd, 0xbaf9, 0x11ce, 0x8c,0x82, 0x00,0xaa,0x00,0x4b,0xa9,0x0b);
1041#if defined(__cplusplus) && !defined(CINTERFACE)
1042MIDL_INTERFACE("79eac9cd-baf9-11ce-8c82-00aa004ba90b")
1043IBindProtocol : 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
1055typedef 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
1080interface 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 ***/
1094static inline HRESULT IBindProtocol_QueryInterface(IBindProtocol* This,REFIID riid,void **ppvObject) {
1095    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
1096}
1097static inline ULONG IBindProtocol_AddRef(IBindProtocol* This) {
1098    return This->lpVtbl->AddRef(This);
1099}
1100static inline ULONG IBindProtocol_Release(IBindProtocol* This) {
1101    return This->lpVtbl->Release(This);
1102}
1103/*** IBindProtocol methods ***/
1104static inline 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
1126typedef IBinding *LPBINDING;
1127
1128DEFINE_GUID(IID_IBinding, 0x79eac9c0, 0xbaf9, 0x11ce, 0x8c,0x82, 0x00,0xaa,0x00,0x4b,0xa9,0x0b);
1129#if defined(__cplusplus) && !defined(CINTERFACE)
1130MIDL_INTERFACE("79eac9c0-baf9-11ce-8c82-00aa004ba90b")
1131IBinding : 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
1159typedef 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
1202interface 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 ***/
1221static inline HRESULT IBinding_QueryInterface(IBinding* This,REFIID riid,void **ppvObject) {
1222    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
1223}
1224static inline ULONG IBinding_AddRef(IBinding* This) {
1225    return This->lpVtbl->AddRef(This);
1226}
1227static inline ULONG IBinding_Release(IBinding* This) {
1228    return This->lpVtbl->Release(This);
1229}
1230/*** IBinding methods ***/
1231static inline HRESULT IBinding_Abort(IBinding* This) {
1232    return This->lpVtbl->Abort(This);
1233}
1234static inline HRESULT IBinding_Suspend(IBinding* This) {
1235    return This->lpVtbl->Suspend(This);
1236}
1237static inline HRESULT IBinding_Resume(IBinding* This) {
1238    return This->lpVtbl->Resume(This);
1239}
1240static inline HRESULT IBinding_SetPriority(IBinding* This,LONG nPriority) {
1241    return This->lpVtbl->SetPriority(This,nPriority);
1242}
1243static inline HRESULT IBinding_GetPriority(IBinding* This,LONG *pnPriority) {
1244    return This->lpVtbl->GetPriority(This,pnPriority);
1245}
1246static inline 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
1254HRESULT STDMETHODCALLTYPE IBinding_RemoteGetBindResult_Proxy(
1255    IBinding* This,
1256    CLSID *pclsidProtocol,
1257    DWORD *pdwResult,
1258    LPOLESTR *pszResult,
1259    DWORD dwReserved);
1260void __RPC_STUB IBinding_RemoteGetBindResult_Stub(
1261    IRpcStubBuffer* This,
1262    IRpcChannelBuffer* pRpcChannelBuffer,
1263    PRPC_MESSAGE pRpcMessage,
1264    DWORD* pdwStubPhase);
1265HRESULT CALLBACK IBinding_GetBindResult_Proxy(
1266    IBinding* This,
1267    CLSID *pclsidProtocol,
1268    DWORD *pdwResult,
1269    LPOLESTR *pszResult,
1270    DWORD *pdwReserved);
1271HRESULT __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
1293typedef IBindStatusCallback *LPBINDSTATUSCALLBACK;
1294
1295typedef enum __WIDL_urlmon_generated_name_00000010 {
1296    BINDVERB_GET = 0x0,
1297    BINDVERB_POST = 0x1,
1298    BINDVERB_PUT = 0x2,
1299    BINDVERB_CUSTOM = 0x3,
1300    BINDVERB_RESERVED1 = 0x4
1301} BINDVERB;
1302
1303typedef enum __WIDL_urlmon_generated_name_00000011 {
1304    BINDINFOF_URLENCODESTGMEDDATA = 0x1,
1305    BINDINFOF_URLENCODEDEXTRAINFO = 0x2
1306} BINDINFOF;
1307
1308typedef enum __WIDL_urlmon_generated_name_00000012 {
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
1342typedef enum __WIDL_urlmon_generated_name_00000013 {
1343    URL_ENCODING_NONE = 0x0,
1344    URL_ENCODING_ENABLE_UTF8 = 0x10000000,
1345    URL_ENCODING_DISABLE_UTF8 = 0x20000000
1346} URL_ENCODING;
1347
1348typedef 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
1365typedef struct _REMSECURITY_ATTRIBUTES {
1366    DWORD nLength;
1367    DWORD lpSecurityDescriptor;
1368    WINBOOL bInheritHandle;
1369} REMSECURITY_ATTRIBUTES;
1370typedef struct _REMSECURITY_ATTRIBUTES *PREMSECURITY_ATTRIBUTES;
1371typedef struct _REMSECURITY_ATTRIBUTES *LPREMSECURITY_ATTRIBUTES;
1372
1373typedef 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
1389typedef struct tagRemFORMATETC {
1390    DWORD cfFormat;
1391    DWORD ptd;
1392    DWORD dwAspect;
1393    LONG lindex;
1394    DWORD tymed;
1395} RemFORMATETC;
1396typedef struct tagRemFORMATETC *LPREMFORMATETC;
1397
1398typedef enum __WIDL_urlmon_generated_name_00000014 {
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
1416typedef enum __WIDL_urlmon_generated_name_00000015 {
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
1426typedef 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
1497DEFINE_GUID(IID_IBindStatusCallback, 0x79eac9c1, 0xbaf9, 0x11ce, 0x8c,0x82, 0x00,0xaa,0x00,0x4b,0xa9,0x0b);
1498#if defined(__cplusplus) && !defined(CINTERFACE)
1499MIDL_INTERFACE("79eac9c1-baf9-11ce-8c82-00aa004ba90b")
1500IBindStatusCallback : 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
1541typedef 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
1602interface 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 ***/
1623static inline HRESULT IBindStatusCallback_QueryInterface(IBindStatusCallback* This,REFIID riid,void **ppvObject) {
1624    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
1625}
1626static inline ULONG IBindStatusCallback_AddRef(IBindStatusCallback* This) {
1627    return This->lpVtbl->AddRef(This);
1628}
1629static inline ULONG IBindStatusCallback_Release(IBindStatusCallback* This) {
1630    return This->lpVtbl->Release(This);
1631}
1632/*** IBindStatusCallback methods ***/
1633static inline HRESULT IBindStatusCallback_OnStartBinding(IBindStatusCallback* This,DWORD dwReserved,IBinding *pib) {
1634    return This->lpVtbl->OnStartBinding(This,dwReserved,pib);
1635}
1636static inline HRESULT IBindStatusCallback_GetPriority(IBindStatusCallback* This,LONG *pnPriority) {
1637    return This->lpVtbl->GetPriority(This,pnPriority);
1638}
1639static inline HRESULT IBindStatusCallback_OnLowResource(IBindStatusCallback* This,DWORD reserved) {
1640    return This->lpVtbl->OnLowResource(This,reserved);
1641}
1642static inline HRESULT IBindStatusCallback_OnProgress(IBindStatusCallback* This,ULONG ulProgress,ULONG ulProgressMax,ULONG ulStatusCode,LPCWSTR szStatusText) {
1643    return This->lpVtbl->OnProgress(This,ulProgress,ulProgressMax,ulStatusCode,szStatusText);
1644}
1645static inline HRESULT IBindStatusCallback_OnStopBinding(IBindStatusCallback* This,HRESULT hresult,LPCWSTR szError) {
1646    return This->lpVtbl->OnStopBinding(This,hresult,szError);
1647}
1648static inline HRESULT IBindStatusCallback_GetBindInfo(IBindStatusCallback* This,DWORD *grfBINDF,BINDINFO *pbindinfo) {
1649    return This->lpVtbl->GetBindInfo(This,grfBINDF,pbindinfo);
1650}
1651static inline HRESULT IBindStatusCallback_OnDataAvailable(IBindStatusCallback* This,DWORD grfBSCF,DWORD dwSize,FORMATETC *pformatetc,STGMEDIUM *pstgmed) {
1652    return This->lpVtbl->OnDataAvailable(This,grfBSCF,dwSize,pformatetc,pstgmed);
1653}
1654static inline 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
1662HRESULT STDMETHODCALLTYPE IBindStatusCallback_RemoteGetBindInfo_Proxy(
1663    IBindStatusCallback* This,
1664    DWORD *grfBINDF,
1665    RemBINDINFO *pbindinfo,
1666    RemSTGMEDIUM *pstgmed);
1667void __RPC_STUB IBindStatusCallback_RemoteGetBindInfo_Stub(
1668    IRpcStubBuffer* This,
1669    IRpcChannelBuffer* pRpcChannelBuffer,
1670    PRPC_MESSAGE pRpcMessage,
1671    DWORD* pdwStubPhase);
1672HRESULT STDMETHODCALLTYPE IBindStatusCallback_RemoteOnDataAvailable_Proxy(
1673    IBindStatusCallback* This,
1674    DWORD grfBSCF,
1675    DWORD dwSize,
1676    RemFORMATETC *pformatetc,
1677    RemSTGMEDIUM *pstgmed);
1678void __RPC_STUB IBindStatusCallback_RemoteOnDataAvailable_Stub(
1679    IRpcStubBuffer* This,
1680    IRpcChannelBuffer* pRpcChannelBuffer,
1681    PRPC_MESSAGE pRpcMessage,
1682    DWORD* pdwStubPhase);
1683HRESULT CALLBACK IBindStatusCallback_GetBindInfo_Proxy(
1684    IBindStatusCallback* This,
1685    DWORD *grfBINDF,
1686    BINDINFO *pbindinfo);
1687HRESULT __RPC_STUB IBindStatusCallback_GetBindInfo_Stub(
1688    IBindStatusCallback* This,
1689    DWORD *grfBINDF,
1690    RemBINDINFO *pbindinfo,
1691    RemSTGMEDIUM *pstgmed);
1692HRESULT CALLBACK IBindStatusCallback_OnDataAvailable_Proxy(
1693    IBindStatusCallback* This,
1694    DWORD grfBSCF,
1695    DWORD dwSize,
1696    FORMATETC *pformatetc,
1697    STGMEDIUM *pstgmed);
1698HRESULT __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
1720typedef IBindStatusCallbackEx *LPBINDSTATUSCALLBACKEX;
1721
1722typedef enum __WIDL_urlmon_generated_name_00000016 {
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
1748DEFINE_GUID(IID_IBindStatusCallbackEx, 0xaaa74ef9, 0x8ee7, 0x4659, 0x88,0xd9, 0xf8,0xc5,0x04,0xda,0x73,0xcc);
1749#if defined(__cplusplus) && !defined(CINTERFACE)
1750MIDL_INTERFACE("aaa74ef9-8ee7-4659-88d9-f8c504da73cc")
1751IBindStatusCallbackEx : 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
1764typedef 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
1833interface 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 ***/
1856static inline HRESULT IBindStatusCallbackEx_QueryInterface(IBindStatusCallbackEx* This,REFIID riid,void **ppvObject) {
1857    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
1858}
1859static inline ULONG IBindStatusCallbackEx_AddRef(IBindStatusCallbackEx* This) {
1860    return This->lpVtbl->AddRef(This);
1861}
1862static inline ULONG IBindStatusCallbackEx_Release(IBindStatusCallbackEx* This) {
1863    return This->lpVtbl->Release(This);
1864}
1865/*** IBindStatusCallback methods ***/
1866static inline HRESULT IBindStatusCallbackEx_OnStartBinding(IBindStatusCallbackEx* This,DWORD dwReserved,IBinding *pib) {
1867    return This->lpVtbl->OnStartBinding(This,dwReserved,pib);
1868}
1869static inline HRESULT IBindStatusCallbackEx_GetPriority(IBindStatusCallbackEx* This,LONG *pnPriority) {
1870    return This->lpVtbl->GetPriority(This,pnPriority);
1871}
1872static inline HRESULT IBindStatusCallbackEx_OnLowResource(IBindStatusCallbackEx* This,DWORD reserved) {
1873    return This->lpVtbl->OnLowResource(This,reserved);
1874}
1875static inline HRESULT IBindStatusCallbackEx_OnProgress(IBindStatusCallbackEx* This,ULONG ulProgress,ULONG ulProgressMax,ULONG ulStatusCode,LPCWSTR szStatusText) {
1876    return This->lpVtbl->OnProgress(This,ulProgress,ulProgressMax,ulStatusCode,szStatusText);
1877}
1878static inline HRESULT IBindStatusCallbackEx_OnStopBinding(IBindStatusCallbackEx* This,HRESULT hresult,LPCWSTR szError) {
1879    return This->lpVtbl->OnStopBinding(This,hresult,szError);
1880}
1881static inline HRESULT IBindStatusCallbackEx_GetBindInfo(IBindStatusCallbackEx* This,DWORD *grfBINDF,BINDINFO *pbindinfo) {
1882    return This->lpVtbl->GetBindInfo(This,grfBINDF,pbindinfo);
1883}
1884static inline HRESULT IBindStatusCallbackEx_OnDataAvailable(IBindStatusCallbackEx* This,DWORD grfBSCF,DWORD dwSize,FORMATETC *pformatetc,STGMEDIUM *pstgmed) {
1885    return This->lpVtbl->OnDataAvailable(This,grfBSCF,dwSize,pformatetc,pstgmed);
1886}
1887static inline HRESULT IBindStatusCallbackEx_OnObjectAvailable(IBindStatusCallbackEx* This,REFIID riid,IUnknown *punk) {
1888    return This->lpVtbl->OnObjectAvailable(This,riid,punk);
1889}
1890/*** IBindStatusCallbackEx methods ***/
1891static inline 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
1899HRESULT STDMETHODCALLTYPE IBindStatusCallbackEx_RemoteGetBindInfoEx_Proxy(
1900    IBindStatusCallbackEx* This,
1901    DWORD *grfBINDF,
1902    RemBINDINFO *pbindinfo,
1903    RemSTGMEDIUM *pstgmed,
1904    DWORD *grfBINDF2,
1905    DWORD *pdwReserved);
1906void __RPC_STUB IBindStatusCallbackEx_RemoteGetBindInfoEx_Stub(
1907    IRpcStubBuffer* This,
1908    IRpcChannelBuffer* pRpcChannelBuffer,
1909    PRPC_MESSAGE pRpcMessage,
1910    DWORD* pdwStubPhase);
1911HRESULT CALLBACK IBindStatusCallbackEx_GetBindInfoEx_Proxy(
1912    IBindStatusCallbackEx* This,
1913    DWORD *grfBINDF,
1914    BINDINFO *pbindinfo,
1915    DWORD *grfBINDF2,
1916    DWORD *pdwReserved);
1917HRESULT __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
1938typedef IAuthenticate *LPAUTHENTICATION;
1939
1940DEFINE_GUID(IID_IAuthenticate, 0x79eac9d0, 0xbaf9, 0x11ce, 0x8c,0x82, 0x00,0xaa,0x00,0x4b,0xa9,0x0b);
1941#if defined(__cplusplus) && !defined(CINTERFACE)
1942MIDL_INTERFACE("79eac9d0-baf9-11ce-8c82-00aa004ba90b")
1943IAuthenticate : 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
1955typedef 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
1980interface 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 ***/
1994static inline HRESULT IAuthenticate_QueryInterface(IAuthenticate* This,REFIID riid,void **ppvObject) {
1995    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
1996}
1997static inline ULONG IAuthenticate_AddRef(IAuthenticate* This) {
1998    return This->lpVtbl->AddRef(This);
1999}
2000static inline ULONG IAuthenticate_Release(IAuthenticate* This) {
2001    return This->lpVtbl->Release(This);
2002}
2003/*** IAuthenticate methods ***/
2004static inline 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
2026typedef IAuthenticateEx *LPAUTHENTICATIONEX;
2027
2028typedef enum __WIDL_urlmon_generated_name_00000017 {
2029    AUTHENTICATEF_PROXY = 0x1,
2030    AUTHENTICATEF_BASIC = 0x2,
2031    AUTHENTICATEF_HTTP = 0x4
2032} AUTHENTICATEF;
2033
2034typedef struct _tagAUTHENTICATEINFO {
2035    DWORD dwFlags;
2036    DWORD dwReserved;
2037} AUTHENTICATEINFO;
2038
2039DEFINE_GUID(IID_IAuthenticateEx, 0x2ad1edaf, 0xd83d, 0x48b5, 0x9a,0xdf, 0x03,0xdb,0xe1,0x9f,0x53,0xbd);
2040#if defined(__cplusplus) && !defined(CINTERFACE)
2041MIDL_INTERFACE("2ad1edaf-d83d-48b5-9adf-03dbe19f53bd")
2042IAuthenticateEx : 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
2055typedef 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
2088interface 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 ***/
2104static inline HRESULT IAuthenticateEx_QueryInterface(IAuthenticateEx* This,REFIID riid,void **ppvObject) {
2105    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
2106}
2107static inline ULONG IAuthenticateEx_AddRef(IAuthenticateEx* This) {
2108    return This->lpVtbl->AddRef(This);
2109}
2110static inline ULONG IAuthenticateEx_Release(IAuthenticateEx* This) {
2111    return This->lpVtbl->Release(This);
2112}
2113/*** IAuthenticate methods ***/
2114static inline HRESULT IAuthenticateEx_Authenticate(IAuthenticateEx* This,HWND *phwnd,LPWSTR *pszUsername,LPWSTR *pszPassword) {
2115    return This->lpVtbl->Authenticate(This,phwnd,pszUsername,pszPassword);
2116}
2117/*** IAuthenticateEx methods ***/
2118static inline 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
2140typedef IHttpNegotiate *LPHTTPNEGOTIATE;
2141
2142DEFINE_GUID(IID_IHttpNegotiate, 0x79eac9d2, 0xbaf9, 0x11ce, 0x8c,0x82, 0x00,0xaa,0x00,0x4b,0xa9,0x0b);
2143#if defined(__cplusplus) && !defined(CINTERFACE)
2144MIDL_INTERFACE("79eac9d2-baf9-11ce-8c82-00aa004ba90b")
2145IHttpNegotiate : 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
2164typedef 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
2197interface 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 ***/
2212static inline HRESULT IHttpNegotiate_QueryInterface(IHttpNegotiate* This,REFIID riid,void **ppvObject) {
2213    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
2214}
2215static inline ULONG IHttpNegotiate_AddRef(IHttpNegotiate* This) {
2216    return This->lpVtbl->AddRef(This);
2217}
2218static inline ULONG IHttpNegotiate_Release(IHttpNegotiate* This) {
2219    return This->lpVtbl->Release(This);
2220}
2221/*** IHttpNegotiate methods ***/
2222static inline HRESULT IHttpNegotiate_BeginningTransaction(IHttpNegotiate* This,LPCWSTR szURL,LPCWSTR szHeaders,DWORD dwReserved,LPWSTR *pszAdditionalHeaders) {
2223    return This->lpVtbl->BeginningTransaction(This,szURL,szHeaders,dwReserved,pszAdditionalHeaders);
2224}
2225static inline 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
2247typedef IHttpNegotiate2 *LPHTTPNEGOTIATE2;
2248
2249DEFINE_GUID(IID_IHttpNegotiate2, 0x4f9f9fcb, 0xe0f4, 0x48eb, 0xb7,0xab, 0xfa,0x2e,0xa9,0x36,0x5c,0xb4);
2250#if defined(__cplusplus) && !defined(CINTERFACE)
2251MIDL_INTERFACE("4f9f9fcb-e0f4-48eb-b7ab-fa2ea9365cb4")
2252IHttpNegotiate2 : 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
2264typedef 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
2304interface 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 ***/
2321static inline HRESULT IHttpNegotiate2_QueryInterface(IHttpNegotiate2* This,REFIID riid,void **ppvObject) {
2322    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
2323}
2324static inline ULONG IHttpNegotiate2_AddRef(IHttpNegotiate2* This) {
2325    return This->lpVtbl->AddRef(This);
2326}
2327static inline ULONG IHttpNegotiate2_Release(IHttpNegotiate2* This) {
2328    return This->lpVtbl->Release(This);
2329}
2330/*** IHttpNegotiate methods ***/
2331static inline HRESULT IHttpNegotiate2_BeginningTransaction(IHttpNegotiate2* This,LPCWSTR szURL,LPCWSTR szHeaders,DWORD dwReserved,LPWSTR *pszAdditionalHeaders) {
2332    return This->lpVtbl->BeginningTransaction(This,szURL,szHeaders,dwReserved,pszAdditionalHeaders);
2333}
2334static inline 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 ***/
2338static inline 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
2360typedef IHttpNegotiate3 *LPHTTPNEGOTIATE3;
2361
2362DEFINE_GUID(IID_IHttpNegotiate3, 0x57b6c80a, 0x34c2, 0x4602, 0xbc,0x26, 0x66,0xa0,0x2f,0xc5,0x71,0x53);
2363#if defined(__cplusplus) && !defined(CINTERFACE)
2364MIDL_INTERFACE("57b6c80a-34c2-4602-bc26-66a02fc57153")
2365IHttpNegotiate3 : 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
2376typedef 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
2422interface 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 ***/
2441static inline HRESULT IHttpNegotiate3_QueryInterface(IHttpNegotiate3* This,REFIID riid,void **ppvObject) {
2442    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
2443}
2444static inline ULONG IHttpNegotiate3_AddRef(IHttpNegotiate3* This) {
2445    return This->lpVtbl->AddRef(This);
2446}
2447static inline ULONG IHttpNegotiate3_Release(IHttpNegotiate3* This) {
2448    return This->lpVtbl->Release(This);
2449}
2450/*** IHttpNegotiate methods ***/
2451static inline HRESULT IHttpNegotiate3_BeginningTransaction(IHttpNegotiate3* This,LPCWSTR szURL,LPCWSTR szHeaders,DWORD dwReserved,LPWSTR *pszAdditionalHeaders) {
2452    return This->lpVtbl->BeginningTransaction(This,szURL,szHeaders,dwReserved,pszAdditionalHeaders);
2453}
2454static inline 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 ***/
2458static inline 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 ***/
2462static inline 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
2484typedef IWinInetFileStream *LPWININETFILESTREAM;
2485
2486DEFINE_GUID(IID_IWinInetFileStream, 0xf134c4b7, 0xb1f8, 0x4e75, 0xb8,0x86, 0x74,0xb9,0x09,0x43,0xbe,0xcb);
2487#if defined(__cplusplus) && !defined(CINTERFACE)
2488MIDL_INTERFACE("f134c4b7-b1f8-4e75-b886-74b90943becb")
2489IWinInetFileStream : 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
2503typedef 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
2531interface 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 ***/
2546static inline HRESULT IWinInetFileStream_QueryInterface(IWinInetFileStream* This,REFIID riid,void **ppvObject) {
2547    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
2548}
2549static inline ULONG IWinInetFileStream_AddRef(IWinInetFileStream* This) {
2550    return This->lpVtbl->AddRef(This);
2551}
2552static inline ULONG IWinInetFileStream_Release(IWinInetFileStream* This) {
2553    return This->lpVtbl->Release(This);
2554}
2555/*** IWinInetFileStream methods ***/
2556static inline HRESULT IWinInetFileStream_SetHandleForUnlock(IWinInetFileStream* This,DWORD_PTR hWinInetLockHandle,DWORD_PTR dwReserved) {
2557    return This->lpVtbl->SetHandleForUnlock(This,hWinInetLockHandle,dwReserved);
2558}
2559static inline 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
2581typedef IWindowForBindingUI *LPWINDOWFORBINDINGUI;
2582
2583DEFINE_GUID(IID_IWindowForBindingUI, 0x79eac9d5, 0xbafa, 0x11ce, 0x8c,0x82, 0x00,0xaa,0x00,0x4b,0xa9,0x0b);
2584#if defined(__cplusplus) && !defined(CINTERFACE)
2585MIDL_INTERFACE("79eac9d5-bafa-11ce-8c82-00aa004ba90b")
2586IWindowForBindingUI : 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
2597typedef 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
2621interface 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 ***/
2635static inline HRESULT IWindowForBindingUI_QueryInterface(IWindowForBindingUI* This,REFIID riid,void **ppvObject) {
2636    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
2637}
2638static inline ULONG IWindowForBindingUI_AddRef(IWindowForBindingUI* This) {
2639    return This->lpVtbl->AddRef(This);
2640}
2641static inline ULONG IWindowForBindingUI_Release(IWindowForBindingUI* This) {
2642    return This->lpVtbl->Release(This);
2643}
2644/*** IWindowForBindingUI methods ***/
2645static inline 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
2667typedef ICodeInstall *LPCODEINSTALL;
2668
2669typedef enum __WIDL_urlmon_generated_name_00000018 {
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
2682DEFINE_GUID(IID_ICodeInstall, 0x79eac9d1, 0xbaf9, 0x11ce, 0x8c,0x82, 0x00,0xaa,0x00,0x4b,0xa9,0x0b);
2683#if defined(__cplusplus) && !defined(CINTERFACE)
2684MIDL_INTERFACE("79eac9d1-baf9-11ce-8c82-00aa004ba90b")
2685ICodeInstall : 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
2698typedef 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
2730interface 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 ***/
2746static inline HRESULT ICodeInstall_QueryInterface(ICodeInstall* This,REFIID riid,void **ppvObject) {
2747    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
2748}
2749static inline ULONG ICodeInstall_AddRef(ICodeInstall* This) {
2750    return This->lpVtbl->AddRef(This);
2751}
2752static inline ULONG ICodeInstall_Release(ICodeInstall* This) {
2753    return This->lpVtbl->Release(This);
2754}
2755/*** IWindowForBindingUI methods ***/
2756static inline HRESULT ICodeInstall_GetWindow(ICodeInstall* This,REFGUID rguidReason,HWND *phwnd) {
2757    return This->lpVtbl->GetWindow(This,rguidReason,phwnd);
2758}
2759/*** ICodeInstall methods ***/
2760static inline 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
2784typedef enum __WIDL_urlmon_generated_name_00000019 {
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
2810typedef enum __WIDL_urlmon_generated_name_0000001A {
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
2818DEFINE_GUID(IID_IUri, 0xa39ee748, 0x6a27, 0x4817, 0xa6,0xf2, 0x13,0x91,0x4b,0xef,0x58,0x90);
2819#if defined(__cplusplus) && !defined(CINTERFACE)
2820MIDL_INTERFACE("a39ee748-6a27-4817-a6f2-13914bef5890")
2821IUri : 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
2911typedef 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
3038interface 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 ***/
3076static inline HRESULT IUri_QueryInterface(IUri* This,REFIID riid,void **ppvObject) {
3077    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
3078}
3079static inline ULONG IUri_AddRef(IUri* This) {
3080    return This->lpVtbl->AddRef(This);
3081}
3082static inline ULONG IUri_Release(IUri* This) {
3083    return This->lpVtbl->Release(This);
3084}
3085/*** IUri methods ***/
3086static inline HRESULT IUri_GetPropertyBSTR(IUri* This,Uri_PROPERTY uriProp,BSTR *pbstrProperty,DWORD dwFlags) {
3087    return This->lpVtbl->GetPropertyBSTR(This,uriProp,pbstrProperty,dwFlags);
3088}
3089static inline HRESULT IUri_GetPropertyLength(IUri* This,Uri_PROPERTY uriProp,DWORD *pcchProperty,DWORD dwFlags) {
3090    return This->lpVtbl->GetPropertyLength(This,uriProp,pcchProperty,dwFlags);
3091}
3092static inline HRESULT IUri_GetPropertyDWORD(IUri* This,Uri_PROPERTY uriProp,DWORD *pdwProperty,DWORD dwFlags) {
3093    return This->lpVtbl->GetPropertyDWORD(This,uriProp,pdwProperty,dwFlags);
3094}
3095static inline HRESULT IUri_HasProperty(IUri* This,Uri_PROPERTY uriProp,WINBOOL *pfHasProperty) {
3096    return This->lpVtbl->HasProperty(This,uriProp,pfHasProperty);
3097}
3098static inline HRESULT IUri_GetAbsoluteUri(IUri* This,BSTR *pbstrAbsoluteUri) {
3099    return This->lpVtbl->GetAbsoluteUri(This,pbstrAbsoluteUri);
3100}
3101static inline HRESULT IUri_GetAuthority(IUri* This,BSTR *pbstrAuthority) {
3102    return This->lpVtbl->GetAuthority(This,pbstrAuthority);
3103}
3104static inline HRESULT IUri_GetDisplayUri(IUri* This,BSTR *pbstrDisplayString) {
3105    return This->lpVtbl->GetDisplayUri(This,pbstrDisplayString);
3106}
3107static inline HRESULT IUri_GetDomain(IUri* This,BSTR *pbstrDomain) {
3108    return This->lpVtbl->GetDomain(This,pbstrDomain);
3109}
3110static inline HRESULT IUri_GetExtension(IUri* This,BSTR *pbstrExtension) {
3111    return This->lpVtbl->GetExtension(This,pbstrExtension);
3112}
3113static inline HRESULT IUri_GetFragment(IUri* This,BSTR *pbstrFragment) {
3114    return This->lpVtbl->GetFragment(This,pbstrFragment);
3115}
3116static inline HRESULT IUri_GetHost(IUri* This,BSTR *pbstrHost) {
3117    return This->lpVtbl->GetHost(This,pbstrHost);
3118}
3119static inline HRESULT IUri_GetPassword(IUri* This,BSTR *pbstrPassword) {
3120    return This->lpVtbl->GetPassword(This,pbstrPassword);
3121}
3122static inline HRESULT IUri_GetPath(IUri* This,BSTR *pbstrPath) {
3123    return This->lpVtbl->GetPath(This,pbstrPath);
3124}
3125static inline HRESULT IUri_GetPathAndQuery(IUri* This,BSTR *pbstrPathAndQuery) {
3126    return This->lpVtbl->GetPathAndQuery(This,pbstrPathAndQuery);
3127}
3128static inline HRESULT IUri_GetQuery(IUri* This,BSTR *pbstrQuery) {
3129    return This->lpVtbl->GetQuery(This,pbstrQuery);
3130}
3131static inline HRESULT IUri_GetRawUri(IUri* This,BSTR *pbstrRawUri) {
3132    return This->lpVtbl->GetRawUri(This,pbstrRawUri);
3133}
3134static inline HRESULT IUri_GetSchemeName(IUri* This,BSTR *pbstrSchemeName) {
3135    return This->lpVtbl->GetSchemeName(This,pbstrSchemeName);
3136}
3137static inline HRESULT IUri_GetUserInfo(IUri* This,BSTR *pbstrUserInfo) {
3138    return This->lpVtbl->GetUserInfo(This,pbstrUserInfo);
3139}
3140static inline HRESULT IUri_GetUserName(IUri* This,BSTR *pbstrUserName) {
3141    return This->lpVtbl->GetUserName(This,pbstrUserName);
3142}
3143static inline HRESULT IUri_GetHostType(IUri* This,DWORD *pdwHostType) {
3144    return This->lpVtbl->GetHostType(This,pdwHostType);
3145}
3146static inline HRESULT IUri_GetPort(IUri* This,DWORD *pdwPort) {
3147    return This->lpVtbl->GetPort(This,pdwPort);
3148}
3149static inline HRESULT IUri_GetScheme(IUri* This,DWORD *pdwScheme) {
3150    return This->lpVtbl->GetScheme(This,pdwScheme);
3151}
3152static inline HRESULT IUri_GetZone(IUri* This,DWORD *pdwZone) {
3153    return This->lpVtbl->GetZone(This,pdwZone);
3154}
3155static inline HRESULT IUri_GetProperties(IUri* This,LPDWORD pdwFlags) {
3156    return This->lpVtbl->GetProperties(This,pdwFlags);
3157}
3158static inline 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
3170STDAPI CreateUri(LPCWSTR pwzURI, DWORD dwFlags, DWORD_PTR dwReserved, IUri **ppURI);
3171STDAPI CreateUriWithFragment(
3172LPCWSTR pwzURI, LPCWSTR pwzFragment, DWORD dwFlags, DWORD_PTR dwReserved, IUri **ppURI);
3173#endif
3174#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
3175STDAPI 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
3244DEFINE_GUID(IID_IUriContainer, 0xa158a630, 0xed6f, 0x45fb, 0xb9,0x87, 0xf6,0x86,0x76,0xf5,0x77,0x52);
3245#if defined(__cplusplus) && !defined(CINTERFACE)
3246MIDL_INTERFACE("a158a630-ed6f-45fb-b987-f68676f57752")
3247IUriContainer : 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
3257typedef 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
3280interface 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 ***/
3294static inline HRESULT IUriContainer_QueryInterface(IUriContainer* This,REFIID riid,void **ppvObject) {
3295    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
3296}
3297static inline ULONG IUriContainer_AddRef(IUriContainer* This) {
3298    return This->lpVtbl->AddRef(This);
3299}
3300static inline ULONG IUriContainer_Release(IUriContainer* This) {
3301    return This->lpVtbl->Release(This);
3302}
3303/*** IUriContainer methods ***/
3304static inline 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
3322DEFINE_GUID(IID_IUriBuilder, 0x4221b2e1, 0x8955, 0x46c0, 0xbd,0x5b, 0xde,0x98,0x97,0x56,0x5d,0xe7);
3323#if defined(__cplusplus) && !defined(CINTERFACE)
3324MIDL_INTERFACE("4221b2e1-8955-46c0-bd5b-de9897565de7")
3325IUriBuilder : 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
3419typedef 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
3548interface 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 ***/
3584static inline HRESULT IUriBuilder_QueryInterface(IUriBuilder* This,REFIID riid,void **ppvObject) {
3585    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
3586}
3587static inline ULONG IUriBuilder_AddRef(IUriBuilder* This) {
3588    return This->lpVtbl->AddRef(This);
3589}
3590static inline ULONG IUriBuilder_Release(IUriBuilder* This) {
3591    return This->lpVtbl->Release(This);
3592}
3593/*** IUriBuilder methods ***/
3594static inline HRESULT IUriBuilder_CreateUriSimple(IUriBuilder* This,DWORD dwAllowEncodingPropertyMask,DWORD_PTR dwReserved,IUri **ppIUri) {
3595    return This->lpVtbl->CreateUriSimple(This,dwAllowEncodingPropertyMask,dwReserved,ppIUri);
3596}
3597static inline 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}
3600static inline 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}
3603static inline HRESULT IUriBuilder_GetIUri(IUriBuilder* This,IUri **ppIUri) {
3604    return This->lpVtbl->GetIUri(This,ppIUri);
3605}
3606static inline HRESULT IUriBuilder_SetIUri(IUriBuilder* This,IUri *pIUri) {
3607    return This->lpVtbl->SetIUri(This,pIUri);
3608}
3609static inline HRESULT IUriBuilder_GetFragment(IUriBuilder* This,DWORD *pcchFragment,LPCWSTR *ppwzFragment) {
3610    return This->lpVtbl->GetFragment(This,pcchFragment,ppwzFragment);
3611}
3612static inline HRESULT IUriBuilder_GetHost(IUriBuilder* This,DWORD *pcchHost,LPCWSTR *ppwzHost) {
3613    return This->lpVtbl->GetHost(This,pcchHost,ppwzHost);
3614}
3615static inline HRESULT IUriBuilder_GetPassword(IUriBuilder* This,DWORD *pcchPassword,LPCWSTR *ppwzPassword) {
3616    return This->lpVtbl->GetPassword(This,pcchPassword,ppwzPassword);
3617}
3618static inline HRESULT IUriBuilder_GetPath(IUriBuilder* This,DWORD *pcchPath,LPCWSTR *ppwzPath) {
3619    return This->lpVtbl->GetPath(This,pcchPath,ppwzPath);
3620}
3621static inline HRESULT IUriBuilder_GetPort(IUriBuilder* This,WINBOOL *pfHasPort,DWORD *pdwPort) {
3622    return This->lpVtbl->GetPort(This,pfHasPort,pdwPort);
3623}
3624static inline HRESULT IUriBuilder_GetQuery(IUriBuilder* This,DWORD *pcchQuery,LPCWSTR *ppwzQuery) {
3625    return This->lpVtbl->GetQuery(This,pcchQuery,ppwzQuery);
3626}
3627static inline HRESULT IUriBuilder_GetSchemeName(IUriBuilder* This,DWORD *pcchSchemeName,LPCWSTR *ppwzSchemeName) {
3628    return This->lpVtbl->GetSchemeName(This,pcchSchemeName,ppwzSchemeName);
3629}
3630static inline HRESULT IUriBuilder_GetUserName(IUriBuilder* This,DWORD *pcchUserName,LPCWSTR *ppwzUserName) {
3631    return This->lpVtbl->GetUserName(This,pcchUserName,ppwzUserName);
3632}
3633static inline HRESULT IUriBuilder_SetFragment(IUriBuilder* This,LPCWSTR pwzNewValue) {
3634    return This->lpVtbl->SetFragment(This,pwzNewValue);
3635}
3636static inline HRESULT IUriBuilder_SetHost(IUriBuilder* This,LPCWSTR pwzNewValue) {
3637    return This->lpVtbl->SetHost(This,pwzNewValue);
3638}
3639static inline HRESULT IUriBuilder_SetPassword(IUriBuilder* This,LPCWSTR pwzNewValue) {
3640    return This->lpVtbl->SetPassword(This,pwzNewValue);
3641}
3642static inline HRESULT IUriBuilder_SetPath(IUriBuilder* This,LPCWSTR pwzNewValue) {
3643    return This->lpVtbl->SetPath(This,pwzNewValue);
3644}
3645static inline HRESULT IUriBuilder_SetPort(IUriBuilder* This,WINBOOL fHasPort,DWORD dwNewValue) {
3646    return This->lpVtbl->SetPort(This,fHasPort,dwNewValue);
3647}
3648static inline HRESULT IUriBuilder_SetQuery(IUriBuilder* This,LPCWSTR pwzNewValue) {
3649    return This->lpVtbl->SetQuery(This,pwzNewValue);
3650}
3651static inline HRESULT IUriBuilder_SetSchemeName(IUriBuilder* This,LPCWSTR pwzNewValue) {
3652    return This->lpVtbl->SetSchemeName(This,pwzNewValue);
3653}
3654static inline HRESULT IUriBuilder_SetUserName(IUriBuilder* This,LPCWSTR pwzNewValue) {
3655    return This->lpVtbl->SetUserName(This,pwzNewValue);
3656}
3657static inline HRESULT IUriBuilder_RemoveProperties(IUriBuilder* This,DWORD dwPropertyMask) {
3658    return This->lpVtbl->RemoveProperties(This,dwPropertyMask);
3659}
3660static inline 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
3678DEFINE_GUID(IID_IUriBuilderFactory, 0xe982ce48, 0x0b96, 0x440c, 0xbc,0x37, 0x0c,0x86,0x9b,0x27,0xa2,0x9e);
3679#if defined(__cplusplus) && !defined(CINTERFACE)
3680MIDL_INTERFACE("e982ce48-0b96-440c-bc37-0c869b27a29e")
3681IUriBuilderFactory : 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
3698typedef 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
3729interface 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 ***/
3744static inline HRESULT IUriBuilderFactory_QueryInterface(IUriBuilderFactory* This,REFIID riid,void **ppvObject) {
3745    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
3746}
3747static inline ULONG IUriBuilderFactory_AddRef(IUriBuilderFactory* This) {
3748    return This->lpVtbl->AddRef(This);
3749}
3750static inline ULONG IUriBuilderFactory_Release(IUriBuilderFactory* This) {
3751    return This->lpVtbl->Release(This);
3752}
3753/*** IUriBuilderFactory methods ***/
3754static inline HRESULT IUriBuilderFactory_CreateIUriBuilder(IUriBuilderFactory* This,DWORD dwFlags,DWORD_PTR dwReserved,IUriBuilder **ppIUriBuilder) {
3755    return This->lpVtbl->CreateIUriBuilder(This,dwFlags,dwReserved,ppIUriBuilder);
3756}
3757static inline 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
3769STDAPI 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
3783typedef IWinInetInfo *LPWININETINFO;
3784DEFINE_GUID(IID_IWinInetInfo, 0x79eac9d6, 0xbafa, 0x11ce, 0x8c,0x82, 0x00,0xaa,0x00,0x4b,0xa9,0x0b);
3785#if defined(__cplusplus) && !defined(CINTERFACE)
3786MIDL_INTERFACE("79eac9d6-bafa-11ce-8c82-00aa004ba90b")
3787IWinInetInfo : 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
3799typedef 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
3824interface 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 ***/
3838static inline HRESULT IWinInetInfo_QueryInterface(IWinInetInfo* This,REFIID riid,void **ppvObject) {
3839    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
3840}
3841static inline ULONG IWinInetInfo_AddRef(IWinInetInfo* This) {
3842    return This->lpVtbl->AddRef(This);
3843}
3844static inline ULONG IWinInetInfo_Release(IWinInetInfo* This) {
3845    return This->lpVtbl->Release(This);
3846}
3847/*** IWinInetInfo methods ***/
3848static inline 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
3856HRESULT STDMETHODCALLTYPE IWinInetInfo_RemoteQueryOption_Proxy(
3857    IWinInetInfo* This,
3858    DWORD dwOption,
3859    BYTE *pBuffer,
3860    DWORD *pcbBuf);
3861void __RPC_STUB IWinInetInfo_RemoteQueryOption_Stub(
3862    IRpcStubBuffer* This,
3863    IRpcChannelBuffer* pRpcChannelBuffer,
3864    PRPC_MESSAGE pRpcMessage,
3865    DWORD* pdwStubPhase);
3866HRESULT CALLBACK IWinInetInfo_QueryOption_Proxy(
3867    IWinInetInfo* This,
3868    DWORD dwOption,
3869    LPVOID pBuffer,
3870    DWORD *pcbBuf);
3871HRESULT __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
3892typedef IHttpSecurity *LPHTTPSECURITY;
3893
3894DEFINE_GUID(IID_IHttpSecurity, 0x79eac9d7, 0xbafa, 0x11ce, 0x8c,0x82, 0x00,0xaa,0x00,0x4b,0xa9,0x0b);
3895#if defined(__cplusplus) && !defined(CINTERFACE)
3896MIDL_INTERFACE("79eac9d7-bafa-11ce-8c82-00aa004ba90b")
3897IHttpSecurity : 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
3907typedef 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
3936interface 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 ***/
3952static inline HRESULT IHttpSecurity_QueryInterface(IHttpSecurity* This,REFIID riid,void **ppvObject) {
3953    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
3954}
3955static inline ULONG IHttpSecurity_AddRef(IHttpSecurity* This) {
3956    return This->lpVtbl->AddRef(This);
3957}
3958static inline ULONG IHttpSecurity_Release(IHttpSecurity* This) {
3959    return This->lpVtbl->Release(This);
3960}
3961/*** IWindowForBindingUI methods ***/
3962static inline HRESULT IHttpSecurity_GetWindow(IHttpSecurity* This,REFGUID rguidReason,HWND *phwnd) {
3963    return This->lpVtbl->GetWindow(This,rguidReason,phwnd);
3964}
3965/*** IHttpSecurity methods ***/
3966static inline 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
3988typedef IWinInetHttpInfo *LPWININETHTTPINFO;
3989
3990DEFINE_GUID(IID_IWinInetHttpInfo, 0x79eac9d8, 0xbafa, 0x11ce, 0x8c,0x82, 0x00,0xaa,0x00,0x4b,0xa9,0x0b);
3991#if defined(__cplusplus) && !defined(CINTERFACE)
3992MIDL_INTERFACE("79eac9d8-bafa-11ce-8c82-00aa004ba90b")
3993IWinInetHttpInfo : 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
4007typedef 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
4041interface 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 ***/
4057static inline HRESULT IWinInetHttpInfo_QueryInterface(IWinInetHttpInfo* This,REFIID riid,void **ppvObject) {
4058    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
4059}
4060static inline ULONG IWinInetHttpInfo_AddRef(IWinInetHttpInfo* This) {
4061    return This->lpVtbl->AddRef(This);
4062}
4063static inline ULONG IWinInetHttpInfo_Release(IWinInetHttpInfo* This) {
4064    return This->lpVtbl->Release(This);
4065}
4066/*** IWinInetInfo methods ***/
4067static inline HRESULT IWinInetHttpInfo_QueryOption(IWinInetHttpInfo* This,DWORD dwOption,LPVOID pBuffer,DWORD *pcbBuf) {
4068    return This->lpVtbl->QueryOption(This,dwOption,pBuffer,pcbBuf);
4069}
4070/*** IWinInetHttpInfo methods ***/
4071static inline 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
4079HRESULT STDMETHODCALLTYPE IWinInetHttpInfo_RemoteQueryInfo_Proxy(
4080    IWinInetHttpInfo* This,
4081    DWORD dwOption,
4082    BYTE *pBuffer,
4083    DWORD *pcbBuf,
4084    DWORD *pdwFlags,
4085    DWORD *pdwReserved);
4086void __RPC_STUB IWinInetHttpInfo_RemoteQueryInfo_Stub(
4087    IRpcStubBuffer* This,
4088    IRpcChannelBuffer* pRpcChannelBuffer,
4089    PRPC_MESSAGE pRpcMessage,
4090    DWORD* pdwStubPhase);
4091HRESULT CALLBACK IWinInetHttpInfo_QueryInfo_Proxy(
4092    IWinInetHttpInfo* This,
4093    DWORD dwOption,
4094    LPVOID pBuffer,
4095    DWORD *pcbBuf,
4096    DWORD *pdwFlags,
4097    DWORD *pdwReserved);
4098HRESULT __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
4118DEFINE_GUID(IID_IWinInetHttpTimeouts, 0xf286fa56, 0xc1fd, 0x4270, 0x8e,0x67, 0xb3,0xeb,0x79,0x0a,0x81,0xe8);
4119#if defined(__cplusplus) && !defined(CINTERFACE)
4120MIDL_INTERFACE("f286fa56-c1fd-4270-8e67-b3eb790a81e8")
4121IWinInetHttpTimeouts : 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
4133typedef 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
4158interface 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 ***/
4172static inline HRESULT IWinInetHttpTimeouts_QueryInterface(IWinInetHttpTimeouts* This,REFIID riid,void **ppvObject) {
4173    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
4174}
4175static inline ULONG IWinInetHttpTimeouts_AddRef(IWinInetHttpTimeouts* This) {
4176    return This->lpVtbl->AddRef(This);
4177}
4178static inline ULONG IWinInetHttpTimeouts_Release(IWinInetHttpTimeouts* This) {
4179    return This->lpVtbl->Release(This);
4180}
4181/*** IWinInetHttpTimeouts methods ***/
4182static inline 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
4205typedef IWinInetCacheHints *LPWININETCACHEHINTS;
4206
4207DEFINE_GUID(IID_IWinInetCacheHints, 0xdd1ec3b3, 0x8391, 0x4fdb, 0xa9,0xe6, 0x34,0x7c,0x3c,0xaa,0xa7,0xdd);
4208#if defined(__cplusplus) && !defined(CINTERFACE)
4209MIDL_INTERFACE("dd1ec3b3-8391-4fdb-a9e6-347c3caaa7dd")
4210IWinInetCacheHints : 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
4224typedef 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
4251interface 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 ***/
4265static inline HRESULT IWinInetCacheHints_QueryInterface(IWinInetCacheHints* This,REFIID riid,void **ppvObject) {
4266    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
4267}
4268static inline ULONG IWinInetCacheHints_AddRef(IWinInetCacheHints* This) {
4269    return This->lpVtbl->AddRef(This);
4270}
4271static inline ULONG IWinInetCacheHints_Release(IWinInetCacheHints* This) {
4272    return This->lpVtbl->Release(This);
4273}
4274/*** IWinInetCacheHints methods ***/
4275static inline 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
4299typedef IWinInetCacheHints2 *LPWININETCACHEHINTS2;
4300
4301DEFINE_GUID(IID_IWinInetCacheHints2, 0x7857aeac, 0xd31f, 0x49bf, 0x88,0x4e, 0xdd,0x46,0xdf,0x36,0x78,0x0a);
4302#if defined(__cplusplus) && !defined(CINTERFACE)
4303MIDL_INTERFACE("7857aeac-d31f-49bf-884e-dd46df36780a")
4304IWinInetCacheHints2 : 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
4318typedef 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
4354interface 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 ***/
4370static inline HRESULT IWinInetCacheHints2_QueryInterface(IWinInetCacheHints2* This,REFIID riid,void **ppvObject) {
4371    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
4372}
4373static inline ULONG IWinInetCacheHints2_AddRef(IWinInetCacheHints2* This) {
4374    return This->lpVtbl->AddRef(This);
4375}
4376static inline ULONG IWinInetCacheHints2_Release(IWinInetCacheHints2* This) {
4377    return This->lpVtbl->Release(This);
4378}
4379/*** IWinInetCacheHints methods ***/
4380static inline 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 ***/
4384static inline 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
4404EXTERN_C const GUID SID_BindHost;
4405
4406/*****************************************************************************
4407 * IBindHost interface
4408 */
4409#ifndef __IBindHost_INTERFACE_DEFINED__
4410#define __IBindHost_INTERFACE_DEFINED__
4411
4412typedef IBindHost *LPBINDHOST;
4413
4414DEFINE_GUID(IID_IBindHost, 0xfc4801a1, 0x2ba9, 0x11cf, 0xa2,0x29, 0x00,0xaa,0x00,0x3d,0x73,0x52);
4415#if defined(__cplusplus) && !defined(CINTERFACE)
4416MIDL_INTERFACE("fc4801a1-2ba9-11cf-a229-00aa003d7352")
4417IBindHost : 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
4444typedef 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
4486interface 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 ***/
4502static inline HRESULT IBindHost_QueryInterface(IBindHost* This,REFIID riid,void **ppvObject) {
4503    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
4504}
4505static inline ULONG IBindHost_AddRef(IBindHost* This) {
4506    return This->lpVtbl->AddRef(This);
4507}
4508static inline ULONG IBindHost_Release(IBindHost* This) {
4509    return This->lpVtbl->Release(This);
4510}
4511/*** IBindHost methods ***/
4512static inline HRESULT IBindHost_CreateMoniker(IBindHost* This,LPOLESTR szName,IBindCtx *pBC,IMoniker **ppmk,DWORD dwReserved) {
4513    return This->lpVtbl->CreateMoniker(This,szName,pBC,ppmk,dwReserved);
4514}
4515static inline 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}
4518static inline 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
4526HRESULT STDMETHODCALLTYPE IBindHost_RemoteMonikerBindToStorage_Proxy(
4527    IBindHost* This,
4528    IMoniker *pMk,
4529    IBindCtx *pBC,
4530    IBindStatusCallback *pBSC,
4531    REFIID riid,
4532    IUnknown **ppvObj);
4533void __RPC_STUB IBindHost_RemoteMonikerBindToStorage_Stub(
4534    IRpcStubBuffer* This,
4535    IRpcChannelBuffer* pRpcChannelBuffer,
4536    PRPC_MESSAGE pRpcMessage,
4537    DWORD* pdwStubPhase);
4538HRESULT STDMETHODCALLTYPE IBindHost_RemoteMonikerBindToObject_Proxy(
4539    IBindHost* This,
4540    IMoniker *pMk,
4541    IBindCtx *pBC,
4542    IBindStatusCallback *pBSC,
4543    REFIID riid,
4544    IUnknown **ppvObj);
4545void __RPC_STUB IBindHost_RemoteMonikerBindToObject_Stub(
4546    IRpcStubBuffer* This,
4547    IRpcChannelBuffer* pRpcChannelBuffer,
4548    PRPC_MESSAGE pRpcMessage,
4549    DWORD* pdwStubPhase);
4550HRESULT CALLBACK IBindHost_MonikerBindToStorage_Proxy(
4551    IBindHost* This,
4552    IMoniker *pMk,
4553    IBindCtx *pBC,
4554    IBindStatusCallback *pBSC,
4555    REFIID riid,
4556    void **ppvObj);
4557HRESULT __RPC_STUB IBindHost_MonikerBindToStorage_Stub(
4558    IBindHost* This,
4559    IMoniker *pMk,
4560    IBindCtx *pBC,
4561    IBindStatusCallback *pBSC,
4562    REFIID riid,
4563    IUnknown **ppvObj);
4564HRESULT CALLBACK IBindHost_MonikerBindToObject_Proxy(
4565    IBindHost* This,
4566    IMoniker *pMk,
4567    IBindCtx *pBC,
4568    IBindStatusCallback *pBSC,
4569    REFIID riid,
4570    void **ppvObj);
4571HRESULT __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
4587struct IBindStatusCallback;
4588STDAPI HlinkSimpleNavigateToString(LPCWSTR szTarget, LPCWSTR szLocation, LPCWSTR szTargetFrameName, IUnknown *pUnk, IBindCtx *pbc, IBindStatusCallback *, DWORD grfHLNF, DWORD dwReserved);
4589STDAPI HlinkSimpleNavigateToMoniker(IMoniker *pmkTarget, LPCWSTR szLocation, LPCWSTR szTargetFrameName, IUnknown *pUnk, IBindCtx *pbc, IBindStatusCallback *, DWORD grfHLNF, DWORD dwReserved);
4590STDAPI URLOpenStreamA(LPUNKNOWN,LPCSTR,DWORD,LPBINDSTATUSCALLBACK);
4591STDAPI URLOpenStreamW(LPUNKNOWN,LPCWSTR,DWORD,LPBINDSTATUSCALLBACK);
4592STDAPI URLOpenPullStreamA(LPUNKNOWN,LPCSTR,DWORD,LPBINDSTATUSCALLBACK);
4593STDAPI URLOpenPullStreamW(LPUNKNOWN,LPCWSTR,DWORD,LPBINDSTATUSCALLBACK);
4594STDAPI URLDownloadToFileA(LPUNKNOWN,LPCSTR,LPCSTR,DWORD,LPBINDSTATUSCALLBACK);
4595STDAPI URLDownloadToFileW(LPUNKNOWN,LPCWSTR,LPCWSTR,DWORD,LPBINDSTATUSCALLBACK);
4596STDAPI URLDownloadToCacheFileA(LPUNKNOWN, LPCSTR,  LPSTR,  DWORD, DWORD, LPBINDSTATUSCALLBACK);
4597STDAPI URLDownloadToCacheFileW(LPUNKNOWN, LPCWSTR, LPWSTR, DWORD, DWORD, LPBINDSTATUSCALLBACK);
4598STDAPI URLOpenBlockingStreamA(LPUNKNOWN,LPCSTR,LPSTREAM*,DWORD,LPBINDSTATUSCALLBACK);
4599STDAPI 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
4607STDAPI HlinkGoBack(IUnknown *pUnk);
4608STDAPI HlinkGoForward(IUnknown *pUnk);
4609STDAPI HlinkNavigateString(IUnknown *pUnk, LPCWSTR szTarget);
4610STDAPI HlinkNavigateMoniker(IUnknown *pUnk, IMoniker *pmkTarget);
4611
4612#ifndef  _URLMON_NO_ASYNC_PLUGABLE_PROTOCOLS_
4613#ifndef __IInternet_FWD_DEFINED__
4614#define __IInternet_FWD_DEFINED__
4615typedef interface IInternet IInternet;
4616#ifdef __cplusplus
4617interface IInternet;
4618#endif /* __cplusplus */
4619#endif
4620
4621#ifndef __IInternetBindInfo_FWD_DEFINED__
4622#define __IInternetBindInfo_FWD_DEFINED__
4623typedef interface IInternetBindInfo IInternetBindInfo;
4624#ifdef __cplusplus
4625interface IInternetBindInfo;
4626#endif /* __cplusplus */
4627#endif
4628
4629#ifndef __IInternetBindInfoEx_FWD_DEFINED__
4630#define __IInternetBindInfoEx_FWD_DEFINED__
4631typedef interface IInternetBindInfoEx IInternetBindInfoEx;
4632#ifdef __cplusplus
4633interface IInternetBindInfoEx;
4634#endif /* __cplusplus */
4635#endif
4636
4637#ifndef __IInternetProtocolRoot_FWD_DEFINED__
4638#define __IInternetProtocolRoot_FWD_DEFINED__
4639typedef interface IInternetProtocolRoot IInternetProtocolRoot;
4640#ifdef __cplusplus
4641interface IInternetProtocolRoot;
4642#endif /* __cplusplus */
4643#endif
4644
4645#ifndef __IInternetProtocol_FWD_DEFINED__
4646#define __IInternetProtocol_FWD_DEFINED__
4647typedef interface IInternetProtocol IInternetProtocol;
4648#ifdef __cplusplus
4649interface IInternetProtocol;
4650#endif /* __cplusplus */
4651#endif
4652
4653#ifndef __IInternetProtocolEx_FWD_DEFINED__
4654#define __IInternetProtocolEx_FWD_DEFINED__
4655typedef interface IInternetProtocolEx IInternetProtocolEx;
4656#ifdef __cplusplus
4657interface IInternetProtocolEx;
4658#endif /* __cplusplus */
4659#endif
4660
4661#ifndef __IInternetProtocolSink_FWD_DEFINED__
4662#define __IInternetProtocolSink_FWD_DEFINED__
4663typedef interface IInternetProtocolSink IInternetProtocolSink;
4664#ifdef __cplusplus
4665interface IInternetProtocolSink;
4666#endif /* __cplusplus */
4667#endif
4668
4669#ifndef __IInternetProtocolInfo_FWD_DEFINED__
4670#define __IInternetProtocolInfo_FWD_DEFINED__
4671typedef interface IInternetProtocolInfo IInternetProtocolInfo;
4672#ifdef __cplusplus
4673interface IInternetProtocolInfo;
4674#endif /* __cplusplus */
4675#endif
4676
4677#ifndef __IInternetSession_FWD_DEFINED__
4678#define __IInternetSession_FWD_DEFINED__
4679typedef interface IInternetSession IInternetSession;
4680#ifdef __cplusplus
4681interface IInternetSession;
4682#endif /* __cplusplus */
4683#endif
4684
4685#ifndef __IInternetProtocolSinkStackable_FWD_DEFINED__
4686#define __IInternetProtocolSinkStackable_FWD_DEFINED__
4687typedef interface IInternetProtocolSinkStackable IInternetProtocolSinkStackable;
4688#ifdef __cplusplus
4689interface 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
4703typedef IInternet *LPIINTERNET;
4704DEFINE_GUID(IID_IInternet, 0x79eac9e0, 0xbaf9, 0x11ce, 0x8c,0x82, 0x00,0xaa,0x00,0x4b,0xa9,0x0b);
4705#if defined(__cplusplus) && !defined(CINTERFACE)
4706MIDL_INTERFACE("79eac9e0-baf9-11ce-8c82-00aa004ba90b")
4707IInternet : 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
4714typedef 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
4732interface 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 ***/
4744static inline HRESULT IInternet_QueryInterface(IInternet* This,REFIID riid,void **ppvObject) {
4745    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
4746}
4747static inline ULONG IInternet_AddRef(IInternet* This) {
4748    return This->lpVtbl->AddRef(This);
4749}
4750static inline 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
4772typedef IInternetBindInfo *LPIINTERNETBINDINFO;
4773
4774typedef 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
4800DEFINE_GUID(IID_IInternetBindInfo, 0x79eac9e1, 0xbaf9, 0x11ce, 0x8c,0x82, 0x00,0xaa,0x00,0x4b,0xa9,0x0b);
4801#if defined(__cplusplus) && !defined(CINTERFACE)
4802MIDL_INTERFACE("79eac9e1-baf9-11ce-8c82-00aa004ba90b")
4803IInternetBindInfo : 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
4820typedef 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
4851interface 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 ***/
4866static inline HRESULT IInternetBindInfo_QueryInterface(IInternetBindInfo* This,REFIID riid,void **ppvObject) {
4867    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
4868}
4869static inline ULONG IInternetBindInfo_AddRef(IInternetBindInfo* This) {
4870    return This->lpVtbl->AddRef(This);
4871}
4872static inline ULONG IInternetBindInfo_Release(IInternetBindInfo* This) {
4873    return This->lpVtbl->Release(This);
4874}
4875/*** IInternetBindInfo methods ***/
4876static inline HRESULT IInternetBindInfo_GetBindInfo(IInternetBindInfo* This,DWORD *grfBINDF,BINDINFO *pbindinfo) {
4877    return This->lpVtbl->GetBindInfo(This,grfBINDF,pbindinfo);
4878}
4879static inline 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
4901typedef IInternetBindInfoEx *LPIINTERNETBINDINFOEX;
4902
4903DEFINE_GUID(IID_IInternetBindInfoEx, 0xa3e015b7, 0xa82c, 0x4dcd, 0xa1,0x50, 0x56,0x9a,0xee,0xed,0x36,0xab);
4904#if defined(__cplusplus) && !defined(CINTERFACE)
4905MIDL_INTERFACE("a3e015b7-a82c-4dcd-a150-569aeeed36ab")
4906IInternetBindInfoEx : 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
4919typedef 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
4958interface 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 ***/
4975static inline HRESULT IInternetBindInfoEx_QueryInterface(IInternetBindInfoEx* This,REFIID riid,void **ppvObject) {
4976    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
4977}
4978static inline ULONG IInternetBindInfoEx_AddRef(IInternetBindInfoEx* This) {
4979    return This->lpVtbl->AddRef(This);
4980}
4981static inline ULONG IInternetBindInfoEx_Release(IInternetBindInfoEx* This) {
4982    return This->lpVtbl->Release(This);
4983}
4984/*** IInternetBindInfo methods ***/
4985static inline HRESULT IInternetBindInfoEx_GetBindInfo(IInternetBindInfoEx* This,DWORD *grfBINDF,BINDINFO *pbindinfo) {
4986    return This->lpVtbl->GetBindInfo(This,grfBINDF,pbindinfo);
4987}
4988static inline 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 ***/
4992static inline 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
5014typedef IInternetProtocolRoot *LPIINTERNETPROTOCOLROOT;
5015
5016typedef 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;
5033typedef struct _tagPROTOCOLDATA {
5034    DWORD grfFlags;
5035    DWORD dwState;
5036    LPVOID pData;
5037    ULONG cbData;
5038} PROTOCOLDATA;
5039
5040typedef struct _tagStartParam {
5041    IID iid;
5042    IBindCtx *pIBindCtx;
5043    IUnknown *pItf;
5044} StartParam;
5045
5046DEFINE_GUID(IID_IInternetProtocolRoot, 0x79eac9e3, 0xbaf9, 0x11ce, 0x8c,0x82, 0x00,0xaa,0x00,0x4b,0xa9,0x0b);
5047#if defined(__cplusplus) && !defined(CINTERFACE)
5048MIDL_INTERFACE("79eac9e3-baf9-11ce-8c82-00aa004ba90b")
5049IInternetProtocolRoot : 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
5079typedef 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
5125interface 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 ***/
5144static inline HRESULT IInternetProtocolRoot_QueryInterface(IInternetProtocolRoot* This,REFIID riid,void **ppvObject) {
5145    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
5146}
5147static inline ULONG IInternetProtocolRoot_AddRef(IInternetProtocolRoot* This) {
5148    return This->lpVtbl->AddRef(This);
5149}
5150static inline ULONG IInternetProtocolRoot_Release(IInternetProtocolRoot* This) {
5151    return This->lpVtbl->Release(This);
5152}
5153/*** IInternetProtocolRoot methods ***/
5154static inline 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}
5157static inline HRESULT IInternetProtocolRoot_Continue(IInternetProtocolRoot* This,PROTOCOLDATA *pProtocolData) {
5158    return This->lpVtbl->Continue(This,pProtocolData);
5159}
5160static inline HRESULT IInternetProtocolRoot_Abort(IInternetProtocolRoot* This,HRESULT hrReason,DWORD dwOptions) {
5161    return This->lpVtbl->Abort(This,hrReason,dwOptions);
5162}
5163static inline HRESULT IInternetProtocolRoot_Terminate(IInternetProtocolRoot* This,DWORD dwOptions) {
5164    return This->lpVtbl->Terminate(This,dwOptions);
5165}
5166static inline HRESULT IInternetProtocolRoot_Suspend(IInternetProtocolRoot* This) {
5167    return This->lpVtbl->Suspend(This);
5168}
5169static inline 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
5191typedef IInternetProtocol *LPIINTERNETPROTOCOL;
5192
5193DEFINE_GUID(IID_IInternetProtocol, 0x79eac9e4, 0xbaf9, 0x11ce, 0x8c,0x82, 0x00,0xaa,0x00,0x4b,0xa9,0x0b);
5194#if defined(__cplusplus) && !defined(CINTERFACE)
5195MIDL_INTERFACE("79eac9e4-baf9-11ce-8c82-00aa004ba90b")
5196IInternetProtocol : 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
5219typedef 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
5285interface 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 ***/
5309static inline HRESULT IInternetProtocol_QueryInterface(IInternetProtocol* This,REFIID riid,void **ppvObject) {
5310    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
5311}
5312static inline ULONG IInternetProtocol_AddRef(IInternetProtocol* This) {
5313    return This->lpVtbl->AddRef(This);
5314}
5315static inline ULONG IInternetProtocol_Release(IInternetProtocol* This) {
5316    return This->lpVtbl->Release(This);
5317}
5318/*** IInternetProtocolRoot methods ***/
5319static inline 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}
5322static inline HRESULT IInternetProtocol_Continue(IInternetProtocol* This,PROTOCOLDATA *pProtocolData) {
5323    return This->lpVtbl->Continue(This,pProtocolData);
5324}
5325static inline HRESULT IInternetProtocol_Abort(IInternetProtocol* This,HRESULT hrReason,DWORD dwOptions) {
5326    return This->lpVtbl->Abort(This,hrReason,dwOptions);
5327}
5328static inline HRESULT IInternetProtocol_Terminate(IInternetProtocol* This,DWORD dwOptions) {
5329    return This->lpVtbl->Terminate(This,dwOptions);
5330}
5331static inline HRESULT IInternetProtocol_Suspend(IInternetProtocol* This) {
5332    return This->lpVtbl->Suspend(This);
5333}
5334static inline HRESULT IInternetProtocol_Resume(IInternetProtocol* This) {
5335    return This->lpVtbl->Resume(This);
5336}
5337/*** IInternetProtocol methods ***/
5338static inline HRESULT IInternetProtocol_Read(IInternetProtocol* This,void *pv,ULONG cb,ULONG *pcbRead) {
5339    return This->lpVtbl->Read(This,pv,cb,pcbRead);
5340}
5341static inline HRESULT IInternetProtocol_Seek(IInternetProtocol* This,LARGE_INTEGER dlibMove,DWORD dwOrigin,ULARGE_INTEGER *plibNewPosition) {
5342    return This->lpVtbl->Seek(This,dlibMove,dwOrigin,plibNewPosition);
5343}
5344static inline HRESULT IInternetProtocol_LockRequest(IInternetProtocol* This,DWORD dwOptions) {
5345    return This->lpVtbl->LockRequest(This,dwOptions);
5346}
5347static inline 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
5370DEFINE_GUID(IID_IInternetProtocolEx, 0xc7a98e66, 0x1010, 0x492c, 0xa1,0xc8, 0xc8,0x09,0xe1,0xf7,0x59,0x05);
5371#if defined(__cplusplus) && !defined(CINTERFACE)
5372MIDL_INTERFACE("c7a98e66-1010-492c-a1c8-c809e1f75905")
5373IInternetProtocolEx : 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
5387typedef 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
5462interface 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 ***/
5488static inline HRESULT IInternetProtocolEx_QueryInterface(IInternetProtocolEx* This,REFIID riid,void **ppvObject) {
5489    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
5490}
5491static inline ULONG IInternetProtocolEx_AddRef(IInternetProtocolEx* This) {
5492    return This->lpVtbl->AddRef(This);
5493}
5494static inline ULONG IInternetProtocolEx_Release(IInternetProtocolEx* This) {
5495    return This->lpVtbl->Release(This);
5496}
5497/*** IInternetProtocolRoot methods ***/
5498static inline 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}
5501static inline HRESULT IInternetProtocolEx_Continue(IInternetProtocolEx* This,PROTOCOLDATA *pProtocolData) {
5502    return This->lpVtbl->Continue(This,pProtocolData);
5503}
5504static inline HRESULT IInternetProtocolEx_Abort(IInternetProtocolEx* This,HRESULT hrReason,DWORD dwOptions) {
5505    return This->lpVtbl->Abort(This,hrReason,dwOptions);
5506}
5507static inline HRESULT IInternetProtocolEx_Terminate(IInternetProtocolEx* This,DWORD dwOptions) {
5508    return This->lpVtbl->Terminate(This,dwOptions);
5509}
5510static inline HRESULT IInternetProtocolEx_Suspend(IInternetProtocolEx* This) {
5511    return This->lpVtbl->Suspend(This);
5512}
5513static inline HRESULT IInternetProtocolEx_Resume(IInternetProtocolEx* This) {
5514    return This->lpVtbl->Resume(This);
5515}
5516/*** IInternetProtocol methods ***/
5517static inline HRESULT IInternetProtocolEx_Read(IInternetProtocolEx* This,void *pv,ULONG cb,ULONG *pcbRead) {
5518    return This->lpVtbl->Read(This,pv,cb,pcbRead);
5519}
5520static inline HRESULT IInternetProtocolEx_Seek(IInternetProtocolEx* This,LARGE_INTEGER dlibMove,DWORD dwOrigin,ULARGE_INTEGER *plibNewPosition) {
5521    return This->lpVtbl->Seek(This,dlibMove,dwOrigin,plibNewPosition);
5522}
5523static inline HRESULT IInternetProtocolEx_LockRequest(IInternetProtocolEx* This,DWORD dwOptions) {
5524    return This->lpVtbl->LockRequest(This,dwOptions);
5525}
5526static inline HRESULT IInternetProtocolEx_UnlockRequest(IInternetProtocolEx* This) {
5527    return This->lpVtbl->UnlockRequest(This);
5528}
5529/*** IInternetProtocolEx methods ***/
5530static inline 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
5552typedef IInternetProtocolSink *LPIINTERNETPROTOCOLSINK;
5553
5554DEFINE_GUID(IID_IInternetProtocolSink, 0x79eac9e5, 0xbaf9, 0x11ce, 0x8c,0x82, 0x00,0xaa,0x00,0x4b,0xa9,0x0b);
5555#if defined(__cplusplus) && !defined(CINTERFACE)
5556MIDL_INTERFACE("79eac9e5-baf9-11ce-8c82-00aa004ba90b")
5557IInternetProtocolSink : 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
5581typedef 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
5621interface 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 ***/
5638static inline HRESULT IInternetProtocolSink_QueryInterface(IInternetProtocolSink* This,REFIID riid,void **ppvObject) {
5639    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
5640}
5641static inline ULONG IInternetProtocolSink_AddRef(IInternetProtocolSink* This) {
5642    return This->lpVtbl->AddRef(This);
5643}
5644static inline ULONG IInternetProtocolSink_Release(IInternetProtocolSink* This) {
5645    return This->lpVtbl->Release(This);
5646}
5647/*** IInternetProtocolSink methods ***/
5648static inline HRESULT IInternetProtocolSink_Switch(IInternetProtocolSink* This,PROTOCOLDATA *pProtocolData) {
5649    return This->lpVtbl->Switch(This,pProtocolData);
5650}
5651static inline HRESULT IInternetProtocolSink_ReportProgress(IInternetProtocolSink* This,ULONG ulStatusCode,LPCWSTR szStatusText) {
5652    return This->lpVtbl->ReportProgress(This,ulStatusCode,szStatusText);
5653}
5654static inline HRESULT IInternetProtocolSink_ReportData(IInternetProtocolSink* This,DWORD grfBSCF,ULONG ulProgress,ULONG ulProgressMax) {
5655    return This->lpVtbl->ReportData(This,grfBSCF,ulProgress,ulProgressMax);
5656}
5657static inline 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
5679typedef IInternetProtocolSinkStackable *LPIINTERNETPROTOCOLSINKStackable;
5680
5681DEFINE_GUID(IID_IInternetProtocolSinkStackable, 0x79eac9f0, 0xbaf9, 0x11ce, 0x8c,0x82, 0x00,0xaa,0x00,0x4b,0xa9,0x0b);
5682#if defined(__cplusplus) && !defined(CINTERFACE)
5683MIDL_INTERFACE("79eac9f0-baf9-11ce-8c82-00aa004ba90b")
5684IInternetProtocolSinkStackable : 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
5700typedef 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
5729interface 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 ***/
5745static inline HRESULT IInternetProtocolSinkStackable_QueryInterface(IInternetProtocolSinkStackable* This,REFIID riid,void **ppvObject) {
5746    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
5747}
5748static inline ULONG IInternetProtocolSinkStackable_AddRef(IInternetProtocolSinkStackable* This) {
5749    return This->lpVtbl->AddRef(This);
5750}
5751static inline ULONG IInternetProtocolSinkStackable_Release(IInternetProtocolSinkStackable* This) {
5752    return This->lpVtbl->Release(This);
5753}
5754/*** IInternetProtocolSinkStackable methods ***/
5755static inline HRESULT IInternetProtocolSinkStackable_SwitchSink(IInternetProtocolSinkStackable* This,IInternetProtocolSink *pOIProtSink) {
5756    return This->lpVtbl->SwitchSink(This,pOIProtSink);
5757}
5758static inline HRESULT IInternetProtocolSinkStackable_CommitSwitch(IInternetProtocolSinkStackable* This) {
5759    return This->lpVtbl->CommitSwitch(This);
5760}
5761static inline 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
5783typedef IInternetSession *LPIINTERNETSESSION;
5784
5785typedef enum _tagOIBDG_FLAGS {
5786    OIBDG_APARTMENTTHREADED = 0x100,
5787    OIBDG_DATAONLY = 0x1000
5788} OIBDG_FLAGS;
5789
5790DEFINE_GUID(IID_IInternetSession, 0x79eac9e7, 0xbaf9, 0x11ce, 0x8c,0x82, 0x00,0xaa,0x00,0x4b,0xa9,0x0b);
5791#if defined(__cplusplus) && !defined(CINTERFACE)
5792MIDL_INTERFACE("79eac9e7-baf9-11ce-8c82-00aa004ba90b")
5793IInternetSession : 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
5841typedef 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
5908interface 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 ***/
5928static inline HRESULT IInternetSession_QueryInterface(IInternetSession* This,REFIID riid,void **ppvObject) {
5929    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
5930}
5931static inline ULONG IInternetSession_AddRef(IInternetSession* This) {
5932    return This->lpVtbl->AddRef(This);
5933}
5934static inline ULONG IInternetSession_Release(IInternetSession* This) {
5935    return This->lpVtbl->Release(This);
5936}
5937/*** IInternetSession methods ***/
5938static inline 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}
5941static inline HRESULT IInternetSession_UnregisterNameSpace(IInternetSession* This,IClassFactory *pCF,LPCWSTR pszProtocol) {
5942    return This->lpVtbl->UnregisterNameSpace(This,pCF,pszProtocol);
5943}
5944static inline HRESULT IInternetSession_RegisterMimeFilter(IInternetSession* This,IClassFactory *pCF,REFCLSID rclsid,LPCWSTR pwzType) {
5945    return This->lpVtbl->RegisterMimeFilter(This,pCF,rclsid,pwzType);
5946}
5947static inline HRESULT IInternetSession_UnregisterMimeFilter(IInternetSession* This,IClassFactory *pCF,LPCWSTR pwzType) {
5948    return This->lpVtbl->UnregisterMimeFilter(This,pCF,pwzType);
5949}
5950static inline 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}
5953static inline HRESULT IInternetSession_SetSessionOption(IInternetSession* This,DWORD dwOption,LPVOID pBuffer,DWORD dwBufferLength,DWORD dwReserved) {
5954    return This->lpVtbl->SetSessionOption(This,dwOption,pBuffer,dwBufferLength,dwReserved);
5955}
5956static inline 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
5978typedef IInternetThreadSwitch *LPIINTERNETTHREADSWITCH;
5979
5980DEFINE_GUID(IID_IInternetThreadSwitch, 0x79eac9e8, 0xbaf9, 0x11ce, 0x8c,0x82, 0x00,0xaa,0x00,0x4b,0xa9,0x0b);
5981#if defined(__cplusplus) && !defined(CINTERFACE)
5982MIDL_INTERFACE("79eac9e8-baf9-11ce-8c82-00aa004ba90b")
5983IInternetThreadSwitch : 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
5996typedef 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
6021interface 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 ***/
6036static inline HRESULT IInternetThreadSwitch_QueryInterface(IInternetThreadSwitch* This,REFIID riid,void **ppvObject) {
6037    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
6038}
6039static inline ULONG IInternetThreadSwitch_AddRef(IInternetThreadSwitch* This) {
6040    return This->lpVtbl->AddRef(This);
6041}
6042static inline ULONG IInternetThreadSwitch_Release(IInternetThreadSwitch* This) {
6043    return This->lpVtbl->Release(This);
6044}
6045/*** IInternetThreadSwitch methods ***/
6046static inline HRESULT IInternetThreadSwitch_Prepare(IInternetThreadSwitch* This) {
6047    return This->lpVtbl->Prepare(This);
6048}
6049static inline 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
6071typedef IInternetPriority *LPIINTERNETPRIORITY;
6072
6073DEFINE_GUID(IID_IInternetPriority, 0x79eac9eb, 0xbaf9, 0x11ce, 0x8c,0x82, 0x00,0xaa,0x00,0x4b,0xa9,0x0b);
6074#if defined(__cplusplus) && !defined(CINTERFACE)
6075MIDL_INTERFACE("79eac9eb-baf9-11ce-8c82-00aa004ba90b")
6076IInternetPriority : 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
6089typedef 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
6116interface 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 ***/
6131static inline HRESULT IInternetPriority_QueryInterface(IInternetPriority* This,REFIID riid,void **ppvObject) {
6132    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
6133}
6134static inline ULONG IInternetPriority_AddRef(IInternetPriority* This) {
6135    return This->lpVtbl->AddRef(This);
6136}
6137static inline ULONG IInternetPriority_Release(IInternetPriority* This) {
6138    return This->lpVtbl->Release(This);
6139}
6140/*** IInternetPriority methods ***/
6141static inline HRESULT IInternetPriority_SetPriority(IInternetPriority* This,LONG nPriority) {
6142    return This->lpVtbl->SetPriority(This,nPriority);
6143}
6144static inline 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
6166typedef IInternetProtocolInfo *LPIINTERNETPROTOCOLINFO;
6167
6168typedef 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
6190typedef enum _tagPSUACTION {
6191    PSU_DEFAULT = 1,
6192    PSU_SECURITY_URL_ONLY = 2
6193} PSUACTION;
6194
6195typedef 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
6214DEFINE_GUID(IID_IInternetProtocolInfo, 0x79eac9ec, 0xbaf9, 0x11ce, 0x8c,0x82, 0x00,0xaa,0x00,0x4b,0xa9,0x0b);
6215#if defined(__cplusplus) && !defined(CINTERFACE)
6216MIDL_INTERFACE("79eac9ec-baf9-11ce-8c82-00aa004ba90b")
6217IInternetProtocolInfo : 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
6256typedef 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
6311interface 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 ***/
6328static inline HRESULT IInternetProtocolInfo_QueryInterface(IInternetProtocolInfo* This,REFIID riid,void **ppvObject) {
6329    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
6330}
6331static inline ULONG IInternetProtocolInfo_AddRef(IInternetProtocolInfo* This) {
6332    return This->lpVtbl->AddRef(This);
6333}
6334static inline ULONG IInternetProtocolInfo_Release(IInternetProtocolInfo* This) {
6335    return This->lpVtbl->Release(This);
6336}
6337/*** IInternetProtocolInfo methods ***/
6338static inline 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}
6341static inline 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}
6344static inline HRESULT IInternetProtocolInfo_CompareUrl(IInternetProtocolInfo* This,LPCWSTR pwzUrl1,LPCWSTR pwzUrl2,DWORD dwCompareFlags) {
6345    return This->lpVtbl->CompareUrl(This,pwzUrl1,pwzUrl2,dwCompareFlags);
6346}
6347static inline 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
6413STDAPI CoInternetParseUrl(LPCWSTR pwzUrl, PARSEACTION ParseAction, DWORD dwFlags, LPWSTR pszResult, DWORD cchResult, DWORD *pcchResult, DWORD dwReserved);
6414#if (_WIN32_IE >= _WIN32_IE_IE70)
6415STDAPI CoInternetParseIUri(IUri *pIUri, PARSEACTION ParseAction, DWORD dwFlags, LPWSTR pwzResult, DWORD cchResult, DWORD *pcchResult, DWORD_PTR dwReserved);
6416#endif
6417STDAPI CoInternetCombineUrl(LPCWSTR pwzBaseUrl, LPCWSTR pwzRelativeUrl, DWORD dwCombineFlags, LPWSTR pszResult, DWORD cchResult, DWORD *pcchResult, DWORD dwReserved);
6418#if (_WIN32_IE >= _WIN32_IE_IE70)
6419STDAPI CoInternetCombineUrlEx(IUri *pBaseUri, LPCWSTR pwzRelativeUrl, DWORD dwCombineFlags, IUri **ppCombinedUri, DWORD_PTR dwReserved);
6420STDAPI CoInternetCombineIUri (IUri *pBaseUri, IUri *pRelativeUri, DWORD dwCombineFlags, IUri **ppCombinedUri, DWORD_PTR dwReserved);
6421#endif
6422STDAPI CoInternetCompareUrl(LPCWSTR pwzUrl1, LPCWSTR pwzUrl2, DWORD dwFlags);
6423STDAPI CoInternetGetProtocolFlags(LPCWSTR pwzUrl, DWORD *pdwFlags, DWORD dwReserved);
6424STDAPI CoInternetQueryInfo(LPCWSTR pwzUrl, QUERYOPTION QueryOptions, DWORD dwQueryFlags, LPVOID pvBuffer, DWORD cbBuffer, DWORD *pcbBuffer, DWORD dwReserved);
6425STDAPI CoInternetGetSession(DWORD dwSessionMode, IInternetSession **ppIInternetSession, DWORD dwReserved);
6426STDAPI CoInternetGetSecurityUrl(LPCWSTR pwszUrl, LPWSTR *ppwszSecUrl, PSUACTION psuAction, DWORD dwReserved);
6427STDAPI 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)
6429STDAPI 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
6436typedef 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
6487STDAPI CoInternetSetFeatureEnabled(INTERNETFEATURELIST FeatureEntry, DWORD dwFlags, WINBOOL fEnable);
6488STDAPI CoInternetIsFeatureEnabled(INTERNETFEATURELIST FeatureEntry, DWORD dwFlags);
6489STDAPI CoInternetIsFeatureEnabledForUrl(INTERNETFEATURELIST FeatureEntry, DWORD dwFlags, LPCWSTR szURL, IInternetSecurityManager *pSecMgr);
6490STDAPI CoInternetIsFeatureEnabledForIUri(INTERNETFEATURELIST FeatureEntry, DWORD dwFlags, IUri *pIUri, IInternetSecurityManagerEx2 *pSecMgr);
6491STDAPI CoInternetIsFeatureZoneElevationEnabled(LPCWSTR szFromURL, LPCWSTR szToURL, IInternetSecurityManager *pSecMgr, DWORD dwFlags);
6492#endif
6493STDAPI CopyStgMedium(const STGMEDIUM *pcstgmedSrc, STGMEDIUM *pstgmedDest);
6494STDAPI CopyBindInfo(const BINDINFO *pcbiSrc, BINDINFO *pbiDest);
6495STDAPI_(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
6516STDAPI CoInternetCreateSecurityManager(IServiceProvider *pSP, IInternetSecurityManager **ppSM, DWORD dwReserved);
6517STDAPI CoInternetCreateZoneManager(IServiceProvider *pSP, IInternetZoneManager **ppZM, DWORD dwReserved);
6518
6519EXTERN_C const IID CLSID_InternetSecurityManager;
6520EXTERN_C const IID CLSID_InternetZoneManager;
6521
6522#if (_WIN32_IE >= _WIN32_IE_IE60SP2)
6523EXTERN_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
6544DEFINE_GUID(IID_IInternetSecurityMgrSite, 0x79eac9ed, 0xbaf9, 0x11ce, 0x8c,0x82, 0x00,0xaa,0x00,0x4b,0xa9,0x0b);
6545#if defined(__cplusplus) && !defined(CINTERFACE)
6546MIDL_INTERFACE("79eac9ed-baf9-11ce-8c82-00aa004ba90b")
6547IInternetSecurityMgrSite : 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
6560typedef 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
6587interface 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 ***/
6602static inline HRESULT IInternetSecurityMgrSite_QueryInterface(IInternetSecurityMgrSite* This,REFIID riid,void **ppvObject) {
6603    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
6604}
6605static inline ULONG IInternetSecurityMgrSite_AddRef(IInternetSecurityMgrSite* This) {
6606    return This->lpVtbl->AddRef(This);
6607}
6608static inline ULONG IInternetSecurityMgrSite_Release(IInternetSecurityMgrSite* This) {
6609    return This->lpVtbl->Release(This);
6610}
6611/*** IInternetSecurityMgrSite methods ***/
6612static inline HRESULT IInternetSecurityMgrSite_GetWindow(IInternetSecurityMgrSite* This,HWND *phwnd) {
6613    return This->lpVtbl->GetWindow(This,phwnd);
6614}
6615static inline 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
6653typedef enum __WIDL_urlmon_generated_name_0000001B {
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;
6676typedef enum __WIDL_urlmon_generated_name_0000001C {
6677    PUAFOUT_DEFAULT = 0x0,
6678    PUAFOUT_ISLOCKZONEPOLICY = 0x1
6679} PUAFOUT;
6680
6681
6682typedef enum __WIDL_urlmon_generated_name_0000001D {
6683    SZM_CREATE = 0x0,
6684    SZM_DELETE = 0x1
6685} SZM_FLAGS;
6686
6687DEFINE_GUID(IID_IInternetSecurityManager, 0x79eac9ee, 0xbaf9, 0x11ce, 0x8c,0x82, 0x00,0xaa,0x00,0x4b,0xa9,0x0b);
6688#if defined(__cplusplus) && !defined(CINTERFACE)
6689MIDL_INTERFACE("79eac9ee-baf9-11ce-8c82-00aa004ba90b")
6690IInternetSecurityManager : 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
6743typedef 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
6816interface 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 ***/
6837static inline HRESULT IInternetSecurityManager_QueryInterface(IInternetSecurityManager* This,REFIID riid,void **ppvObject) {
6838    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
6839}
6840static inline ULONG IInternetSecurityManager_AddRef(IInternetSecurityManager* This) {
6841    return This->lpVtbl->AddRef(This);
6842}
6843static inline ULONG IInternetSecurityManager_Release(IInternetSecurityManager* This) {
6844    return This->lpVtbl->Release(This);
6845}
6846/*** IInternetSecurityManager methods ***/
6847static inline HRESULT IInternetSecurityManager_SetSecuritySite(IInternetSecurityManager* This,IInternetSecurityMgrSite *pSite) {
6848    return This->lpVtbl->SetSecuritySite(This,pSite);
6849}
6850static inline HRESULT IInternetSecurityManager_GetSecuritySite(IInternetSecurityManager* This,IInternetSecurityMgrSite **ppSite) {
6851    return This->lpVtbl->GetSecuritySite(This,ppSite);
6852}
6853static inline HRESULT IInternetSecurityManager_MapUrlToZone(IInternetSecurityManager* This,LPCWSTR pwszUrl,DWORD *pdwZone,DWORD dwFlags) {
6854    return This->lpVtbl->MapUrlToZone(This,pwszUrl,pdwZone,dwFlags);
6855}
6856static inline 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}
6859static inline 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}
6862static inline 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}
6865static inline HRESULT IInternetSecurityManager_SetZoneMapping(IInternetSecurityManager* This,DWORD dwZone,LPCWSTR lpszPattern,DWORD dwFlags) {
6866    return This->lpVtbl->SetZoneMapping(This,dwZone,lpszPattern,dwFlags);
6867}
6868static inline 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
6891DEFINE_GUID(IID_IInternetSecurityManagerEx, 0xf164edf1, 0xcc7c, 0x4f0d, 0x9a,0x94, 0x34,0x22,0x26,0x25,0xc3,0x93);
6892#if defined(__cplusplus) && !defined(CINTERFACE)
6893MIDL_INTERFACE("f164edf1-cc7c-4f0d-9a94-34222625c393")
6894IInternetSecurityManagerEx : 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
6912typedef 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
6998interface 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 ***/
7021static inline HRESULT IInternetSecurityManagerEx_QueryInterface(IInternetSecurityManagerEx* This,REFIID riid,void **ppvObject) {
7022    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
7023}
7024static inline ULONG IInternetSecurityManagerEx_AddRef(IInternetSecurityManagerEx* This) {
7025    return This->lpVtbl->AddRef(This);
7026}
7027static inline ULONG IInternetSecurityManagerEx_Release(IInternetSecurityManagerEx* This) {
7028    return This->lpVtbl->Release(This);
7029}
7030/*** IInternetSecurityManager methods ***/
7031static inline HRESULT IInternetSecurityManagerEx_SetSecuritySite(IInternetSecurityManagerEx* This,IInternetSecurityMgrSite *pSite) {
7032    return This->lpVtbl->SetSecuritySite(This,pSite);
7033}
7034static inline HRESULT IInternetSecurityManagerEx_GetSecuritySite(IInternetSecurityManagerEx* This,IInternetSecurityMgrSite **ppSite) {
7035    return This->lpVtbl->GetSecuritySite(This,ppSite);
7036}
7037static inline HRESULT IInternetSecurityManagerEx_MapUrlToZone(IInternetSecurityManagerEx* This,LPCWSTR pwszUrl,DWORD *pdwZone,DWORD dwFlags) {
7038    return This->lpVtbl->MapUrlToZone(This,pwszUrl,pdwZone,dwFlags);
7039}
7040static inline 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}
7043static inline 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}
7046static inline 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}
7049static inline HRESULT IInternetSecurityManagerEx_SetZoneMapping(IInternetSecurityManagerEx* This,DWORD dwZone,LPCWSTR lpszPattern,DWORD dwFlags) {
7050    return This->lpVtbl->SetZoneMapping(This,dwZone,lpszPattern,dwFlags);
7051}
7052static inline HRESULT IInternetSecurityManagerEx_GetZoneMappings(IInternetSecurityManagerEx* This,DWORD dwZone,IEnumString **ppenumString,DWORD dwFlags) {
7053    return This->lpVtbl->GetZoneMappings(This,dwZone,ppenumString,dwFlags);
7054}
7055/*** IInternetSecurityManagerEx methods ***/
7056static inline 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
7080DEFINE_GUID(IID_IInternetSecurityManagerEx2, 0xf1e50292, 0xa795, 0x4117, 0x8e,0x09, 0x2b,0x56,0x0a,0x72,0xac,0x60);
7081#if defined(__cplusplus) && !defined(CINTERFACE)
7082MIDL_INTERFACE("f1e50292-a795-4117-8e09-2b560a72ac60")
7083IInternetSecurityManagerEx2 : 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
7123typedef 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
7247interface 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 ***/
7275static inline HRESULT IInternetSecurityManagerEx2_QueryInterface(IInternetSecurityManagerEx2* This,REFIID riid,void **ppvObject) {
7276    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
7277}
7278static inline ULONG IInternetSecurityManagerEx2_AddRef(IInternetSecurityManagerEx2* This) {
7279    return This->lpVtbl->AddRef(This);
7280}
7281static inline ULONG IInternetSecurityManagerEx2_Release(IInternetSecurityManagerEx2* This) {
7282    return This->lpVtbl->Release(This);
7283}
7284/*** IInternetSecurityManager methods ***/
7285static inline HRESULT IInternetSecurityManagerEx2_SetSecuritySite(IInternetSecurityManagerEx2* This,IInternetSecurityMgrSite *pSite) {
7286    return This->lpVtbl->SetSecuritySite(This,pSite);
7287}
7288static inline HRESULT IInternetSecurityManagerEx2_GetSecuritySite(IInternetSecurityManagerEx2* This,IInternetSecurityMgrSite **ppSite) {
7289    return This->lpVtbl->GetSecuritySite(This,ppSite);
7290}
7291static inline HRESULT IInternetSecurityManagerEx2_MapUrlToZone(IInternetSecurityManagerEx2* This,LPCWSTR pwszUrl,DWORD *pdwZone,DWORD dwFlags) {
7292    return This->lpVtbl->MapUrlToZone(This,pwszUrl,pdwZone,dwFlags);
7293}
7294static inline 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}
7297static inline 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}
7300static inline 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}
7303static inline HRESULT IInternetSecurityManagerEx2_SetZoneMapping(IInternetSecurityManagerEx2* This,DWORD dwZone,LPCWSTR lpszPattern,DWORD dwFlags) {
7304    return This->lpVtbl->SetZoneMapping(This,dwZone,lpszPattern,dwFlags);
7305}
7306static inline HRESULT IInternetSecurityManagerEx2_GetZoneMappings(IInternetSecurityManagerEx2* This,DWORD dwZone,IEnumString **ppenumString,DWORD dwFlags) {
7307    return This->lpVtbl->GetZoneMappings(This,dwZone,ppenumString,dwFlags);
7308}
7309/*** IInternetSecurityManagerEx methods ***/
7310static inline 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 ***/
7314static inline 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}
7317static inline 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}
7320static inline 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}
7323static inline 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
7344DEFINE_GUID(IID_IZoneIdentifier, 0xcd45f185, 0x1b21, 0x48e2, 0x96,0x7b, 0xea,0xd7,0x43,0xa8,0x91,0x4e);
7345#if defined(__cplusplus) && !defined(CINTERFACE)
7346MIDL_INTERFACE("cd45f185-1b21-48e2-967b-ead743a8914e")
7347IZoneIdentifier : 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
7363typedef 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
7393interface 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 ***/
7409static inline HRESULT IZoneIdentifier_QueryInterface(IZoneIdentifier* This,REFIID riid,void **ppvObject) {
7410    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
7411}
7412static inline ULONG IZoneIdentifier_AddRef(IZoneIdentifier* This) {
7413    return This->lpVtbl->AddRef(This);
7414}
7415static inline ULONG IZoneIdentifier_Release(IZoneIdentifier* This) {
7416    return This->lpVtbl->Release(This);
7417}
7418/*** IZoneIdentifier methods ***/
7419static inline HRESULT IZoneIdentifier_GetId(IZoneIdentifier* This,DWORD *pdwZone) {
7420    return This->lpVtbl->GetId(This,pdwZone);
7421}
7422static inline HRESULT IZoneIdentifier_SetId(IZoneIdentifier* This,DWORD dwZone) {
7423    return This->lpVtbl->SetId(This,dwZone);
7424}
7425static inline 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
7447DEFINE_GUID(IID_IInternetHostSecurityManager, 0x3af280b6, 0xcb3f, 0x11d0, 0x89,0x1e, 0x00,0xc0,0x4f,0xb6,0xbf,0xc4);
7448#if defined(__cplusplus) && !defined(CINTERFACE)
7449MIDL_INTERFACE("3af280b6-cb3f-11d0-891e-00c04fb6bfc4")
7450IInternetHostSecurityManager : 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
7479typedef 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
7523interface 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 ***/
7539static inline HRESULT IInternetHostSecurityManager_QueryInterface(IInternetHostSecurityManager* This,REFIID riid,void **ppvObject) {
7540    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
7541}
7542static inline ULONG IInternetHostSecurityManager_AddRef(IInternetHostSecurityManager* This) {
7543    return This->lpVtbl->AddRef(This);
7544}
7545static inline ULONG IInternetHostSecurityManager_Release(IInternetHostSecurityManager* This) {
7546    return This->lpVtbl->Release(This);
7547}
7548/*** IInternetHostSecurityManager methods ***/
7549static inline HRESULT IInternetHostSecurityManager_GetSecurityId(IInternetHostSecurityManager* This,BYTE *pbSecurityId,DWORD *pcbSecurityId,DWORD_PTR dwReserved) {
7550    return This->lpVtbl->GetSecurityId(This,pbSecurityId,pcbSecurityId,dwReserved);
7551}
7552static inline 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}
7555static inline 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)
7768EXTERN_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
7780typedef IInternetZoneManager *LPURLZONEMANAGER;
7781
7782typedef 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
7797typedef 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
7808enum {
7809    MAX_ZONE_PATH = 260,
7810    MAX_ZONE_DESCRIPTION = 200
7811};
7812
7813typedef enum __WIDL_urlmon_generated_name_0000001E {
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
7828typedef 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;
7838typedef struct _ZONEATTRIBUTES *LPZONEATTRIBUTES;
7839
7840
7841typedef enum _URLZONEREG {
7842    URLZONEREG_DEFAULT = 0,
7843    URLZONEREG_HKLM = 1,
7844    URLZONEREG_HKCU = 2
7845} URLZONEREG;
7846
7847DEFINE_GUID(IID_IInternetZoneManager, 0x79eac9ef, 0xbaf9, 0x11ce, 0x8c,0x82, 0x00,0xaa,0x00,0x4b,0xa9,0x0b);
7848#if defined(__cplusplus) && !defined(CINTERFACE)
7849MIDL_INTERFACE("79eac9ef-baf9-11ce-8c82-00aa004ba90b")
7850IInternetZoneManager : 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
7924typedef 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
8022interface 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 ***/
8047static inline HRESULT IInternetZoneManager_QueryInterface(IInternetZoneManager* This,REFIID riid,void **ppvObject) {
8048    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
8049}
8050static inline ULONG IInternetZoneManager_AddRef(IInternetZoneManager* This) {
8051    return This->lpVtbl->AddRef(This);
8052}
8053static inline ULONG IInternetZoneManager_Release(IInternetZoneManager* This) {
8054    return This->lpVtbl->Release(This);
8055}
8056/*** IInternetZoneManager methods ***/
8057static inline HRESULT IInternetZoneManager_GetZoneAttributes(IInternetZoneManager* This,DWORD dwZone,ZONEATTRIBUTES *pZoneAttributes) {
8058    return This->lpVtbl->GetZoneAttributes(This,dwZone,pZoneAttributes);
8059}
8060static inline HRESULT IInternetZoneManager_SetZoneAttributes(IInternetZoneManager* This,DWORD dwZone,ZONEATTRIBUTES *pZoneAttributes) {
8061    return This->lpVtbl->SetZoneAttributes(This,dwZone,pZoneAttributes);
8062}
8063static inline 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}
8066static inline 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}
8069static inline 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}
8072static inline 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}
8075static inline 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}
8078static inline HRESULT IInternetZoneManager_LogAction(IInternetZoneManager* This,DWORD dwAction,LPCWSTR pwszUrl,LPCWSTR pwszText,DWORD dwLogFlags) {
8079    return This->lpVtbl->LogAction(This,dwAction,pwszUrl,pwszText,dwLogFlags);
8080}
8081static inline HRESULT IInternetZoneManager_CreateZoneEnumerator(IInternetZoneManager* This,DWORD *pdwEnum,DWORD *pdwCount,DWORD dwFlags) {
8082    return This->lpVtbl->CreateZoneEnumerator(This,pdwEnum,pdwCount,dwFlags);
8083}
8084static inline HRESULT IInternetZoneManager_GetZoneAt(IInternetZoneManager* This,DWORD dwEnum,DWORD dwIndex,DWORD *pdwZone) {
8085    return This->lpVtbl->GetZoneAt(This,dwEnum,dwIndex,pdwZone);
8086}
8087static inline HRESULT IInternetZoneManager_DestroyZoneEnumerator(IInternetZoneManager* This,DWORD dwEnum) {
8088    return This->lpVtbl->DestroyZoneEnumerator(This,dwEnum);
8089}
8090static inline 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
8113DEFINE_GUID(IID_IInternetZoneManagerEx, 0xa4c23339, 0x8e06, 0x431e, 0x9b,0xf4, 0x7e,0x71,0x1c,0x08,0x56,0x48);
8114#if defined(__cplusplus) && !defined(CINTERFACE)
8115MIDL_INTERFACE("a4c23339-8e06-431e-9bf4-7e711c085648")
8116IInternetZoneManagerEx : 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
8139typedef 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
8256interface 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 ***/
8284static inline HRESULT IInternetZoneManagerEx_QueryInterface(IInternetZoneManagerEx* This,REFIID riid,void **ppvObject) {
8285    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
8286}
8287static inline ULONG IInternetZoneManagerEx_AddRef(IInternetZoneManagerEx* This) {
8288    return This->lpVtbl->AddRef(This);
8289}
8290static inline ULONG IInternetZoneManagerEx_Release(IInternetZoneManagerEx* This) {
8291    return This->lpVtbl->Release(This);
8292}
8293/*** IInternetZoneManager methods ***/
8294static inline HRESULT IInternetZoneManagerEx_GetZoneAttributes(IInternetZoneManagerEx* This,DWORD dwZone,ZONEATTRIBUTES *pZoneAttributes) {
8295    return This->lpVtbl->GetZoneAttributes(This,dwZone,pZoneAttributes);
8296}
8297static inline HRESULT IInternetZoneManagerEx_SetZoneAttributes(IInternetZoneManagerEx* This,DWORD dwZone,ZONEATTRIBUTES *pZoneAttributes) {
8298    return This->lpVtbl->SetZoneAttributes(This,dwZone,pZoneAttributes);
8299}
8300static inline 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}
8303static inline 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}
8306static inline 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}
8309static inline 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}
8312static inline 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}
8315static inline HRESULT IInternetZoneManagerEx_LogAction(IInternetZoneManagerEx* This,DWORD dwAction,LPCWSTR pwszUrl,LPCWSTR pwszText,DWORD dwLogFlags) {
8316    return This->lpVtbl->LogAction(This,dwAction,pwszUrl,pwszText,dwLogFlags);
8317}
8318static inline HRESULT IInternetZoneManagerEx_CreateZoneEnumerator(IInternetZoneManagerEx* This,DWORD *pdwEnum,DWORD *pdwCount,DWORD dwFlags) {
8319    return This->lpVtbl->CreateZoneEnumerator(This,pdwEnum,pdwCount,dwFlags);
8320}
8321static inline HRESULT IInternetZoneManagerEx_GetZoneAt(IInternetZoneManagerEx* This,DWORD dwEnum,DWORD dwIndex,DWORD *pdwZone) {
8322    return This->lpVtbl->GetZoneAt(This,dwEnum,dwIndex,pdwZone);
8323}
8324static inline HRESULT IInternetZoneManagerEx_DestroyZoneEnumerator(IInternetZoneManagerEx* This,DWORD dwEnum) {
8325    return This->lpVtbl->DestroyZoneEnumerator(This,dwEnum);
8326}
8327static inline HRESULT IInternetZoneManagerEx_CopyTemplatePoliciesToZone(IInternetZoneManagerEx* This,DWORD dwTemplate,DWORD dwZone,DWORD dwReserved) {
8328    return This->lpVtbl->CopyTemplatePoliciesToZone(This,dwTemplate,dwZone,dwReserved);
8329}
8330/*** IInternetZoneManagerEx methods ***/
8331static inline 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}
8334static inline 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
8361DEFINE_GUID(IID_IInternetZoneManagerEx2, 0xedc17559, 0xdd5d, 0x4846, 0x8e,0xef, 0x8b,0xec,0xba,0x5a,0x4a,0xbf);
8362#if defined(__cplusplus) && !defined(CINTERFACE)
8363MIDL_INTERFACE("edc17559-dd5d-4846-8eef-8becba5a4abf")
8364IInternetZoneManagerEx2 : 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
8391typedef 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
8532interface 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 ***/
8565static inline HRESULT IInternetZoneManagerEx2_QueryInterface(IInternetZoneManagerEx2* This,REFIID riid,void **ppvObject) {
8566    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
8567}
8568static inline ULONG IInternetZoneManagerEx2_AddRef(IInternetZoneManagerEx2* This) {
8569    return This->lpVtbl->AddRef(This);
8570}
8571static inline ULONG IInternetZoneManagerEx2_Release(IInternetZoneManagerEx2* This) {
8572    return This->lpVtbl->Release(This);
8573}
8574/*** IInternetZoneManager methods ***/
8575static inline HRESULT IInternetZoneManagerEx2_GetZoneAttributes(IInternetZoneManagerEx2* This,DWORD dwZone,ZONEATTRIBUTES *pZoneAttributes) {
8576    return This->lpVtbl->GetZoneAttributes(This,dwZone,pZoneAttributes);
8577}
8578static inline HRESULT IInternetZoneManagerEx2_SetZoneAttributes(IInternetZoneManagerEx2* This,DWORD dwZone,ZONEATTRIBUTES *pZoneAttributes) {
8579    return This->lpVtbl->SetZoneAttributes(This,dwZone,pZoneAttributes);
8580}
8581static inline 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}
8584static inline 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}
8587static inline 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}
8590static inline 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}
8593static inline 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}
8596static inline HRESULT IInternetZoneManagerEx2_LogAction(IInternetZoneManagerEx2* This,DWORD dwAction,LPCWSTR pwszUrl,LPCWSTR pwszText,DWORD dwLogFlags) {
8597    return This->lpVtbl->LogAction(This,dwAction,pwszUrl,pwszText,dwLogFlags);
8598}
8599static inline HRESULT IInternetZoneManagerEx2_CreateZoneEnumerator(IInternetZoneManagerEx2* This,DWORD *pdwEnum,DWORD *pdwCount,DWORD dwFlags) {
8600    return This->lpVtbl->CreateZoneEnumerator(This,pdwEnum,pdwCount,dwFlags);
8601}
8602static inline HRESULT IInternetZoneManagerEx2_GetZoneAt(IInternetZoneManagerEx2* This,DWORD dwEnum,DWORD dwIndex,DWORD *pdwZone) {
8603    return This->lpVtbl->GetZoneAt(This,dwEnum,dwIndex,pdwZone);
8604}
8605static inline HRESULT IInternetZoneManagerEx2_DestroyZoneEnumerator(IInternetZoneManagerEx2* This,DWORD dwEnum) {
8606    return This->lpVtbl->DestroyZoneEnumerator(This,dwEnum);
8607}
8608static inline HRESULT IInternetZoneManagerEx2_CopyTemplatePoliciesToZone(IInternetZoneManagerEx2* This,DWORD dwTemplate,DWORD dwZone,DWORD dwReserved) {
8609    return This->lpVtbl->CopyTemplatePoliciesToZone(This,dwTemplate,dwZone,dwReserved);
8610}
8611/*** IInternetZoneManagerEx methods ***/
8612static inline 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}
8615static inline 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 ***/
8619static inline HRESULT IInternetZoneManagerEx2_GetZoneAttributesEx(IInternetZoneManagerEx2* This,DWORD dwZone,ZONEATTRIBUTES *pZoneAttributes,DWORD dwFlags) {
8620    return This->lpVtbl->GetZoneAttributesEx(This,dwZone,pZoneAttributes,dwFlags);
8621}
8622static inline HRESULT IInternetZoneManagerEx2_GetZoneSecurityState(IInternetZoneManagerEx2* This,DWORD dwZoneIndex,WINBOOL fRespectPolicy,LPDWORD pdwState,WINBOOL *pfPolicyEncountered) {
8623    return This->lpVtbl->GetZoneSecurityState(This,dwZoneIndex,fRespectPolicy,pdwState,pfPolicyEncountered);
8624}
8625static inline HRESULT IInternetZoneManagerEx2_GetIESecurityState(IInternetZoneManagerEx2* This,WINBOOL fRespectPolicy,LPDWORD pdwState,WINBOOL *pfPolicyEncountered,WINBOOL fNoCache) {
8626    return This->lpVtbl->GetIESecurityState(This,fRespectPolicy,pdwState,pfPolicyEncountered,fNoCache);
8627}
8628static inline 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
8642EXTERN_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
8657typedef struct _tagCODEBASEHOLD {
8658    ULONG cbSize;
8659    LPWSTR szDistUnit;
8660    LPWSTR szCodeBase;
8661    DWORD dwVersionMS;
8662    DWORD dwVersionLS;
8663    DWORD dwStyle;
8664} CODEBASEHOLD;
8665typedef struct _tagCODEBASEHOLD *LPCODEBASEHOLD;
8666
8667typedef 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;
8682typedef struct _tagSOFTDISTINFO *LPSOFTDISTINFO;
8683
8684/*****************************************************************************
8685 * ISoftDistExt interface
8686 */
8687#ifndef __ISoftDistExt_INTERFACE_DEFINED__
8688#define __ISoftDistExt_INTERFACE_DEFINED__
8689
8690DEFINE_GUID(IID_ISoftDistExt, 0xb15b8dc1, 0xc7e1, 0x11d0, 0x86,0x80, 0x00,0xaa,0x00,0xbd,0xcb,0x71);
8691#if defined(__cplusplus) && !defined(CINTERFACE)
8692MIDL_INTERFACE("b15b8dc1-c7e1-11d0-8680-00aa00bdcb71")
8693ISoftDistExt : 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
8719typedef 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
8761interface 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 ***/
8778static inline HRESULT ISoftDistExt_QueryInterface(ISoftDistExt* This,REFIID riid,void **ppvObject) {
8779    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
8780}
8781static inline ULONG ISoftDistExt_AddRef(ISoftDistExt* This) {
8782    return This->lpVtbl->AddRef(This);
8783}
8784static inline ULONG ISoftDistExt_Release(ISoftDistExt* This) {
8785    return This->lpVtbl->Release(This);
8786}
8787/*** ISoftDistExt methods ***/
8788static inline HRESULT ISoftDistExt_ProcessSoftDist(ISoftDistExt* This,LPCWSTR szCDFURL,IXMLElement *pSoftDistElement,LPSOFTDISTINFO lpsdi) {
8789    return This->lpVtbl->ProcessSoftDist(This,szCDFURL,pSoftDistElement,lpsdi);
8790}
8791static inline HRESULT ISoftDistExt_GetFirstCodeBase(ISoftDistExt* This,LPWSTR *szCodeBase,LPDWORD dwMaxSize) {
8792    return This->lpVtbl->GetFirstCodeBase(This,szCodeBase,dwMaxSize);
8793}
8794static inline HRESULT ISoftDistExt_GetNextCodeBase(ISoftDistExt* This,LPWSTR *szCodeBase,LPDWORD dwMaxSize) {
8795    return This->lpVtbl->GetNextCodeBase(This,szCodeBase,dwMaxSize);
8796}
8797static inline 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
8809STDAPI GetSoftwareUpdateInfo(LPCWSTR szDistUnit, LPSOFTDISTINFO psdi);
8810STDAPI 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
8822typedef ICatalogFileInfo *LPCATALOGFILEINFO;
8823
8824DEFINE_GUID(IID_ICatalogFileInfo, 0x711c7600, 0x6b48, 0x11d1, 0xb4,0x03, 0x00,0xaa,0x00,0xb9,0x2a,0xf1);
8825#if defined(__cplusplus) && !defined(CINTERFACE)
8826MIDL_INTERFACE("711c7600-6b48-11d1-b403-00aa00b92af1")
8827ICatalogFileInfo : 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
8840typedef 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
8867interface 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 ***/
8882static inline HRESULT ICatalogFileInfo_QueryInterface(ICatalogFileInfo* This,REFIID riid,void **ppvObject) {
8883    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
8884}
8885static inline ULONG ICatalogFileInfo_AddRef(ICatalogFileInfo* This) {
8886    return This->lpVtbl->AddRef(This);
8887}
8888static inline ULONG ICatalogFileInfo_Release(ICatalogFileInfo* This) {
8889    return This->lpVtbl->Release(This);
8890}
8891/*** ICatalogFileInfo methods ***/
8892static inline HRESULT ICatalogFileInfo_GetCatalogFile(ICatalogFileInfo* This,LPSTR *ppszCatalogFile) {
8893    return This->lpVtbl->GetCatalogFile(This,ppszCatalogFile);
8894}
8895static inline 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
8917typedef IDataFilter *LPDATAFILTER;
8918
8919DEFINE_GUID(IID_IDataFilter, 0x69d14c80, 0xc18e, 0x11d0, 0xa9,0xce, 0x00,0x60,0x97,0x94,0x23,0x11);
8920#if defined(__cplusplus) && !defined(CINTERFACE)
8921MIDL_INTERFACE("69d14c80-c18e-11d0-a9ce-006097942311")
8922IDataFilter : 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
8954typedef 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
9001interface 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 ***/
9017static inline HRESULT IDataFilter_QueryInterface(IDataFilter* This,REFIID riid,void **ppvObject) {
9018    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
9019}
9020static inline ULONG IDataFilter_AddRef(IDataFilter* This) {
9021    return This->lpVtbl->AddRef(This);
9022}
9023static inline ULONG IDataFilter_Release(IDataFilter* This) {
9024    return This->lpVtbl->Release(This);
9025}
9026/*** IDataFilter methods ***/
9027static inline 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}
9030static inline 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}
9033static inline 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
9049typedef 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
9063typedef IEncodingFilterFactory *LPENCODINGFILTERFACTORY;
9064
9065typedef struct _tagDATAINFO {
9066    ULONG ulTotalSize;
9067    ULONG ulavrPacketSize;
9068    ULONG ulConnectSpeed;
9069    ULONG ulProcessorSpeed;
9070} DATAINFO;
9071
9072DEFINE_GUID(IID_IEncodingFilterFactory, 0x70bdde00, 0xc18e, 0x11d0, 0xa9,0xce, 0x00,0x60,0x97,0x94,0x23,0x11);
9073#if defined(__cplusplus) && !defined(CINTERFACE)
9074MIDL_INTERFACE("70bdde00-c18e-11d0-a9ce-006097942311")
9075IEncodingFilterFactory : 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
9093typedef 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
9125interface 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 ***/
9140static inline HRESULT IEncodingFilterFactory_QueryInterface(IEncodingFilterFactory* This,REFIID riid,void **ppvObject) {
9141    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
9142}
9143static inline ULONG IEncodingFilterFactory_AddRef(IEncodingFilterFactory* This) {
9144    return This->lpVtbl->AddRef(This);
9145}
9146static inline ULONG IEncodingFilterFactory_Release(IEncodingFilterFactory* This) {
9147    return This->lpVtbl->Release(This);
9148}
9149/*** IEncodingFilterFactory methods ***/
9150static inline HRESULT IEncodingFilterFactory_FindBestFilter(IEncodingFilterFactory* This,LPCWSTR pwzCodeIn,LPCWSTR pwzCodeOut,DATAINFO info,IDataFilter **ppDF) {
9151    return This->lpVtbl->FindBestFilter(This,pwzCodeIn,pwzCodeOut,info,ppDF);
9152}
9153static inline 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
9169WINBOOL WINAPI IsLoggingEnabledA(LPCSTR pszUrl);
9170WINBOOL WINAPI IsLoggingEnabledW(LPCWSTR pwszUrl);
9171
9172#define IsLoggingEnabled __MINGW_NAME_AW(IsLoggingEnabled)
9173typedef struct _tagHIT_LOGGING_INFO {
9174    DWORD dwStructSize;
9175    LPSTR lpszLoggedUrlName;
9176    SYSTEMTIME StartTime;
9177    SYSTEMTIME EndTime;
9178    LPSTR lpszExtendedInfo;
9179} HIT_LOGGING_INFO;
9180typedef struct _tagHIT_LOGGING_INFO *LPHIT_LOGGING_INFO;
9181
9182WINBOOL WINAPI WriteHitLogging(LPHIT_LOGGING_INFO lpLogginginfo);
9183
9184#define CONFIRMSAFETYACTION_LOADOBJECT 0x1
9185
9186struct CONFIRMSAFETY {
9187    CLSID clsid;
9188    IUnknown *pUnk;
9189    DWORD dwFlags;
9190};
9191
9192EXTERN_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
9204typedef IWrappedProtocol *LPIWRAPPEDPROTOCOL;
9205
9206DEFINE_GUID(IID_IWrappedProtocol, 0x53c84785, 0x8425, 0x4dc5, 0x97,0x1b, 0xe5,0x8d,0x9c,0x19,0xf9,0xb6);
9207#if defined(__cplusplus) && !defined(CINTERFACE)
9208MIDL_INTERFACE("53c84785-8425-4dc5-971b-e58d9c19f9b6")
9209IWrappedProtocol : 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
9220typedef 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
9244interface 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 ***/
9258static inline HRESULT IWrappedProtocol_QueryInterface(IWrappedProtocol* This,REFIID riid,void **ppvObject) {
9259    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
9260}
9261static inline ULONG IWrappedProtocol_AddRef(IWrappedProtocol* This) {
9262    return This->lpVtbl->AddRef(This);
9263}
9264static inline ULONG IWrappedProtocol_Release(IWrappedProtocol* This) {
9265    return This->lpVtbl->Release(This);
9266}
9267/*** IWrappedProtocol methods ***/
9268static inline 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
9290typedef IGetBindHandle *LPGETBINDHANDLE;
9291
9292typedef enum __WIDL_urlmon_generated_name_0000001F {
9293    BINDHANDLETYPES_APPCACHE = 0x0,
9294    BINDHANDLETYPES_DEPENDENCY = 0x1,
9295    BINDHANDLETYPES_COUNT = 0x2
9296} BINDHANDLETYPES;
9297
9298DEFINE_GUID(IID_IGetBindHandle, 0xaf0ff408, 0x129d, 0x4b20, 0x91,0xf0, 0x02,0xbd,0x23,0xd8,0x83,0x52);
9299#if defined(__cplusplus) && !defined(CINTERFACE)
9300MIDL_INTERFACE("af0ff408-129d-4b20-91f0-02bd23d88352")
9301IGetBindHandle : 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
9312typedef 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
9336interface 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 ***/
9350static inline HRESULT IGetBindHandle_QueryInterface(IGetBindHandle* This,REFIID riid,void **ppvObject) {
9351    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
9352}
9353static inline ULONG IGetBindHandle_AddRef(IGetBindHandle* This) {
9354    return This->lpVtbl->AddRef(This);
9355}
9356static inline ULONG IGetBindHandle_Release(IGetBindHandle* This) {
9357    return This->lpVtbl->Release(This);
9358}
9359/*** IGetBindHandle methods ***/
9360static inline 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
9376typedef struct _tagPROTOCOL_ARGUMENT {
9377    LPCWSTR szMethod;
9378    LPCWSTR szTargetUrl;
9379} PROTOCOL_ARGUMENT;
9380typedef 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
9392typedef IBindCallbackRedirect *LPBINDCALLBACKREDIRECT;
9393
9394DEFINE_GUID(IID_IBindCallbackRedirect, 0x11c81bc2, 0x121e, 0x4ed5, 0xb9,0xc4, 0xb4,0x30,0xbd,0x54,0xf2,0xc0);
9395#if defined(__cplusplus) && !defined(CINTERFACE)
9396MIDL_INTERFACE("11c81bc2-121e-4ed5-b9c4-b430bd54f2c0")
9397IBindCallbackRedirect : 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
9408typedef 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
9432interface 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 ***/
9446static inline HRESULT IBindCallbackRedirect_QueryInterface(IBindCallbackRedirect* This,REFIID riid,void **ppvObject) {
9447    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
9448}
9449static inline ULONG IBindCallbackRedirect_AddRef(IBindCallbackRedirect* This) {
9450    return This->lpVtbl->AddRef(This);
9451}
9452static inline ULONG IBindCallbackRedirect_Release(IBindCallbackRedirect* This) {
9453    return This->lpVtbl->Release(This);
9454}
9455/*** IBindCallbackRedirect methods ***/
9456static inline 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
9472ULONG           __RPC_USER STGMEDIUM_UserSize     (ULONG *, ULONG, STGMEDIUM *);
9473unsigned char * __RPC_USER STGMEDIUM_UserMarshal  (ULONG *, unsigned char *, STGMEDIUM *);
9474unsigned char * __RPC_USER STGMEDIUM_UserUnmarshal(ULONG *, unsigned char *, STGMEDIUM *);
9475void            __RPC_USER STGMEDIUM_UserFree     (ULONG *, STGMEDIUM *);
9476ULONG           __RPC_USER CLIPFORMAT_UserSize     (ULONG *, ULONG, CLIPFORMAT *);
9477unsigned char * __RPC_USER CLIPFORMAT_UserMarshal  (ULONG *, unsigned char *, CLIPFORMAT *);
9478unsigned char * __RPC_USER CLIPFORMAT_UserUnmarshal(ULONG *, unsigned char *, CLIPFORMAT *);
9479void            __RPC_USER CLIPFORMAT_UserFree     (ULONG *, CLIPFORMAT *);
9480ULONG           __RPC_USER HWND_UserSize     (ULONG *, ULONG, HWND *);
9481unsigned char * __RPC_USER HWND_UserMarshal  (ULONG *, unsigned char *, HWND *);
9482unsigned char * __RPC_USER HWND_UserUnmarshal(ULONG *, unsigned char *, HWND *);
9483void            __RPC_USER HWND_UserFree     (ULONG *, HWND *);
9484ULONG           __RPC_USER BSTR_UserSize     (ULONG *, ULONG, BSTR *);
9485unsigned char * __RPC_USER BSTR_UserMarshal  (ULONG *, unsigned char *, BSTR *);
9486unsigned char * __RPC_USER BSTR_UserUnmarshal(ULONG *, unsigned char *, BSTR *);
9487void            __RPC_USER BSTR_UserFree     (ULONG *, BSTR *);
9488
9489/* End additional prototypes */
9490
9491#ifdef __cplusplus
9492}
9493#endif
9494
9495#endif /* __urlmon_h__ */