cpp_quote("/**")
cpp_quote(" * This file is part of the mingw-w64 runtime package.")
cpp_quote(" * No warranty is given; refer to the file DISCLAIMER within this package.")
cpp_quote(" */")
cpp_quote("")
cpp_quote("#pragma comment(lib,\"uuid.lib\")")
cpp_quote("")
cpp_quote("#include <winapifamily.h>")
cpp_quote("")
cpp_quote("#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)")
cpp_quote("")

import "objidl.idl";
import "oleidl.idl";
import "servprov.idl";
import "msxml.idl";

cpp_quote("")
interface IPersistMoniker;
interface IBindProtocol;
interface IBinding;
interface IBindStatusCallback;
interface IBindStatusCallbackEx;
interface IBindStatusCallbackMsg;
interface IAuthenticate;
interface IAuthenticateEx;
interface IWindowForBindingUI;
interface ICodeInstall;
interface IHttpNegotiate;
interface IHttpNegotiate2;
interface IHttpNegotiate3;
interface IWinInetFileStream;
interface IXMLElement;
cpp_quote("")
cpp_quote("EXTERN_C const IID CLSID_SBS_StdURLMoniker;")
cpp_quote("EXTERN_C const IID CLSID_SBS_HttpProtocol;")
cpp_quote("EXTERN_C const IID CLSID_SBS_FtpProtocol;")
cpp_quote("EXTERN_C const IID CLSID_SBS_GopherProtocol;")
cpp_quote("EXTERN_C const IID CLSID_SBS_HttpSProtocol;")
cpp_quote("EXTERN_C const IID CLSID_SBS_FileProtocol;")
cpp_quote("EXTERN_C const IID CLSID_SBS_MkProtocol;")
cpp_quote("EXTERN_C const IID CLSID_SBS_UrlMkBindCtx;")
cpp_quote("EXTERN_C const IID CLSID_SBS_SoftDistExt;")
cpp_quote("EXTERN_C const IID CLSID_SBS_CdlProtocol;")
cpp_quote("EXTERN_C const IID CLSID_SBS_ClassInstallFilter;")
cpp_quote("EXTERN_C const IID CLSID_SBS_InternetSecurityManager;")
cpp_quote("EXTERN_C const IID CLSID_SBS_InternetZoneManager;")
cpp_quote("")
cpp_quote("#define BINDF_DONTUSECACHE BINDF_GETNEWESTVERSION")
cpp_quote("#define BINDF_DONTPUTINCACHE BINDF_NOWRITECACHE")
cpp_quote("#define BINDF_NOCOPYDATA BINDF_PULLDATA")
cpp_quote("#define INVALID_P_ROOT_SECURITY_ID ((BYTE*)-1)")
cpp_quote("")
cpp_quote("#define PI_DOCFILECLSIDLOOKUP PI_CLSIDLOOKUP")
cpp_quote("")
cpp_quote("EXTERN_C const IID IID_IAsyncMoniker;")
cpp_quote("EXTERN_C const IID CLSID_StdURLMoniker;")
cpp_quote("EXTERN_C const IID CLSID_HttpProtocol;")
cpp_quote("EXTERN_C const IID CLSID_FtpProtocol;")
cpp_quote("EXTERN_C const IID CLSID_GopherProtocol;")
cpp_quote("EXTERN_C const IID CLSID_HttpSProtocol;")
cpp_quote("EXTERN_C const IID CLSID_FileProtocol;")
cpp_quote("EXTERN_C const IID CLSID_MkProtocol;")
cpp_quote("EXTERN_C const IID CLSID_StdURLProtocol;")
cpp_quote("EXTERN_C const IID CLSID_UrlMkBindCtx;")
cpp_quote("EXTERN_C const IID CLSID_CdlProtocol;")
cpp_quote("EXTERN_C const IID CLSID_ClassInstallFilter;")
cpp_quote("EXTERN_C const IID IID_IAsyncBindCtx;")
cpp_quote("")
cpp_quote("#define SZ_URLCONTEXT           OLESTR(\"URL Context\")")
cpp_quote("#define SZ_ASYNC_CALLEE         OLESTR(\"AsyncCallee\")")
cpp_quote("")
cpp_quote("#define MKSYS_URLMONIKER         6")
cpp_quote("#define URL_MK_LEGACY            0")
cpp_quote("#define URL_MK_UNIFORM           1")
cpp_quote("#define URL_MK_NO_CANONICALIZE   2")
cpp_quote("")
cpp_quote("STDAPI CreateURLMoniker(LPMONIKER pMkCtx, LPCWSTR szURL, LPMONIKER *ppmk);")
cpp_quote("STDAPI CreateURLMonikerEx(LPMONIKER pMkCtx, LPCWSTR szURL, LPMONIKER *ppmk, DWORD dwFlags);")
cpp_quote("STDAPI GetClassURL(LPCWSTR szURL, CLSID *pClsID);")
cpp_quote("STDAPI CreateAsyncBindCtx(DWORD reserved, IBindStatusCallback *pBSCb, IEnumFORMATETC *pEFetc, IBindCtx **ppBC);")
cpp_quote("#if (_WIN32_IE >= _WIN32_IE_IE70)")
cpp_quote("STDAPI CreateURLMonikerEx2(LPMONIKER pMkCtx, IUri *pUri, LPMONIKER *ppmk, DWORD dwFlags);")
cpp_quote("#endif")
cpp_quote("STDAPI CreateAsyncBindCtxEx(IBindCtx *pbc, DWORD dwOptions, IBindStatusCallback *pBSCb, IEnumFORMATETC *pEnum, IBindCtx **ppBC, DWORD reserved);")
cpp_quote("STDAPI MkParseDisplayNameEx(IBindCtx *pbc, LPCWSTR szDisplayName, ULONG *pchEaten, LPMONIKER *ppmk);")
cpp_quote("STDAPI RegisterBindStatusCallback(LPBC pBC, IBindStatusCallback *pBSCb, IBindStatusCallback **ppBSCBPrev, DWORD dwReserved);")
cpp_quote("STDAPI RevokeBindStatusCallback(LPBC pBC, IBindStatusCallback *pBSCb);")
cpp_quote("STDAPI GetClassFileOrMime(LPBC pBC, LPCWSTR szFilename, LPVOID pBuffer, DWORD cbSize, LPCWSTR szMime, DWORD dwReserved, CLSID *pclsid);")
cpp_quote("STDAPI IsValidURL(LPBC pBC, LPCWSTR szURL, DWORD dwReserved);")
cpp_quote("STDAPI CoGetClassObjectFromURL(REFCLSID rCLASSID, LPCWSTR szCODE, DWORD dwFileVersionMS, DWORD dwFileVersionLS, LPCWSTR szTYPE, LPBINDCTX pBindCtx, DWORD dwClsContext, LPVOID pvReserved, REFIID riid, LPVOID *ppv);")
cpp_quote("STDAPI IEInstallScope(LPDWORD pdwScope);")
cpp_quote("STDAPI FaultInIEFeature(HWND hWnd, uCLSSPEC *pClassSpec, QUERYCONTEXT *pQuery, DWORD dwFlags);")
cpp_quote("STDAPI GetComponentIDFromCLSSPEC(uCLSSPEC *pClassspec, LPSTR *ppszComponentID);")
cpp_quote("")
cpp_quote("#define FIEF_FLAG_FORCE_JITUI 0x1")
cpp_quote("#define FIEF_FLAG_PEEK 0x2")
cpp_quote("#define FIEF_FLAG_SKIP_INSTALLED_VERSION_CHECK 0x4")
cpp_quote("")
cpp_quote("STDAPI IsAsyncMoniker(IMoniker *pmk);")
cpp_quote("STDAPI CreateURLBinding(LPCWSTR lpszUrl, IBindCtx *pbc, IBinding **ppBdg);")
cpp_quote("STDAPI RegisterMediaTypes(UINT ctypes, const LPCSTR *rgszTypes, CLIPFORMAT *rgcfTypes);")
cpp_quote("STDAPI FindMediaType(LPCSTR rgszTypes, CLIPFORMAT *rgcfTypes);")
cpp_quote("STDAPI CreateFormatEnumerator(UINT cfmtetc, FORMATETC *rgfmtetc, IEnumFORMATETC **ppenumfmtetc);")
cpp_quote("STDAPI RegisterFormatEnumerator(LPBC pBC, IEnumFORMATETC *pEFetc, DWORD reserved);")
cpp_quote("STDAPI RevokeFormatEnumerator(LPBC pBC, IEnumFORMATETC *pEFetc);")
cpp_quote("STDAPI RegisterMediaTypeClass(LPBC pBC,UINT ctypes, const LPCSTR *rgszTypes, CLSID *rgclsID, DWORD reserved);")
cpp_quote("STDAPI FindMediaTypeClass(LPBC pBC, LPCSTR szType, CLSID *pclsID, DWORD reserved);")
cpp_quote("STDAPI UrlMkSetSessionOption(DWORD dwOption, LPVOID pBuffer, DWORD dwBufferLength, DWORD dwReserved);")
cpp_quote("STDAPI UrlMkGetSessionOption(DWORD dwOption, LPVOID pBuffer, DWORD dwBufferLength, DWORD *pdwBufferLengthOut, DWORD dwReserved);")
cpp_quote("STDAPI FindMimeFromData(LPBC pBC, LPCWSTR pwzUrl, LPVOID pBuffer, DWORD cbSize, LPCWSTR pwzMimeProposed, DWORD dwMimeFlags, LPWSTR *ppwzMimeOut, DWORD dwReserved);")

cpp_quote("")
cpp_quote("#define FMFD_DEFAULT 0x0")
cpp_quote("#define FMFD_URLASFILENAME 0x1")
cpp_quote("#if (_WIN32_IE >= _WIN32_IE_IE60SP2)")
cpp_quote("#define FMFD_ENABLEMIMESNIFFING 0x2")
cpp_quote("#define FMFD_IGNOREMIMETEXTPLAIN 0x4")
cpp_quote("#endif")
cpp_quote("")
cpp_quote("#define FMFD_SERVERMIME 0x8")
cpp_quote("#define FMFD_RESPECTTEXTPLAIN 0x10")
cpp_quote("#define FMFD_RETURNUPDATEDIMGMIMES 0x20")
cpp_quote("#define UAS_EXACTLEGACY 0x1000")
cpp_quote("")
cpp_quote("STDAPI ObtainUserAgentString(DWORD dwOption, LPSTR pszUAOut, DWORD *cbSize);")
cpp_quote("STDAPI CompareSecurityIds(BYTE *pbSecurityId1, DWORD dwLen1, BYTE *pbSecurityId2, DWORD dwLen2, DWORD dwReserved);")
cpp_quote("STDAPI CompatFlagsFromClsid(CLSID *pclsid, LPDWORD pdwCompatFlags, LPDWORD pdwMiscStatusFlags);")

cpp_quote("")
cpp_quote("#define URLMON_OPTION_USERAGENT 0x10000001")
cpp_quote("#define URLMON_OPTION_USERAGENT_REFRESH 0x10000002")
cpp_quote("#define URLMON_OPTION_URL_ENCODING 0x10000004")
cpp_quote("#if (_WIN32_IE >= _WIN32_IE_IE60SP2)")
cpp_quote("#define URLMON_OPTION_USE_BINDSTRINGCREDS 0x10000008")
cpp_quote("#endif")
cpp_quote("#if (_WIN32_IE >= _WIN32_IE_IE70)")
cpp_quote("#define URLMON_OPTION_USE_BROWSERAPPSDOCUMENTS 0x10000010")
cpp_quote("#endif")
cpp_quote("#endif")
cpp_quote("")
cpp_quote("#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP)")
cpp_quote("#define CF_NULL                 0")
cpp_quote("#define CFSTR_MIME_NULL         NULL")
cpp_quote("")
cpp_quote("#define CFSTR_MIME_TEXT (TEXT(\"text/plain\"))")
cpp_quote("#define CFSTR_MIME_RICHTEXT (TEXT(\"text/richtext\"))")
cpp_quote("#define CFSTR_MIME_MANIFEST (TEXT(\"text/cache-manifest\"))")
cpp_quote("#define CFSTR_MIME_WEBVTT (TEXT(\"text/vtt\"))")
cpp_quote("#define CFSTR_MIME_X_BITMAP (TEXT(\"image/x-xbitmap\"))")
cpp_quote("#define CFSTR_MIME_POSTSCRIPT (TEXT(\"application/postscript\"))")

cpp_quote("#define CFSTR_MIME_AIFF (TEXT(\"audio/aiff\"))")
cpp_quote("#define CFSTR_MIME_BASICAUDIO (TEXT(\"audio/basic\"))")
cpp_quote("#define CFSTR_MIME_WAV (TEXT(\"audio/wav\"))")
cpp_quote("#define CFSTR_MIME_X_WAV (TEXT(\"audio/x-wav\"))")
cpp_quote("#define CFSTR_MIME_GIF (TEXT(\"image/gif\"))")
cpp_quote("#define CFSTR_MIME_PJPEG (TEXT(\"image/pjpeg\"))")
cpp_quote("#define CFSTR_MIME_JPEG (TEXT(\"image/jpeg\"))")
cpp_quote("#define CFSTR_MIME_TIFF (TEXT(\"image/tiff\"))")
cpp_quote("#define CFSTR_MIME_JPEG_XR (TEXT(\"image/vnd.ms-photo\"))")
cpp_quote("#define CFSTR_MIME_PNG (TEXT(\"image/png\"))")
cpp_quote("#define CFSTR_MIME_X_PNG (TEXT(\"image/x-png\"))")
cpp_quote("#define CFSTR_MIME_X_ICON (TEXT(\"image/x-icon\"))")
cpp_quote("#define CFSTR_MIME_SVG_XML (TEXT(\"image/svg+xml\"))")
cpp_quote("#define CFSTR_MIME_BMP (TEXT(\"image/bmp\"))")
cpp_quote("#define CFSTR_MIME_X_EMF (TEXT(\"image/x-emf\"))")
cpp_quote("#define CFSTR_MIME_X_WMF (TEXT(\"image/x-wmf\"))")
cpp_quote("#define CFSTR_MIME_AVI (TEXT(\"video/avi\"))")
cpp_quote("#define CFSTR_MIME_MPEG (TEXT(\"video/mpeg\"))")
cpp_quote("#define CFSTR_MIME_FRACTALS (TEXT(\"application/fractals\"))")
cpp_quote("#define CFSTR_MIME_RAWDATA (TEXT(\"application/octet-stream\"))")
cpp_quote("#define CFSTR_MIME_RAWDATASTRM (TEXT(\"application/octet-stream\"))")
cpp_quote("#define CFSTR_MIME_PDF (TEXT(\"application/pdf\"))")
cpp_quote("#define CFSTR_MIME_HTA (TEXT(\"application/hta\"))")
cpp_quote("#define CFSTR_MIME_APP_XML (TEXT(\"application/xml\"))")
cpp_quote("#define CFSTR_MIME_XHTML (TEXT(\"application/xhtml+xml\"))")
cpp_quote("#define CFSTR_MIME_X_AIFF (TEXT(\"audio/x-aiff\"))")
cpp_quote("#define CFSTR_MIME_X_REALAUDIO (TEXT(\"audio/x-pn-realaudio\"))")
cpp_quote("#define CFSTR_MIME_XBM (TEXT(\"image/xbm\"))")
cpp_quote("#define CFSTR_MIME_QUICKTIME (TEXT(\"video/quicktime\"))")
cpp_quote("#define CFSTR_MIME_X_MSVIDEO (TEXT(\"video/x-msvideo\"))")
cpp_quote("#define CFSTR_MIME_X_SGI_MOVIE (TEXT(\"video/x-sgi-movie\"))")
cpp_quote("#define CFSTR_MIME_HTML (TEXT(\"text/html\"))")
cpp_quote("#define CFSTR_MIME_XML (TEXT(\"text/xml\"))")
cpp_quote("#define CFSTR_MIME_TTML (TEXT(\"application/ttml+xml\"))")
cpp_quote("#define CFSTR_MIME_TTAF (TEXT(\"application/ttaf+xml\"))")
cpp_quote("")
cpp_quote("#define MK_S_ASYNCHRONOUS    _HRESULT_TYPEDEF_(0x401E8L)")
cpp_quote("#ifndef S_ASYNCHRONOUS")
cpp_quote("#define S_ASYNCHRONOUS MK_S_ASYNCHRONOUS")
cpp_quote("#endif")
cpp_quote("")
cpp_quote("#ifndef E_PENDING")
cpp_quote("#define E_PENDING _HRESULT_TYPEDEF_(__MSABI_LONG(0x8000000a))")
cpp_quote("#endif")
cpp_quote("#define INET_E_INVALID_URL _HRESULT_TYPEDEF_(__MSABI_LONG(0x800C0002))")
cpp_quote("#define INET_E_NO_SESSION _HRESULT_TYPEDEF_(__MSABI_LONG(0x800C0003))")
cpp_quote("#define INET_E_CANNOT_CONNECT            _HRESULT_TYPEDEF_(__MSABI_LONG(0x800C0004))")
cpp_quote("#define INET_E_RESOURCE_NOT_FOUND        _HRESULT_TYPEDEF_(__MSABI_LONG(0x800C0005))")
cpp_quote("#define INET_E_OBJECT_NOT_FOUND          _HRESULT_TYPEDEF_(__MSABI_LONG(0x800C0006))")
cpp_quote("#define INET_E_DATA_NOT_AVAILABLE        _HRESULT_TYPEDEF_(__MSABI_LONG(0x800C0007))")
cpp_quote("#define INET_E_DOWNLOAD_FAILURE          _HRESULT_TYPEDEF_(__MSABI_LONG(0x800C0008))")
cpp_quote("#define INET_E_AUTHENTICATION_REQUIRED   _HRESULT_TYPEDEF_(__MSABI_LONG(0x800C0009))")
cpp_quote("#define INET_E_NO_VALID_MEDIA            _HRESULT_TYPEDEF_(__MSABI_LONG(0x800C000A))")
cpp_quote("#define INET_E_CONNECTION_TIMEOUT        _HRESULT_TYPEDEF_(__MSABI_LONG(0x800C000B))")
cpp_quote("#define INET_E_INVALID_REQUEST           _HRESULT_TYPEDEF_(__MSABI_LONG(0x800C000C))")
cpp_quote("#define INET_E_UNKNOWN_PROTOCOL          _HRESULT_TYPEDEF_(__MSABI_LONG(0x800C000D))")
cpp_quote("#define INET_E_SECURITY_PROBLEM          _HRESULT_TYPEDEF_(__MSABI_LONG(0x800C000E))")
cpp_quote("#define INET_E_CANNOT_LOAD_DATA          _HRESULT_TYPEDEF_(__MSABI_LONG(0x800C000F))")
cpp_quote("#define INET_E_CANNOT_INSTANTIATE_OBJECT _HRESULT_TYPEDEF_(__MSABI_LONG(0x800C0010))")
cpp_quote("#define INET_E_INVALID_CERTIFICATE       _HRESULT_TYPEDEF_(__MSABI_LONG(0x800C0019))")
cpp_quote("#define INET_E_REDIRECT_FAILED           _HRESULT_TYPEDEF_(__MSABI_LONG(0x800C0014))")
cpp_quote("#define INET_E_REDIRECT_TO_DIR           _HRESULT_TYPEDEF_(__MSABI_LONG(0x800C0015))")
cpp_quote("#define INET_E_CANNOT_LOCK_REQUEST                   _HRESULT_TYPEDEF_(__MSABI_LONG(0x800C0016))")
cpp_quote("#define INET_E_USE_EXTEND_BINDING                    _HRESULT_TYPEDEF_(__MSABI_LONG(0x800C0017))")
cpp_quote("#define INET_E_TERMINATED_BIND                       _HRESULT_TYPEDEF_(__MSABI_LONG(0x800C0018))")
cpp_quote("#define INET_E_RESERVED_1                            _HRESULT_TYPEDEF_(__MSABI_LONG(0x800C001A))")
cpp_quote("#define INET_E_BLOCKED_REDIRECT_XSECURITYID          _HRESULT_TYPEDEF_(__MSABI_LONG(0x800C001B))")
cpp_quote("#define INET_E_DOMINJECTIONVALIDATION                _HRESULT_TYPEDEF_(__MSABI_LONG(0x800C001C))")
cpp_quote("#define INET_E_ERROR_FIRST                           _HRESULT_TYPEDEF_(__MSABI_LONG(0x800C0002))")
cpp_quote("#define INET_E_CODE_DOWNLOAD_DECLINED                _HRESULT_TYPEDEF_(__MSABI_LONG(0x800C0100))")
cpp_quote("#define INET_E_RESULT_DISPATCHED                     _HRESULT_TYPEDEF_(__MSABI_LONG(0x800C0200))")
cpp_quote("#define INET_E_CANNOT_REPLACE_SFP_FILE               _HRESULT_TYPEDEF_(__MSABI_LONG(0x800C0300))")
cpp_quote("#if (_WIN32_IE >= _WIN32_IE_IE60SP2)")
cpp_quote("#define INET_E_CODE_INSTALL_SUPPRESSED               _HRESULT_TYPEDEF_(__MSABI_LONG(0x800C0400))")
cpp_quote("#endif")
cpp_quote("#define INET_E_CODE_INSTALL_BLOCKED_BY_HASH_POLICY   _HRESULT_TYPEDEF_(__MSABI_LONG(0x800C0500))")
cpp_quote("#define INET_E_DOWNLOAD_BLOCKED_BY_INPRIVATE         _HRESULT_TYPEDEF_(__MSABI_LONG(0x800C0501))")
cpp_quote("#define INET_E_CODE_INSTALL_BLOCKED_IMMERSIVE        _HRESULT_TYPEDEF_(__MSABI_LONG(0x800C0502))")
cpp_quote("#define INET_E_FORBIDFRAMING                         _HRESULT_TYPEDEF_(__MSABI_LONG(0x800C0503))")
cpp_quote("#define INET_E_CODE_INSTALL_BLOCKED_ARM              _HRESULT_TYPEDEF_(__MSABI_LONG(0x800C0504))")
cpp_quote("#define INET_E_BLOCKED_PLUGGABLE_PROTOCOL            _HRESULT_TYPEDEF_(__MSABI_LONG(0x800C0505))")
cpp_quote("#define INET_E_ERROR_LAST INET_E_BLOCKED_PLUGGABLE_PROTOCOL")
cpp_quote("#endif")
cpp_quote("")
cpp_quote("#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)")
cpp_quote("#ifndef _LPPERSISTMONIKER_DEFINED")
cpp_quote("#define _LPPERSISTMONIKER_DEFINED")
[object, uuid (79eac9c9-baf9-11ce-8c82-00aa004ba90b), pointer_default (unique)]
interface IPersistMoniker : IUnknown {
  typedef [unique] IPersistMoniker *LPPERSISTMONIKER;
cpp_quote("")
  HRESULT GetClassID ([out] CLSID *pClassID);
  HRESULT IsDirty (void);
  HRESULT Load ([in] BOOL fFullyAvailable,[in] IMoniker *pimkName,[in] LPBC pibc,[in] DWORD grfMode);
  HRESULT Save ([in] IMoniker *pimkName,[in] LPBC pbc,[in] BOOL fRemember);
  HRESULT SaveCompleted ([in] IMoniker *pimkName,[in] LPBC pibc);
  HRESULT GetCurMoniker ([out] IMoniker **ppimkName);
}
cpp_quote("#endif")
cpp_quote("")
cpp_quote("#ifndef _LPMONIKERPROP_DEFINED")
cpp_quote("#define _LPMONIKERPROP_DEFINED")
[object, uuid (a5ca5f7f-1847-4d87-9c5b-918509f7511d), pointer_default (unique)]
interface IMonikerProp : IUnknown {
  typedef [unique] IMonikerProp *LPMONIKERPROP;
cpp_quote("")
  typedef enum {
    MIMETYPEPROP = 0x0,
    USE_SRC_URL = 0x1,
    CLASSIDPROP = 0x2,
    TRUSTEDDOWNLOADPROP = 0x3,
    POPUPLEVELPROP = 0x4,
  } MONIKERPROPERTY;
cpp_quote("")
  HRESULT PutProperty ([in] MONIKERPROPERTY mkp,[in] LPCWSTR val);
}
cpp_quote("#endif")

cpp_quote("")
cpp_quote("#ifndef _LPBINDPROTOCOL_DEFINED")
cpp_quote("#define _LPBINDPROTOCOL_DEFINED")
cpp_quote("")
[local, object, uuid (79eac9cd-baf9-11ce-8c82-00aa004ba90b), pointer_default (unique)]
interface IBindProtocol : IUnknown {
  typedef [unique] IBindProtocol *LPBINDPROTOCOL;
cpp_quote("")
  HRESULT CreateBinding ([in] LPCWSTR szUrl,[in] IBindCtx *pbc,[out] IBinding **ppb);
}
cpp_quote("#endif")

cpp_quote("")
cpp_quote("#ifndef _LPBINDING_DEFINED")
cpp_quote("#define _LPBINDING_DEFINED")
cpp_quote("")
[object, uuid (79eac9c0-baf9-11ce-8c82-00aa004ba90b), pointer_default (unique)]
interface IBinding: IUnknown {
  typedef [unique] IBinding *LPBINDING;
cpp_quote("")
  HRESULT Abort ();
  HRESULT Suspend ();
  HRESULT Resume ();
  HRESULT SetPriority ([in] LONG nPriority);
  HRESULT GetPriority ([out] LONG *pnPriority);
  [local] HRESULT GetBindResult ([out] CLSID *pclsidProtocol,[out] DWORD *pdwResult,[out] LPOLESTR *pszResult,[in, out] DWORD *pdwReserved);
  [call_as (GetBindResult)] HRESULT RemoteGetBindResult ([out] CLSID *pclsidProtocol,[out] DWORD *pdwResult,[out] LPOLESTR *pszResult,[in] DWORD dwReserved);
}
cpp_quote("#endif")
cpp_quote("#endif")

cpp_quote("")
cpp_quote("#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP)")
cpp_quote("#ifndef _LPBINDSTATUSCALLBACK_DEFINED")
cpp_quote("#define _LPBINDSTATUSCALLBACK_DEFINED")
cpp_quote("")
[object, uuid (79eac9c1-baf9-11ce-8c82-00aa004ba90b), pointer_default (unique)]
interface IBindStatusCallback: IUnknown {
  typedef [unique] IBindStatusCallback *LPBINDSTATUSCALLBACK;
cpp_quote("")
  typedef enum {
    BINDVERB_GET = 0x0,
    BINDVERB_POST = 0x1,
    BINDVERB_PUT = 0x2,
    BINDVERB_CUSTOM = 0x3,
    BINDVERB_RESERVED1 = 0x4,
  } BINDVERB;
cpp_quote("")
  typedef enum {
    BINDINFOF_URLENCODESTGMEDDATA = 0x1,
    BINDINFOF_URLENCODEDEXTRAINFO = 0x2,
  } BINDINFOF;
cpp_quote("")
  typedef enum {
    BINDF_ASYNCHRONOUS = 0x1,
    BINDF_ASYNCSTORAGE = 0x2,
    BINDF_NOPROGRESSIVERENDERING = 0x4,
    BINDF_OFFLINEOPERATION = 0x8,
    BINDF_GETNEWESTVERSION = 0x10,
    BINDF_NOWRITECACHE = 0x20,
    BINDF_NEEDFILE = 0x40,
    BINDF_PULLDATA = 0x80,
    BINDF_IGNORESECURITYPROBLEM = 0x100,
    BINDF_RESYNCHRONIZE = 0x200,
    BINDF_HYPERLINK = 0x400,
    BINDF_NO_UI = 0x800,
    BINDF_SILENTOPERATION = 0x1000,
    BINDF_PRAGMA_NO_CACHE = 0x2000,
    BINDF_GETCLASSOBJECT = 0x4000,
    BINDF_RESERVED_1 = 0x8000,
    BINDF_FREE_THREADED = 0x10000,
    BINDF_DIRECT_READ = 0x20000,
    BINDF_FORMS_SUBMIT = 0x40000,
    BINDF_GETFROMCACHE_IF_NET_FAIL = 0x80000,
    BINDF_FROMURLMON = 0x100000,
    BINDF_FWD_BACK = 0x200000,
    BINDF_PREFERDEFAULTHANDLER = 0x400000,
    BINDF_ENFORCERESTRICTED = 0x800000,
    BINDF_RESERVED_2 = 0x80000000,
    BINDF_RESERVED_3 = 0x1000000,
    BINDF_RESERVED_4 = 0x2000000,
    BINDF_RESERVED_5 = 0x4000000,
    BINDF_RESERVED_6 = 0x8000000,
    BINDF_RESERVED_7 = 0x40000000,
    BINDF_RESERVED_8 = 0x20000000
  } BINDF;

cpp_quote("")
  typedef enum {
    URL_ENCODING_NONE = 0x0,
    URL_ENCODING_ENABLE_UTF8 = 0x10000000,
    URL_ENCODING_DISABLE_UTF8 = 0x20000000
  } URL_ENCODING;

cpp_quote("")
  typedef struct _tagBINDINFO {
    ULONG cbSize;
    LPWSTR szExtraInfo;
    STGMEDIUM stgmedData;
    DWORD grfBindInfoF;
    DWORD dwBindVerb;
    LPWSTR szCustomVerb;
    DWORD cbstgmedData;
    DWORD dwOptions;
    DWORD dwOptionsFlags;
    DWORD dwCodePage;
    SECURITY_ATTRIBUTES securityAttributes;
    IID iid;
    IUnknown *pUnk;
    DWORD dwReserved;
  } BINDINFO;

cpp_quote("")
  typedef struct _REMSECURITY_ATTRIBUTES {
    DWORD nLength;
    DWORD lpSecurityDescriptor;
    BOOL bInheritHandle;
  } REMSECURITY_ATTRIBUTES,*PREMSECURITY_ATTRIBUTES,*LPREMSECURITY_ATTRIBUTES;

cpp_quote("")
  typedef struct _tagRemBINDINFO {
    ULONG cbSize;
    LPWSTR szExtraInfo;
    DWORD grfBindInfoF;
    DWORD dwBindVerb;
    LPWSTR szCustomVerb;
    DWORD cbstgmedData;
    DWORD dwOptions;
    DWORD dwOptionsFlags;
    DWORD dwCodePage;
    REMSECURITY_ATTRIBUTES securityAttributes;
    IID iid;
    IUnknown *pUnk;
    DWORD dwReserved;
  } RemBINDINFO;

cpp_quote("")
  typedef struct tagRemFORMATETC {
    DWORD cfFormat;
    DWORD ptd;
    DWORD dwAspect;
    LONG lindex;
    DWORD tymed;
  } RemFORMATETC,*LPREMFORMATETC;

cpp_quote("")
  typedef enum {
    BINDINFO_OPTIONS_WININETFLAG = 0x10000,
    BINDINFO_OPTIONS_ENABLE_UTF8 = 0x20000,
    BINDINFO_OPTIONS_DISABLE_UTF8 = 0x40000,
    BINDINFO_OPTIONS_USE_IE_ENCODING = 0x80000,
    BINDINFO_OPTIONS_BINDTOOBJECT = 0x100000,
    BINDINFO_OPTIONS_SECURITYOPTOUT = 0x200000,
    BINDINFO_OPTIONS_IGNOREMIMETEXTPLAIN = 0x400000,
    BINDINFO_OPTIONS_USEBINDSTRINGCREDS = 0x800000,
    BINDINFO_OPTIONS_IGNOREHTTPHTTPSREDIRECTS = 0x1000000,
    BINDINFO_OPTIONS_IGNORE_SSLERRORS_ONCE = 0x2000000,
    BINDINFO_WPC_DOWNLOADBLOCKED = 0x8000000,
    BINDINFO_WPC_LOGGING_ENABLED = 0x10000000,
    BINDINFO_OPTIONS_ALLOWCONNECTDATA = 0x20000000,
    BINDINFO_OPTIONS_DISABLEAUTOREDIRECTS = 0x40000000,
    BINDINFO_OPTIONS_SHDOCVW_NAVIGATE = (int) 0x80000000
  } BINDINFO_OPTIONS;

cpp_quote("")
  typedef enum {
    BSCF_FIRSTDATANOTIFICATION = 0x1,
    BSCF_INTERMEDIATEDATANOTIFICATION = 0x2,
    BSCF_LASTDATANOTIFICATION = 0x4,
    BSCF_DATAFULLYAVAILABLE = 0x8,
    BSCF_AVAILABLEDATASIZEUNKNOWN = 0x10,
    BSCF_SKIPDRAINDATAFORFILEURLS = 0x20,
    BSCF_64BITLENGTHDOWNLOAD = 0x40
  } BSCF;

cpp_quote("")
  typedef enum tagBINDSTATUS {
    BINDSTATUS_FINDINGRESOURCE = 1,
    BINDSTATUS_CONNECTING,
    BINDSTATUS_REDIRECTING,
    BINDSTATUS_BEGINDOWNLOADDATA,
    BINDSTATUS_DOWNLOADINGDATA,
    BINDSTATUS_ENDDOWNLOADDATA,
    BINDSTATUS_BEGINDOWNLOADCOMPONENTS,
    BINDSTATUS_INSTALLINGCOMPONENTS,
    BINDSTATUS_ENDDOWNLOADCOMPONENTS,
    BINDSTATUS_USINGCACHEDCOPY,
    BINDSTATUS_SENDINGREQUEST,
    BINDSTATUS_CLASSIDAVAILABLE,
    BINDSTATUS_MIMETYPEAVAILABLE,
    BINDSTATUS_CACHEFILENAMEAVAILABLE,
    BINDSTATUS_BEGINSYNCOPERATION,
    BINDSTATUS_ENDSYNCOPERATION,
    BINDSTATUS_BEGINUPLOADDATA,
    BINDSTATUS_UPLOADINGDATA,
    BINDSTATUS_ENDUPLOADDATA,
    BINDSTATUS_PROTOCOLCLASSID,
    BINDSTATUS_ENCODING,
    BINDSTATUS_VERIFIEDMIMETYPEAVAILABLE,
    BINDSTATUS_CLASSINSTALLLOCATION,
    BINDSTATUS_DECODING,
    BINDSTATUS_LOADINGMIMEHANDLER,
    BINDSTATUS_CONTENTDISPOSITIONATTACH,
    BINDSTATUS_FILTERREPORTMIMETYPE,
    BINDSTATUS_CLSIDCANINSTANTIATE,
    BINDSTATUS_IUNKNOWNAVAILABLE,
    BINDSTATUS_DIRECTBIND,
    BINDSTATUS_RAWMIMETYPE,
    BINDSTATUS_PROXYDETECTING,
    BINDSTATUS_ACCEPTRANGES,
    BINDSTATUS_COOKIE_SENT,
    BINDSTATUS_COMPACT_POLICY_RECEIVED,
    BINDSTATUS_COOKIE_SUPPRESSED,
    BINDSTATUS_COOKIE_STATE_UNKNOWN,
    BINDSTATUS_COOKIE_STATE_ACCEPT,
    BINDSTATUS_COOKIE_STATE_REJECT,
    BINDSTATUS_COOKIE_STATE_PROMPT,
    BINDSTATUS_COOKIE_STATE_LEASH,
    BINDSTATUS_COOKIE_STATE_DOWNGRADE,
    BINDSTATUS_POLICY_HREF,
    BINDSTATUS_P3P_HEADER,
    BINDSTATUS_SESSION_COOKIE_RECEIVED,
    BINDSTATUS_PERSISTENT_COOKIE_RECEIVED,
    BINDSTATUS_SESSION_COOKIES_ALLOWED,
    BINDSTATUS_CACHECONTROL,
    BINDSTATUS_CONTENTDISPOSITIONFILENAME,
    BINDSTATUS_MIMETEXTPLAINMISMATCH,
    BINDSTATUS_PUBLISHERAVAILABLE,
    BINDSTATUS_DISPLAYNAMEAVAILABLE,
    BINDSTATUS_SSLUX_NAVBLOCKED,
    BINDSTATUS_SERVER_MIMETYPEAVAILABLE,
    BINDSTATUS_SNIFFED_CLASSIDAVAILABLE,
    BINDSTATUS_64BIT_PROGRESS,
    BINDSTATUS_LAST = BINDSTATUS_64BIT_PROGRESS,
    BINDSTATUS_RESERVED_0,
    BINDSTATUS_RESERVED_1,
    BINDSTATUS_RESERVED_2,
    BINDSTATUS_RESERVED_3,
    BINDSTATUS_RESERVED_4,
    BINDSTATUS_RESERVED_5,
    BINDSTATUS_RESERVED_6,
    BINDSTATUS_RESERVED_7,
    BINDSTATUS_RESERVED_8,
    BINDSTATUS_RESERVED_9,
    BINDSTATUS_LAST_PRIVATE = BINDSTATUS_RESERVED_9
  } BINDSTATUS;
cpp_quote("")
  HRESULT OnStartBinding ([in] DWORD dwReserved,[in] IBinding *pib);
  HRESULT GetPriority ([out] LONG *pnPriority);
  HRESULT OnLowResource ([in] DWORD reserved);
  HRESULT OnProgress ([in] ULONG ulProgress,[in] ULONG ulProgressMax,[in] ULONG ulStatusCode,[in, unique] LPCWSTR szStatusText);
  HRESULT OnStopBinding ([in] HRESULT hresult,[in, unique] LPCWSTR szError);
  [local] HRESULT GetBindInfo ([out] DWORD *grfBINDF,[in, out, unique] BINDINFO *pbindinfo);
  [call_as (GetBindInfo)] HRESULT RemoteGetBindInfo ([out] DWORD *grfBINDF,[in, out, unique] RemBINDINFO *pbindinfo,[in, out, unique] RemSTGMEDIUM *pstgmed);
  [local] HRESULT OnDataAvailable ([in] DWORD grfBSCF,[in] DWORD dwSize,[in] FORMATETC *pformatetc,[in] STGMEDIUM *pstgmed);
  [call_as (OnDataAvailable)] HRESULT RemoteOnDataAvailable ([in] DWORD grfBSCF,[in] DWORD dwSize,[in] RemFORMATETC *pformatetc,[in] RemSTGMEDIUM *pstgmed);
  HRESULT OnObjectAvailable ([in] REFIID riid,[in, iid_is (riid)] IUnknown *punk);
}
cpp_quote("#endif")
cpp_quote("#endif")

cpp_quote("")
cpp_quote("#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)")
cpp_quote("#ifndef _LPBINDSTATUSCALLBACKEX_DEFINED")
cpp_quote("#define _LPBINDSTATUSCALLBACKEX_DEFINED")
cpp_quote("")
[object, uuid (aaa74ef9-8ee7-4659-88d9-f8c504da73cc), pointer_default (unique)]
interface IBindStatusCallbackEx: IBindStatusCallback {
  typedef [unique] IBindStatusCallbackEx *LPBINDSTATUSCALLBACKEX;
cpp_quote("")
  typedef enum {
    BINDF2_DISABLEBASICOVERHTTP = 0x1,
    BINDF2_DISABLEAUTOCOOKIEHANDLING = 0x2,
    BINDF2_READ_DATA_GREATER_THAN_4GB = 0x4,
    BINDF2_DISABLE_HTTP_REDIRECT_XSECURITYID = 0x8,
    BINDF2_SETDOWNLOADMODE = 0x20,
    BINDF2_DISABLE_HTTP_REDIRECT_CACHING = 0x40,
    BINDF2_KEEP_CALLBACK_MODULE_LOADED = 0x80,
    BINDF2_ALLOW_PROXY_CRED_PROMPT = 0x100,
    BINDF2_RESERVED_F = 0x20000,
    BINDF2_RESERVED_E = 0x40000,
    BINDF2_RESERVED_D = 0x80000,
    BINDF2_RESERVED_C = 0x100000,
    BINDF2_RESERVED_B = 0x200000,
    BINDF2_RESERVED_A = 0x400000,
    BINDF2_RESERVED_9 = 0x800000,
    BINDF2_RESERVED_8 = 0x1000000,
    BINDF2_RESERVED_7 = 0x2000000,
    BINDF2_RESERVED_6 = 0x4000000,
    BINDF2_RESERVED_5 = 0x8000000,
    BINDF2_RESERVED_4 = 0x10000000,
    BINDF2_RESERVED_3 = 0x20000000,
    BINDF2_RESERVED_2 = 0x40000000,
    BINDF2_RESERVED_1 = 0x80000000,
  } BINDF2;
cpp_quote("")
  [local] HRESULT GetBindInfoEx ([out] DWORD *grfBINDF,[in, out, unique] BINDINFO *pbindinfo,[out] DWORD *grfBINDF2,[out] DWORD *pdwReserved);
  [call_as (GetBindInfoEx)] HRESULT RemoteGetBindInfoEx ([out] DWORD *grfBINDF,[in, out, unique] RemBINDINFO *pbindinfo,[in, out, unique] RemSTGMEDIUM *pstgmed,[out] DWORD *grfBINDF2,[out] DWORD *pdwReserved);
}
cpp_quote("#endif")

cpp_quote("")
cpp_quote("#ifndef _LPAUTHENTICATION_DEFINED")
cpp_quote("#define _LPAUTHENTICATION_DEFINED")
cpp_quote("")
[object, uuid (79eac9d0-baf9-11ce-8c82-00aa004ba90b), pointer_default (unique)]
interface IAuthenticate : IUnknown {
  typedef [unique] IAuthenticate *LPAUTHENTICATION;
cpp_quote("")
  HRESULT Authenticate ([out] HWND *phwnd,[out] LPWSTR *pszUsername,[out] LPWSTR *pszPassword);
}
cpp_quote("#endif")

cpp_quote("")
cpp_quote("#ifndef _LPAUTHENTICATIONEX_DEFINED")
cpp_quote("#define _LPAUTHENTICATIONEX_DEFINED")
cpp_quote("")
[object, uuid (2ad1edaf-d83d-48b5-9adf-03dbe19f53bd), pointer_default (unique)]
interface IAuthenticateEx : IAuthenticate {
  typedef [unique] IAuthenticateEx *LPAUTHENTICATIONEX;
cpp_quote("")
  typedef enum {
    AUTHENTICATEF_PROXY = 0x1,
    AUTHENTICATEF_BASIC = 0x2,
    AUTHENTICATEF_HTTP = 0x4,
  } AUTHENTICATEF;
cpp_quote("")
  typedef struct _tagAUTHENTICATEINFO {
    DWORD dwFlags;
    DWORD dwReserved;
  } AUTHENTICATEINFO;
cpp_quote("")
  HRESULT AuthenticateEx ([out] HWND *phwnd,[out] LPWSTR *pszUsername,[out] LPWSTR *pszPassword,[in] AUTHENTICATEINFO *pauthinfo);
}
cpp_quote("#endif")

cpp_quote("")
cpp_quote("#ifndef _LPHTTPNEGOTIATE_DEFINED")
cpp_quote("#define _LPHTTPNEGOTIATE_DEFINED")
cpp_quote("")
[object, uuid (79eac9d2-baf9-11ce-8c82-00aa004ba90b), pointer_default (unique)]
interface IHttpNegotiate : IUnknown {
  typedef [unique] IHttpNegotiate *LPHTTPNEGOTIATE;
cpp_quote("")
  HRESULT BeginningTransaction ([in] LPCWSTR szURL,[in, unique] LPCWSTR szHeaders,[in] DWORD dwReserved,[out] LPWSTR *pszAdditionalHeaders);
  HRESULT OnResponse ([in] DWORD dwResponseCode,[in, unique] LPCWSTR szResponseHeaders,[in, unique] LPCWSTR szRequestHeaders,[out] LPWSTR *pszAdditionalRequestHeaders);
}
cpp_quote("#endif")

cpp_quote("")
cpp_quote("#ifndef _LPHTTPNEGOTIATE2_DEFINED")
cpp_quote("#define _LPHTTPNEGOTIATE2_DEFINED")
cpp_quote("")
[object, uuid (4f9f9fcb-E0F4-48eb-B7AB-FA2EA9365CB4), pointer_default (unique)]
interface IHttpNegotiate2 : IHttpNegotiate {
  typedef [unique] IHttpNegotiate2 *LPHTTPNEGOTIATE2;
cpp_quote("")
  HRESULT GetRootSecurityId ([out, size_is (*pcbSecurityId)]BYTE *pbSecurityId,[in, out]DWORD *pcbSecurityId,[in] DWORD_PTR dwReserved);
}
cpp_quote("#endif")

cpp_quote("")
cpp_quote("#ifndef _LPHTTPNEGOTIATE3_DEFINED")
cpp_quote("#define _LPHTTPNEGOTIATE3_DEFINED")
cpp_quote("")
[object, uuid (57b6c80a-34c2-4602-bc26-66a02fc57153), pointer_default (unique)]
interface IHttpNegotiate3 : IHttpNegotiate2 {
  typedef [unique] IHttpNegotiate3 *LPHTTPNEGOTIATE3;
cpp_quote("")
  HRESULT GetSerializedClientCertContext ([out, size_is (,*pcbCert)]BYTE **ppbCert,[out] DWORD *pcbCert);
}
cpp_quote("#endif")

cpp_quote("")
cpp_quote("#ifndef _LPWININETFILESTREAM_DEFINED")
cpp_quote("#define _LPWININETFILESTREAM_DEFINED")
cpp_quote("")
[object, uuid (F134C4B7-B1F8-4e75-B886-74b90943becb), pointer_default (unique)]
interface IWinInetFileStream : IUnknown {
  typedef [unique] IWinInetFileStream *LPWININETFILESTREAM;
cpp_quote("")
  HRESULT SetHandleForUnlock ([in] DWORD_PTR hWinInetLockHandle,[in] DWORD_PTR dwReserved);
  HRESULT SetDeleteFile ([in] DWORD_PTR dwReserved);
}
cpp_quote("#endif")

cpp_quote("")
cpp_quote("#ifndef _LPWINDOWFORBINDINGUI_DEFINED")
cpp_quote("#define _LPWINDOWFORBINDINGUI_DEFINED")
cpp_quote("")
[local, object, uuid (79eac9d5-bafa-11ce-8c82-00aa004ba90b), pointer_default (unique)]
interface IWindowForBindingUI : IUnknown {
  typedef [unique] IWindowForBindingUI *LPWINDOWFORBINDINGUI;
cpp_quote("")
  HRESULT GetWindow ([in] REFGUID rguidReason,[out] HWND *phwnd);
}
cpp_quote("#endif")

cpp_quote("")
cpp_quote("#ifndef _LPCODEINSTALL_DEFINED")
cpp_quote("#define _LPCODEINSTALL_DEFINED")
cpp_quote("")
[local, object, uuid (79eac9d1-baf9-11ce-8c82-00aa004ba90b), pointer_default (unique)]
interface ICodeInstall : IWindowForBindingUI {
  typedef [unique] ICodeInstall *LPCODEINSTALL;
cpp_quote("")
  typedef enum {
    CIP_DISK_FULL,
    CIP_ACCESS_DENIED,
    CIP_NEWER_VERSION_EXISTS,
    CIP_OLDER_VERSION_EXISTS,
    CIP_NAME_CONFLICT,
    CIP_TRUST_VERIFICATION_COMPONENT_MISSING,
    CIP_EXE_SELF_REGISTERATION_TIMEOUT,
    CIP_UNSAFE_TO_ABORT,
    CIP_NEED_REBOOT,
    CIP_NEED_REBOOT_UI_PERMISSION
  } CIP_STATUS;
cpp_quote("")
  HRESULT OnCodeInstallProblem ([in] ULONG ulStatusCode,[in, unique] LPCWSTR szDestination,[in, unique] LPCWSTR szSource,[in] DWORD dwReserved);
}
cpp_quote("#endif")
cpp_quote("#endif")

cpp_quote("")
cpp_quote("#if (_WIN32_IE >= _WIN32_IE_IE70)")
cpp_quote("#ifndef _LPUri_DEFINED")
cpp_quote("#define _LPUri_DEFINED")
cpp_quote("#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP)")
[object, uuid (A39EE748-6a27-4817-A6F2-13914bef5890), pointer_default (unique)]
interface IUri : IUnknown {
  typedef enum {
    Uri_PROPERTY_ABSOLUTE_URI = 0,
    Uri_PROPERTY_STRING_START = Uri_PROPERTY_ABSOLUTE_URI,
    Uri_PROPERTY_AUTHORITY = 1,
    Uri_PROPERTY_DISPLAY_URI = 2,
    Uri_PROPERTY_DOMAIN = 3,
    Uri_PROPERTY_EXTENSION = 4,
    Uri_PROPERTY_FRAGMENT = 5,
    Uri_PROPERTY_HOST = 6,
    Uri_PROPERTY_PASSWORD = 7,
    Uri_PROPERTY_PATH = 8,
    Uri_PROPERTY_PATH_AND_QUERY = 9,
    Uri_PROPERTY_QUERY = 10,
    Uri_PROPERTY_RAW_URI = 11,
    Uri_PROPERTY_SCHEME_NAME = 12,
    Uri_PROPERTY_USER_INFO = 13,
    Uri_PROPERTY_USER_NAME = 14,
    Uri_PROPERTY_STRING_LAST = Uri_PROPERTY_USER_NAME,

    Uri_PROPERTY_HOST_TYPE = 15,
    Uri_PROPERTY_DWORD_START = Uri_PROPERTY_HOST_TYPE,
    Uri_PROPERTY_PORT = 16,
    Uri_PROPERTY_SCHEME = 17,
    Uri_PROPERTY_ZONE = 18,
    Uri_PROPERTY_DWORD_LAST = Uri_PROPERTY_ZONE,
  } Uri_PROPERTY;
cpp_quote("")
  typedef enum {
    Uri_HOST_UNKNOWN,
    Uri_HOST_DNS,
    Uri_HOST_IPV4,
    Uri_HOST_IPV6,
    Uri_HOST_IDN,
  } Uri_HOST_TYPE;
cpp_quote("")
  HRESULT GetPropertyBSTR ([in, range (Uri_PROPERTY_STRING_START, Uri_PROPERTY_STRING_LAST)] Uri_PROPERTY uriProp,[out] BSTR *pbstrProperty,[in] DWORD dwFlags);
  HRESULT GetPropertyLength ([in, range (Uri_PROPERTY_STRING_START, Uri_PROPERTY_STRING_LAST)] Uri_PROPERTY uriProp,[out] DWORD *pcchProperty,[in] DWORD dwFlags);
  HRESULT GetPropertyDWORD ([in, range (Uri_PROPERTY_DWORD_START, Uri_PROPERTY_DWORD_LAST)] Uri_PROPERTY uriProp,[out] DWORD *pdwProperty,[in] DWORD dwFlags);
  HRESULT HasProperty ([in, range (Uri_PROPERTY_STRING_START, Uri_PROPERTY_DWORD_LAST)] Uri_PROPERTY uriProp,[out] BOOL *pfHasProperty);
  HRESULT GetAbsoluteUri ([out] BSTR *pbstrAbsoluteUri);
  HRESULT GetAuthority ([out] BSTR *pbstrAuthority);
  HRESULT GetDisplayUri ([out] BSTR *pbstrDisplayString);
  HRESULT GetDomain ([out] BSTR *pbstrDomain);
  HRESULT GetExtension ([out] BSTR *pbstrExtension);
  HRESULT GetFragment ([out] BSTR *pbstrFragment);
  HRESULT GetHost ([out] BSTR *pbstrHost);
  HRESULT GetPassword ([out] BSTR *pbstrPassword);
  HRESULT GetPath ([out] BSTR *pbstrPath);
  HRESULT GetPathAndQuery ([out] BSTR *pbstrPathAndQuery);
  HRESULT GetQuery ([out] BSTR *pbstrQuery);
  HRESULT GetRawUri ([out] BSTR *pbstrRawUri);
  HRESULT GetSchemeName ([out] BSTR *pbstrSchemeName);
  HRESULT GetUserInfo ([out] BSTR *pbstrUserInfo);
  HRESULT GetUserName ([out] BSTR *pbstrUserName);
  HRESULT GetHostType ([out] DWORD *pdwHostType);
  HRESULT GetPort ([out] DWORD *pdwPort);
  HRESULT GetScheme ([out] DWORD *pdwScheme);
  HRESULT GetZone ([out] DWORD *pdwZone);
  HRESULT GetProperties ([out] LPDWORD pdwFlags);
  HRESULT IsEqual ([in] IUri *pUri,[out] BOOL *pfEqual);
}

cpp_quote("")
cpp_quote("STDAPI CreateUri(LPCWSTR pwzURI, DWORD dwFlags, DWORD_PTR dwReserved, IUri **ppURI);")
cpp_quote("STDAPI CreateUriWithFragment(")
cpp_quote("LPCWSTR pwzURI, LPCWSTR pwzFragment, DWORD dwFlags, DWORD_PTR dwReserved, IUri **ppURI);")
cpp_quote("#endif")

cpp_quote("#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)")
cpp_quote("STDAPI CreateUriFromMultiByteString(LPCSTR pszANSIInputUri, DWORD dwEncodingFlags, DWORD dwCodePage, DWORD dwCreateFlags, DWORD_PTR dwReserved, IUri **ppUri);")
cpp_quote("#endif")
cpp_quote("")
cpp_quote("#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP)")
cpp_quote("#define Uri_HAS_ABSOLUTE_URI (1 << Uri_PROPERTY_ABSOLUTE_URI)")
cpp_quote("#define Uri_HAS_AUTHORITY (1 << Uri_PROPERTY_AUTHORITY)")
cpp_quote("#define Uri_HAS_DISPLAY_URI (1 << Uri_PROPERTY_DISPLAY_URI)")
cpp_quote("#define Uri_HAS_DOMAIN (1 << Uri_PROPERTY_DOMAIN)")
cpp_quote("#define Uri_HAS_EXTENSION (1 << Uri_PROPERTY_EXTENSION)")
cpp_quote("#define Uri_HAS_FRAGMENT (1 << Uri_PROPERTY_FRAGMENT)")
cpp_quote("#define Uri_HAS_HOST (1 << Uri_PROPERTY_HOST)")
cpp_quote("#define Uri_HAS_PASSWORD (1 << Uri_PROPERTY_PASSWORD)")
cpp_quote("#define Uri_HAS_PATH (1 << Uri_PROPERTY_PATH)")
cpp_quote("#define Uri_HAS_QUERY (1 << Uri_PROPERTY_QUERY)")
cpp_quote("#define Uri_HAS_RAW_URI (1 << Uri_PROPERTY_RAW_URI)")
cpp_quote("#define Uri_HAS_SCHEME_NAME (1 << Uri_PROPERTY_SCHEME_NAME)")
cpp_quote("#define Uri_HAS_USER_NAME (1 << Uri_PROPERTY_USER_NAME)")
cpp_quote("#define Uri_HAS_PATH_AND_QUERY (1 << Uri_PROPERTY_PATH_AND_QUERY)")
cpp_quote("#define Uri_HAS_USER_INFO (1 << Uri_PROPERTY_USER_INFO)")
cpp_quote("#define Uri_HAS_HOST_TYPE (1 << Uri_PROPERTY_HOST_TYPE)")
cpp_quote("#define Uri_HAS_PORT (1 << Uri_PROPERTY_PORT)")
cpp_quote("#define Uri_HAS_SCHEME (1 << Uri_PROPERTY_SCHEME)")
cpp_quote("#define Uri_HAS_ZONE (1 << Uri_PROPERTY_ZONE)")
cpp_quote("")
cpp_quote("#define Uri_CREATE_ALLOW_RELATIVE 0x1")
cpp_quote("#define Uri_CREATE_ALLOW_IMPLICIT_WILDCARD_SCHEME 0x2")
cpp_quote("#define Uri_CREATE_ALLOW_IMPLICIT_FILE_SCHEME 0x4")
cpp_quote("#define Uri_CREATE_NOFRAG 0x8")
cpp_quote("#define Uri_CREATE_NO_CANONICALIZE 0x10")
cpp_quote("#define Uri_CREATE_CANONICALIZE 0x100")
cpp_quote("#define Uri_CREATE_FILE_USE_DOS_PATH 0x20")
cpp_quote("#define Uri_CREATE_DECODE_EXTRA_INFO 0x40")
cpp_quote("#define Uri_CREATE_NO_DECODE_EXTRA_INFO 0x80")
cpp_quote("#define Uri_CREATE_CRACK_UNKNOWN_SCHEMES 0x200")
cpp_quote("#define Uri_CREATE_NO_CRACK_UNKNOWN_SCHEMES 0x400")
cpp_quote("#define Uri_CREATE_PRE_PROCESS_HTML_URI 0x800")
cpp_quote("#define Uri_CREATE_NO_PRE_PROCESS_HTML_URI 0x1000")
cpp_quote("#define Uri_CREATE_IE_SETTINGS 0x2000")
cpp_quote("#define Uri_CREATE_NO_IE_SETTINGS 0x4000")
cpp_quote("#define Uri_CREATE_NO_ENCODE_FORBIDDEN_CHARACTERS 0x8000")
cpp_quote("#define Uri_CREATE_NORMALIZE_INTL_CHARACTERS 0x10000")
cpp_quote("#define Uri_CREATE_CANONICALIZE_ABSOLUTE 0x20000")
cpp_quote("")
cpp_quote("#define Uri_DISPLAY_NO_FRAGMENT 0x1")
cpp_quote("#define Uri_PUNYCODE_IDN_HOST 0x2")
cpp_quote("#define Uri_DISPLAY_IDN_HOST 0x4")
cpp_quote("#define Uri_DISPLAY_NO_PUNYCODE 0x8")
cpp_quote("")
cpp_quote("#define Uri_ENCODING_USER_INFO_AND_PATH_IS_PERCENT_ENCODED_UTF8 0x1")
cpp_quote("#define Uri_ENCODING_USER_INFO_AND_PATH_IS_CP 0x2")
cpp_quote("#define Uri_ENCODING_HOST_IS_IDN 0x4")
cpp_quote("#define Uri_ENCODING_HOST_IS_PERCENT_ENCODED_UTF8 0x8")
cpp_quote("#define Uri_ENCODING_HOST_IS_PERCENT_ENCODED_CP 0x10")
cpp_quote("#define Uri_ENCODING_QUERY_AND_FRAGMENT_IS_PERCENT_ENCODED_UTF8 0x20")
cpp_quote("#define Uri_ENCODING_QUERY_AND_FRAGMENT_IS_CP 0x40")
cpp_quote("")
cpp_quote("#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)")
cpp_quote("")
cpp_quote("#define UriBuilder_USE_ORIGINAL_FLAGS 0x1")
cpp_quote("#endif")
cpp_quote("#endif")

cpp_quote("")
cpp_quote("#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)")
[object, local, uuid (a158a630-ed6f-45fb-b987-f68676f57752), pointer_default (unique)]
interface IUriContainer : IUnknown {
  HRESULT GetIUri ([out] IUri **ppIUri);
}
cpp_quote("")
[local, object, uuid (4221b2e1-8955-46c0-BD5B-DE9897565DE7), pointer_default (unique)]
interface IUriBuilder: IUnknown {
  HRESULT CreateUriSimple ([in] DWORD dwAllowEncodingPropertyMask,[in] DWORD_PTR dwReserved,[out] IUri **ppIUri);
  HRESULT CreateUri ([in] DWORD dwCreateFlags,[in] DWORD dwAllowEncodingPropertyMask,[in] DWORD_PTR dwReserved,[out] IUri **ppIUri);
  HRESULT CreateUriWithFlags ([in] DWORD dwCreateFlags,[in] DWORD dwUriBuilderFlags,[in] DWORD dwAllowEncodingPropertyMask,[in] DWORD_PTR dwReserved,[out] IUri **ppIUri);
  HRESULT GetIUri ([out]IUri **ppIUri);
  HRESULT SetIUri ([in, unique]IUri *pIUri);
  HRESULT GetFragment ([out] DWORD *pcchFragment,[out] LPCWSTR *ppwzFragment);
  HRESULT GetHost ([out] DWORD *pcchHost,[out] LPCWSTR *ppwzHost);
  HRESULT GetPassword ([out] DWORD *pcchPassword,[out] LPCWSTR *ppwzPassword);
  HRESULT GetPath ([out] DWORD *pcchPath,[out] LPCWSTR *ppwzPath);
  HRESULT GetPort ([out] BOOL *pfHasPort,[out]DWORD *pdwPort);
  HRESULT GetQuery ([out] DWORD *pcchQuery,[out] LPCWSTR *ppwzQuery);
  HRESULT GetSchemeName ([out] DWORD *pcchSchemeName,[out] LPCWSTR *ppwzSchemeName);
  HRESULT GetUserName ([out] DWORD *pcchUserName,[out] LPCWSTR *ppwzUserName);
  HRESULT SetFragment ([in]LPCWSTR pwzNewValue);
  HRESULT SetHost ([in]LPCWSTR pwzNewValue);
  HRESULT SetPassword ([in]LPCWSTR pwzNewValue);
  HRESULT SetPath ([in]LPCWSTR pwzNewValue);
  HRESULT SetPort ([in]BOOL fHasPort,[in]DWORD dwNewValue);
  HRESULT SetQuery ([in]LPCWSTR pwzNewValue);
  HRESULT SetSchemeName ([in]LPCWSTR pwzNewValue);
  HRESULT SetUserName ([in]LPCWSTR pwzNewValue);
  HRESULT RemoveProperties ([in]DWORD dwPropertyMask);
  HRESULT HasBeenModified ([out]BOOL *pfModified);
};

cpp_quote("")
[local, object, uuid (E982CE48-0b96-440c-BC37-0c869b27a29e), pointer_default (unique)]
interface IUriBuilderFactory: IUnknown {
  HRESULT CreateIUriBuilder ([in] DWORD dwFlags,[in] DWORD_PTR dwReserved,[out] IUriBuilder **ppIUriBuilder);
  HRESULT CreateInitializedIUriBuilder ([in] DWORD dwFlags,[in] DWORD_PTR dwReserved,[out] IUriBuilder **ppIUriBuilder);
};

cpp_quote("")
cpp_quote("STDAPI CreateIUriBuilder(IUri *pIUri, DWORD dwFlags, DWORD_PTR dwReserved, IUriBuilder **ppIUriBuilder);")
cpp_quote("#endif")
cpp_quote("#endif")

cpp_quote("")
cpp_quote("#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)")
cpp_quote("#ifndef _LPWININETINFO_DEFINED")
cpp_quote("#define _LPWININETINFO_DEFINED")
cpp_quote("")
[object, uuid (79eac9d6-bafa-11ce-8c82-00aa004ba90b), pointer_default (unique)]
interface IWinInetInfo : IUnknown {
  typedef [unique] IWinInetInfo *LPWININETINFO;
  [local] HRESULT QueryOption ([in] DWORD dwOption,[in, out, size_is (*pcbBuf)] LPVOID pBuffer,[in, out] DWORD *pcbBuf);
  [call_as (QueryOption)] HRESULT RemoteQueryOption ([in] DWORD dwOption,[in, out, size_is (*pcbBuf)] BYTE *pBuffer,[in, out] DWORD *pcbBuf);
}
cpp_quote("#endif")

cpp_quote("")
cpp_quote("#define WININETINFO_OPTION_LOCK_HANDLE 65534")

cpp_quote("")
cpp_quote("#ifndef _LPHTTPSECURITY_DEFINED")
cpp_quote("#define _LPHTTPSECURITY_DEFINED")
cpp_quote("")
[local, object, uuid (79eac9d7-bafa-11ce-8c82-00aa004ba90b), pointer_default (unique)]
interface IHttpSecurity : IWindowForBindingUI {
  typedef [unique] IHttpSecurity *LPHTTPSECURITY;
cpp_quote("")
  HRESULT OnSecurityProblem ([in] DWORD dwProblem);
}
cpp_quote("#endif")

cpp_quote("")
cpp_quote("#ifndef _LPWININETHTTPINFO_DEFINED")
cpp_quote("#define _LPWININETHTTPINFO_DEFINED")
cpp_quote("")
[object, uuid (79eac9d8-bafa-11ce-8c82-00aa004ba90b), pointer_default (unique)]
interface IWinInetHttpInfo : IWinInetInfo {
  typedef [unique] IWinInetHttpInfo *LPWININETHTTPINFO;
cpp_quote("")
  [local] HRESULT QueryInfo ([in] DWORD dwOption,[in, out, size_is (*pcbBuf)] LPVOID pBuffer,[in, out] DWORD *pcbBuf,[in, out] DWORD *pdwFlags,[in, out] DWORD *pdwReserved);
  [call_as (QueryInfo)] HRESULT RemoteQueryInfo ([in] DWORD dwOption,[in, out, size_is (*pcbBuf)] BYTE *pBuffer,[in, out] DWORD *pcbBuf,[in, out] DWORD *pdwFlags,[in, out] DWORD *pdwReserved);
}
cpp_quote("#endif")

cpp_quote("")
cpp_quote("#ifndef _LPWININETHTTPTIMEOUTS_DEFINED")
cpp_quote("#define _LPWININETHTTPTIMEOUTS_DEFINED")
[local, object, uuid (F286FA56-C1FD-4270-8e67-B3EB790A81E8), pointer_default (unique)]
interface IWinInetHttpTimeouts : IUnknown {
  HRESULT GetRequestTimeouts ([out] DWORD *pdwConnectTimeout,[out] DWORD *pdwSendTimeout,[out] DWORD *pdwReceiveTimeout);
}
cpp_quote("#endif")

cpp_quote("")
cpp_quote("#if (_WIN32_IE >= _WIN32_IE_IE60SP2)")
cpp_quote("#ifndef _LPWININETCACHEHINTS_DEFINED")
cpp_quote("#define _LPWININETCACHEHINTS_DEFINED")
cpp_quote("")
[local, object, uuid (DD1EC3B3-8391-4fdb-A9E6-347c3caaa7dd), pointer_default (unique)]
interface IWinInetCacheHints : IUnknown {
  typedef [unique] IWinInetCacheHints *LPWININETCACHEHINTS;
cpp_quote("")
  HRESULT SetCacheExtension ([in] LPCWSTR pwzExt,[in, out, size_is (*pcbCacheFile)] LPVOID pszCacheFile,[in, out] DWORD *pcbCacheFile,[in, out] DWORD *pdwWinInetError,[in, out] DWORD *pdwReserved);
}
cpp_quote("#endif")
cpp_quote("#endif")

cpp_quote("")
cpp_quote("#if (_WIN32_IE >= _WIN32_IE_IE70)")
cpp_quote("#ifndef _LPWININETCACHEHINTS2_DEFINED")
cpp_quote("#define _LPWININETCACHEHINTS2_DEFINED")
cpp_quote("")
[local, object, uuid (7857aeac-D31F-49bf-884e-DD46DF36780A), pointer_default (unique)]
interface IWinInetCacheHints2 : IWinInetCacheHints {
  typedef [unique] IWinInetCacheHints2 *LPWININETCACHEHINTS2;
cpp_quote("")
  HRESULT SetCacheExtension2 ([in] LPCWSTR pwzExt,[out, size_is (sizeof (WCHAR) *(*pcchCacheFile))]WCHAR *pwzCacheFile,[in, out] DWORD *pcchCacheFile,[out] DWORD *pdwWinInetError,[out] DWORD *pdwReserved);
}
cpp_quote("#endif")
cpp_quote("#endif")

cpp_quote("")
cpp_quote("#define SID_IBindHost IID_IBindHost")
cpp_quote("#define SID_SBindHost IID_IBindHost")

cpp_quote("")
cpp_quote("#ifndef _LPBINDHOST_DEFINED")
cpp_quote("#define _LPBINDHOST_DEFINED")

cpp_quote("")
cpp_quote("EXTERN_C const GUID SID_BindHost;")
cpp_quote("")
[object, uuid (fc4801a1-2ba9-11cf-a229-00aa003d7352), pointer_default (unique)]
interface IBindHost : IUnknown {
  typedef [unique] IBindHost *LPBINDHOST;
cpp_quote("")
  HRESULT CreateMoniker ([in] LPOLESTR szName,[in] IBindCtx *pBC,[out] IMoniker **ppmk,[in] DWORD dwReserved);
  [local] HRESULT MonikerBindToStorage ([in] IMoniker *pMk,[in] IBindCtx *pBC,[in] IBindStatusCallback *pBSC,[in] REFIID riid,[out] void **ppvObj);
  [call_as (MonikerBindToStorage)] HRESULT RemoteMonikerBindToStorage ([in, unique] IMoniker *pMk,[in, unique] IBindCtx *pBC,[in, unique] IBindStatusCallback *pBSC,[in] REFIID riid,[out, iid_is (riid)] IUnknown **ppvObj);
  [local] HRESULT MonikerBindToObject ([in] IMoniker *pMk,[in] IBindCtx *pBC,[in] IBindStatusCallback *pBSC,[in] REFIID riid,[out] void **ppvObj);
  [call_as (MonikerBindToObject)] HRESULT RemoteMonikerBindToObject ([in, unique] IMoniker *pMk,[in, unique] IBindCtx *pBC,[in, unique] IBindStatusCallback *pBSC,[in] REFIID riid,[out, iid_is (riid)] IUnknown **ppvObj);
}
cpp_quote("#endif")

cpp_quote("")
cpp_quote("#define URLOSTRM_USECACHEDCOPY_ONLY 0x1")
cpp_quote("#define URLOSTRM_USECACHEDCOPY 0x2")
cpp_quote("#define URLOSTRM_GETNEWESTVERSION 0x3")
cpp_quote("")
cpp_quote("struct IBindStatusCallback;")
cpp_quote("STDAPI HlinkSimpleNavigateToString(LPCWSTR szTarget, LPCWSTR szLocation, LPCWSTR szTargetFrameName, IUnknown *pUnk, IBindCtx *pbc, IBindStatusCallback *, DWORD grfHLNF, DWORD dwReserved);")
cpp_quote("STDAPI HlinkSimpleNavigateToMoniker(IMoniker *pmkTarget, LPCWSTR szLocation, LPCWSTR szTargetFrameName, IUnknown *pUnk, IBindCtx *pbc, IBindStatusCallback *, DWORD grfHLNF, DWORD dwReserved);")
cpp_quote("STDAPI URLOpenStreamA(LPUNKNOWN,LPCSTR,DWORD,LPBINDSTATUSCALLBACK);")
cpp_quote("STDAPI URLOpenStreamW(LPUNKNOWN,LPCWSTR,DWORD,LPBINDSTATUSCALLBACK);")
cpp_quote("STDAPI URLOpenPullStreamA(LPUNKNOWN,LPCSTR,DWORD,LPBINDSTATUSCALLBACK);")
cpp_quote("STDAPI URLOpenPullStreamW(LPUNKNOWN,LPCWSTR,DWORD,LPBINDSTATUSCALLBACK);")
cpp_quote("STDAPI URLDownloadToFileA(LPUNKNOWN,LPCSTR,LPCSTR,DWORD,LPBINDSTATUSCALLBACK);")
cpp_quote("STDAPI URLDownloadToFileW(LPUNKNOWN,LPCWSTR,LPCWSTR,DWORD,LPBINDSTATUSCALLBACK);")
cpp_quote("STDAPI URLDownloadToCacheFileA(LPUNKNOWN, LPCSTR,  LPSTR,  DWORD, DWORD, LPBINDSTATUSCALLBACK);")
cpp_quote("STDAPI URLDownloadToCacheFileW(LPUNKNOWN, LPCWSTR, LPWSTR, DWORD, DWORD, LPBINDSTATUSCALLBACK);")
cpp_quote("STDAPI URLOpenBlockingStreamA(LPUNKNOWN,LPCSTR,LPSTREAM*,DWORD,LPBINDSTATUSCALLBACK);")
cpp_quote("STDAPI URLOpenBlockingStreamW(LPUNKNOWN,LPCWSTR,LPSTREAM*,DWORD,LPBINDSTATUSCALLBACK);")
cpp_quote("")
cpp_quote("#define URLOpenStream __MINGW_NAME_AW(URLOpenStream)")
cpp_quote("#define URLOpenPullStream __MINGW_NAME_AW(URLOpenPullStream)")
cpp_quote("#define URLDownloadToFile __MINGW_NAME_AW(URLDownloadToFile)")
cpp_quote("#define URLDownloadToCacheFile __MINGW_NAME_AW(URLDownloadToCacheFile)")
cpp_quote("#define URLOpenBlockingStream __MINGW_NAME_AW(URLOpenBlockingStream)")
cpp_quote("")
cpp_quote("STDAPI HlinkGoBack(IUnknown *pUnk);")
cpp_quote("STDAPI HlinkGoForward(IUnknown *pUnk);")
cpp_quote("STDAPI HlinkNavigateString(IUnknown *pUnk, LPCWSTR szTarget);")
cpp_quote("STDAPI HlinkNavigateMoniker(IUnknown *pUnk, IMoniker *pmkTarget);")

cpp_quote("")
cpp_quote("#ifndef  _URLMON_NO_ASYNC_PLUGABLE_PROTOCOLS_")
interface IInternet;
interface IInternetBindInfo;
interface IInternetBindInfoEx;
interface IInternetProtocolRoot;
interface IInternetProtocol;
interface IInternetProtocolEx;
interface IInternetProtocolSink;
interface IInternetProtocolInfo;
interface IInternetSession;
interface IInternetProtocolSinkStackable;

cpp_quote("")
cpp_quote("#ifndef _LPIINTERNET")
cpp_quote("#define _LPIINTERNET")
cpp_quote("")
[local, object, uuid (79eac9e0-baf9-11ce-8c82-00aa004ba90b), pointer_default (unique)]
interface IInternet : IUnknown {
  typedef [unique] IInternet *LPIINTERNET;
}
cpp_quote("#endif")

cpp_quote("")
cpp_quote("#ifndef _LPIINTERNETBINDINFO")
cpp_quote("#define _LPIINTERNETBINDINFO")
cpp_quote("")
[local, object, uuid (79eac9e1-baf9-11ce-8c82-00aa004ba90b), pointer_default (unique)]
interface IInternetBindInfo : IUnknown {
  typedef [unique] IInternetBindInfo *LPIINTERNETBINDINFO;
cpp_quote("")
  typedef enum tagBINDSTRING {
    BINDSTRING_HEADERS = 1,
    BINDSTRING_ACCEPT_MIMES,
    BINDSTRING_EXTRA_URL,
    BINDSTRING_LANGUAGE,
    BINDSTRING_USERNAME,
    BINDSTRING_PASSWORD,
    BINDSTRING_UA_PIXELS,
    BINDSTRING_UA_COLOR,
    BINDSTRING_OS,
    BINDSTRING_USER_AGENT,
    BINDSTRING_ACCEPT_ENCODINGS,
    BINDSTRING_POST_COOKIE,
    BINDSTRING_POST_DATA_MIME,
    BINDSTRING_URL,BINDSTRING_IID,
    BINDSTRING_FLAG_BIND_TO_OBJECT,
    BINDSTRING_PTR_BIND_CONTEXT,
    BINDSTRING_XDR_ORIGIN,
    BINDSTRING_DOWNLOADPATH,
    BINDSTRING_ROOTDOC_URL,
    BINDSTRING_INITIAL_FILENAME,
    BINDSTRING_PROXY_USERNAME,
    BINDSTRING_PROXY_PASSWORD
  } BINDSTRING;
cpp_quote("")
  HRESULT GetBindInfo ([out] DWORD *grfBINDF,[in, out, unique] BINDINFO *pbindinfo);
  HRESULT GetBindString ([in] ULONG ulStringType,[in, out] LPOLESTR *ppwzStr,[in] ULONG cEl,[in, out] ULONG *pcElFetched);
}
cpp_quote("#endif")

cpp_quote("")
cpp_quote("#ifndef _LPIINTERNETBINDINFOEX")
cpp_quote("#define _LPIINTERNETBINDINFOEX")
cpp_quote("")
[local, object, uuid (a3e015b7-a82c-4dcd-a150-569aeeed36ab), pointer_default (unique)]
interface IInternetBindInfoEx : IInternetBindInfo {
  typedef [unique] IInternetBindInfoEx *LPIINTERNETBINDINFOEX;
cpp_quote("")
  HRESULT GetBindInfoEx ([out] DWORD *grfBINDF,[in, out, unique] BINDINFO *pbindinfo,[out] DWORD *grfBINDF2,[out] DWORD *pdwReserved);
}
cpp_quote("#endif")

cpp_quote("")
cpp_quote("#ifndef _LPIINTERNETPROTOCOLROOT_DEFINED")
cpp_quote("#define _LPIINTERNETPROTOCOLROOT_DEFINED")
cpp_quote("")
[local, object, uuid (79eac9e3-baf9-11ce-8c82-00aa004ba90b), pointer_default (unique)]
interface IInternetProtocolRoot : IUnknown {
  typedef [unique] IInternetProtocolRoot *LPIINTERNETPROTOCOLROOT;
cpp_quote("")
  typedef enum _tagPI_FLAGS {
    PI_PARSE_URL = 0x1,
    PI_FILTER_MODE = 0x2,
    PI_FORCE_ASYNC = 0x4,
    PI_USE_WORKERTHREAD = 0x8,
    PI_MIMEVERIFICATION = 0x10,
    PI_CLSIDLOOKUP = 0x20,
    PI_DATAPROGRESS = 0x40,
    PI_SYNCHRONOUS = 0x80,
    PI_APARTMENTTHREADED = 0x100,
    PI_CLASSINSTALL = 0x200,
    PI_PASSONBINDCTX = 0x2000,
    PI_NOMIMEHANDLER = 0x8000,
    PI_LOADAPPDIRECT = 0x4000,
    PD_FORCE_SWITCH = 0x10000,
    PI_PREFERDEFAULTHANDLER = 0x20000
  } PI_FLAGS;
  typedef struct _tagPROTOCOLDATA {
    DWORD grfFlags;
    DWORD dwState;
    LPVOID pData;
    ULONG cbData;
  } PROTOCOLDATA;
cpp_quote("")
  typedef struct _tagStartParam {
    IID iid;
    IBindCtx *pIBindCtx;
    IUnknown *pItf;
  } StartParam;
cpp_quote("")
  HRESULT Start ([in] LPCWSTR szUrl,[in] IInternetProtocolSink *pOIProtSink,[in] IInternetBindInfo *pOIBindInfo,[in] DWORD grfPI,[in] HANDLE_PTR dwReserved);
  HRESULT Continue ([in] PROTOCOLDATA *pProtocolData);
  HRESULT Abort ([in] HRESULT hrReason,[in] DWORD dwOptions);
  HRESULT Terminate ([in] DWORD dwOptions);
  HRESULT Suspend ();
  HRESULT Resume ();
}
cpp_quote("#endif")

cpp_quote("")
cpp_quote("#ifndef _LPIINTERNETPROTOCOL_DEFINED")
cpp_quote("#define _LPIINTERNETPROTOCOL_DEFINED")
cpp_quote("")
[local, object, uuid (79eac9e4-baf9-11ce-8c82-00aa004ba90b), pointer_default (unique)]
interface IInternetProtocol : IInternetProtocolRoot {
  typedef [unique] IInternetProtocol *LPIINTERNETPROTOCOL;
cpp_quote("")
  HRESULT Read ([in, out, size_is (cb), length_is (*pcbRead)]void *pv,[in] ULONG cb,[out] ULONG *pcbRead);
  HRESULT Seek ([in] LARGE_INTEGER dlibMove,[in] DWORD dwOrigin,[out] ULARGE_INTEGER *plibNewPosition);
  HRESULT LockRequest ([in] DWORD dwOptions);
  HRESULT UnlockRequest ();
}
cpp_quote("#endif")

cpp_quote("")
cpp_quote("#if (_WIN32_IE >= _WIN32_IE_IE70)")
cpp_quote("#ifndef _LPIINTERNETPROTOCOLEX_DEFINED")
cpp_quote("#define _LPIINTERNETPROTOCOLEX_DEFINED")
cpp_quote("")
[local, object, uuid (C7A98E66-1010-492c-A1C8-C809E1F75905), pointer_default (unique)]
interface IInternetProtocolEx: IInternetProtocol {
  HRESULT StartEx ([in] IUri *pUri,[in] IInternetProtocolSink *pOIProtSink,[in] IInternetBindInfo *pOIBindInfo,[in] DWORD grfPI,[in] HANDLE_PTR dwReserved);
}
cpp_quote("#endif")
cpp_quote("#endif")

cpp_quote("")
cpp_quote("#ifndef _LPIINTERNETPROTOCOLSINK_DEFINED")
cpp_quote("#define _LPIINTERNETPROTOCOLSINK_DEFINED")
[local, object, uuid (79eac9e5-baf9-11ce-8c82-00aa004ba90b), pointer_default (unique)]
interface IInternetProtocolSink : IUnknown {
  typedef [unique] IInternetProtocolSink *LPIINTERNETPROTOCOLSINK;
cpp_quote("")
  HRESULT Switch ([in] PROTOCOLDATA *pProtocolData);
  HRESULT ReportProgress ([in] ULONG ulStatusCode,[in] LPCWSTR szStatusText);
  HRESULT ReportData ([in] DWORD grfBSCF,[in] ULONG ulProgress,[in] ULONG ulProgressMax);
  HRESULT ReportResult ([in] HRESULT hrResult,[in] DWORD dwError,[in] LPCWSTR szResult);
}
cpp_quote("#endif")

cpp_quote("")
cpp_quote("#ifndef _LPIINTERNETPROTOCOLSINKSTACKABLE_DEFINED")
cpp_quote("#define _LPIINTERNETPROTOCOLSINKSTACKABLE_DEFINED")
cpp_quote("")
[local, object, uuid (79eac9f0-baf9-11ce-8c82-00aa004ba90b), pointer_default (unique)]
interface IInternetProtocolSinkStackable : IUnknown {
  typedef [unique] IInternetProtocolSinkStackable *LPIINTERNETPROTOCOLSINKStackable;
cpp_quote("")
  HRESULT SwitchSink ([in] IInternetProtocolSink *pOIProtSink);
  HRESULT CommitSwitch ();
  HRESULT RollbackSwitch ();
}
cpp_quote("#endif")

cpp_quote("")
cpp_quote("#ifndef _LPIINTERNETSESSION_DEFINED")
cpp_quote("#define _LPIINTERNETSESSION_DEFINED")
cpp_quote("")
[local, object, uuid (79eac9e7-baf9-11ce-8c82-00aa004ba90b), pointer_default (unique)]
interface IInternetSession : IUnknown {
  typedef [unique] IInternetSession *LPIINTERNETSESSION;
cpp_quote("")
  typedef enum _tagOIBDG_FLAGS {
    OIBDG_APARTMENTTHREADED = 0x100,
    OIBDG_DATAONLY = 0x1000
  } OIBDG_FLAGS;
cpp_quote("")
  HRESULT RegisterNameSpace ([in] IClassFactory *pCF,[in] REFCLSID rclsid,[in] LPCWSTR pwzProtocol,[in] ULONG cPatterns,[in] const LPCWSTR *ppwzPatterns,[in] DWORD dwReserved);
  HRESULT UnregisterNameSpace ([in] IClassFactory *pCF,[in] LPCWSTR pszProtocol);
  HRESULT RegisterMimeFilter ([in] IClassFactory *pCF,[in] REFCLSID rclsid,[in] LPCWSTR pwzType);
  HRESULT UnregisterMimeFilter ([in] IClassFactory *pCF,[in] LPCWSTR pwzType);
  HRESULT CreateBinding ([in] LPBC pBC,[in] LPCWSTR szUrl,[in] IUnknown *pUnkOuter,[out, unique] IUnknown **ppUnk,[out, unique] IInternetProtocol **ppOInetProt,[in] DWORD dwOption);
  HRESULT SetSessionOption ([in] DWORD dwOption,[in] LPVOID pBuffer,[in] DWORD dwBufferLength,[in] DWORD dwReserved);
  HRESULT GetSessionOption ([in] DWORD dwOption,[in, out] LPVOID pBuffer,[in, out] DWORD *pdwBufferLength,[in] DWORD dwReserved);
}
cpp_quote("#endif")

cpp_quote("")
cpp_quote("#ifndef _LPIINTERNETTHREADSWITCH_DEFINED")
cpp_quote("#define _LPIINTERNETTHREADSWITCH_DEFINED")
cpp_quote("")
[local, object, uuid (79eac9e8-baf9-11ce-8c82-00aa004ba90b), pointer_default (unique)]
interface IInternetThreadSwitch : IUnknown {
  typedef [unique] IInternetThreadSwitch *LPIINTERNETTHREADSWITCH;
cpp_quote("")
  HRESULT Prepare ();
  HRESULT Continue ();
}
cpp_quote("#endif")

cpp_quote("")
cpp_quote("#ifndef _LPIINTERNETPRIORITY_DEFINED")
cpp_quote("#define _LPIINTERNETPRIORITY_DEFINED")
cpp_quote("")
[local, object, uuid (79eac9eb-baf9-11ce-8c82-00aa004ba90b), pointer_default (unique)]
interface IInternetPriority : IUnknown {
  typedef [unique] IInternetPriority *LPIINTERNETPRIORITY;
cpp_quote("")
  HRESULT SetPriority ([in] LONG nPriority);
  HRESULT GetPriority ([out] LONG *pnPriority);
}
cpp_quote("#endif")

cpp_quote("")
cpp_quote("#ifndef _LPIINTERNETPROTOCOLINFO_DEFINED")
cpp_quote("#define _LPIINTERNETPROTOCOLINFO_DEFINED")
cpp_quote("")
[local, object, uuid (79eac9ec-baf9-11ce-8c82-00aa004ba90b), pointer_default (unique)]
interface IInternetProtocolInfo : IUnknown {
  typedef [unique] IInternetProtocolInfo *LPIINTERNETPROTOCOLINFO;
cpp_quote("")
  typedef enum _tagPARSEACTION {
    PARSE_CANONICALIZE = 1,
    PARSE_FRIENDLY,
    PARSE_SECURITY_URL,
    PARSE_ROOTDOCUMENT,
    PARSE_DOCUMENT,
    PARSE_ANCHOR,
    PARSE_ENCODE_IS_UNESCAPE,
    PARSE_DECODE_IS_ESCAPE,
    PARSE_PATH_FROM_URL,
    PARSE_URL_FROM_PATH,
    PARSE_MIME,
    PARSE_SERVER,
    PARSE_SCHEMA,
    PARSE_SITE,
    PARSE_DOMAIN,
    PARSE_LOCATION,
    PARSE_SECURITY_DOMAIN,
    PARSE_ESCAPE,
    PARSE_UNESCAPE
  } PARSEACTION;
cpp_quote("")
  typedef enum _tagPSUACTION {
    PSU_DEFAULT = 1,
    PSU_SECURITY_URL_ONLY
  } PSUACTION;
cpp_quote("")
  typedef enum _tagQUERYOPTION {
    QUERY_EXPIRATION_DATE = 1,
    QUERY_TIME_OF_LAST_CHANGE,
    QUERY_CONTENT_ENCODING,
    QUERY_CONTENT_TYPE,
    QUERY_REFRESH,
    QUERY_RECOMBINE,
    QUERY_CAN_NAVIGATE,
    QUERY_USES_NETWORK,
    QUERY_IS_CACHED,
    QUERY_IS_INSTALLEDENTRY,
    QUERY_IS_CACHED_OR_MAPPED,
    QUERY_USES_CACHE,
    QUERY_IS_SECURE,
    QUERY_IS_SAFE,
    QUERY_USES_HISTORYFOLDER,
    QUERY_IS_CACHED_AND_USABLE_OFFLINE
  } QUERYOPTION;
cpp_quote("")
  HRESULT ParseUrl ([in] LPCWSTR pwzUrl,[in] PARSEACTION ParseAction,[in] DWORD dwParseFlags,[out] LPWSTR pwzResult,[in] DWORD cchResult,[out] DWORD *pcchResult,[in] DWORD dwReserved);
  HRESULT CombineUrl ([in] LPCWSTR pwzBaseUrl,[in] LPCWSTR pwzRelativeUrl,[in] DWORD dwCombineFlags,[out] LPWSTR pwzResult,[in] DWORD cchResult,[out] DWORD *pcchResult,[in] DWORD dwReserved);
  HRESULT CompareUrl ([in] LPCWSTR pwzUrl1,[in] LPCWSTR pwzUrl2,[in] DWORD dwCompareFlags);
  HRESULT QueryInfo ([in] LPCWSTR pwzUrl,[in] QUERYOPTION OueryOption,[in] DWORD dwQueryFlags,[in, out, size_is (*pcbBuf)] LPVOID pBuffer,[in] DWORD cbBuffer,[in, out] DWORD *pcbBuf,[in] DWORD dwReserved);
}

cpp_quote("")
cpp_quote("#ifndef URLMON_STRICT")
cpp_quote("#define PARSE_ENCODE PARSE_ENCODE_IS_UNESCAPE")
cpp_quote("#define PARSE_DECODE PARSE_DECODE_IS_ESCAPE")
cpp_quote("#endif")
cpp_quote("#endif")

cpp_quote("")
cpp_quote("#define IOInet               IInternet")
cpp_quote("#define IOInetBindInfo       IInternetBindInfo")
cpp_quote("#define IOInetBindInfoEx     IInternetBindInfoEx")
cpp_quote("#define IOInetProtocolRoot   IInternetProtocolRoot")
cpp_quote("#define IOInetProtocol       IInternetProtocol")
cpp_quote("")
cpp_quote("#if (_WIN32_IE >= _WIN32_IE_IE70)")
cpp_quote("#define IOInetProtocolEx     IInternetProtocolEx")
cpp_quote("#endif")
cpp_quote("#define IOInetProtocolSink   IInternetProtocolSink")
cpp_quote("#define IOInetProtocolInfo   IInternetProtocolInfo")
cpp_quote("#define IOInetSession        IInternetSession")
cpp_quote("#define IOInetPriority       IInternetPriority")
cpp_quote("#define IOInetThreadSwitch   IInternetThreadSwitch")
cpp_quote("#define IOInetProtocolSinkStackable   IInternetProtocolSinkStackable")
cpp_quote("")
cpp_quote("#define LPOINET              LPIINTERNET")
cpp_quote("#define LPOINETPROTOCOLINFO  LPIINTERNETPROTOCOLINFO")
cpp_quote("#define LPOINETBINDINFO      LPIINTERNETBINDINFO")
cpp_quote("#define LPOINETPROTOCOLROOT  LPIINTERNETPROTOCOLROOT")
cpp_quote("#define LPOINETPROTOCOL      LPIINTERNETPROTOCOL")
cpp_quote("")
cpp_quote("#if (_WIN32_IE >= _WIN32_IE_IE70)")
cpp_quote("#define LPOINETPROTOCOLEX LPIINTERNETPROTOCOLEX")
cpp_quote("#endif")
cpp_quote("#define LPOINETPROTOCOLSINK  LPIINTERNETPROTOCOLSINK")
cpp_quote("#define LPOINETSESSION       LPIINTERNETSESSION")
cpp_quote("#define LPOINETTHREADSWITCH  LPIINTERNETTHREADSWITCH")
cpp_quote("#define LPOINETPRIORITY      LPIINTERNETPRIORITY")
cpp_quote("#define LPOINETPROTOCOLINFO  LPIINTERNETPROTOCOLINFO")
cpp_quote("#define LPOINETPROTOCOLSINKSTACKABLE  LPIINTERNETPROTOCOLSINKSTACKABLE")
cpp_quote("")
cpp_quote("#define IID_IOInet               IID_IInternet")
cpp_quote("#define IID_IOInetBindInfo       IID_IInternetBindInfo")
cpp_quote("#define IID_IOInetBindInfoEx     IID_IInternetBindInfoEx")
cpp_quote("#define IID_IOInetProtocolRoot   IID_IInternetProtocolRoot")
cpp_quote("#define IID_IOInetProtocol       IID_IInternetProtocol")

cpp_quote("")
cpp_quote("#if (_WIN32_IE >= _WIN32_IE_IE70)")
cpp_quote("#define IID_IOInetProtocolEx IID_IInternetProtocolEx")
cpp_quote("#endif")

cpp_quote("#define IID_IOInetProtocolSink   IID_IInternetProtocolSink")
cpp_quote("#define IID_IOInetProtocolInfo   IID_IInternetProtocolInfo")
cpp_quote("#define IID_IOInetSession        IID_IInternetSession")
cpp_quote("#define IID_IOInetPriority       IID_IInternetPriority")
cpp_quote("#define IID_IOInetThreadSwitch   IID_IInternetThreadSwitch")
cpp_quote("#define IID_IOInetProtocolSinkStackable   IID_IInternetProtocolSinkStackable")

cpp_quote("")
cpp_quote("STDAPI CoInternetParseUrl(LPCWSTR pwzUrl, PARSEACTION ParseAction, DWORD dwFlags, LPWSTR pszResult, DWORD cchResult, DWORD *pcchResult, DWORD dwReserved);")
cpp_quote("#if (_WIN32_IE >= _WIN32_IE_IE70)")
cpp_quote("STDAPI CoInternetParseIUri(IUri *pIUri, PARSEACTION ParseAction, DWORD dwFlags, LPWSTR pwzResult, DWORD cchResult, DWORD *pcchResult, DWORD_PTR dwReserved);")
cpp_quote("#endif")
cpp_quote("STDAPI CoInternetCombineUrl(LPCWSTR pwzBaseUrl, LPCWSTR pwzRelativeUrl, DWORD dwCombineFlags, LPWSTR pszResult, DWORD cchResult, DWORD *pcchResult, DWORD dwReserved);")
cpp_quote("#if (_WIN32_IE >= _WIN32_IE_IE70)")
cpp_quote("STDAPI CoInternetCombineUrlEx(IUri *pBaseUri, LPCWSTR pwzRelativeUrl, DWORD dwCombineFlags, IUri **ppCombinedUri, DWORD_PTR dwReserved);")
cpp_quote("STDAPI CoInternetCombineIUri (IUri *pBaseUri, IUri *pRelativeUri, DWORD dwCombineFlags, IUri **ppCombinedUri, DWORD_PTR dwReserved);")
cpp_quote("#endif")
cpp_quote("STDAPI CoInternetCompareUrl(LPCWSTR pwzUrl1, LPCWSTR pwzUrl2, DWORD dwFlags);")
cpp_quote("STDAPI CoInternetGetProtocolFlags(LPCWSTR pwzUrl, DWORD *pdwFlags, DWORD dwReserved);")
cpp_quote("STDAPI CoInternetQueryInfo(LPCWSTR pwzUrl, QUERYOPTION QueryOptions, DWORD dwQueryFlags, LPVOID pvBuffer, DWORD cbBuffer, DWORD *pcbBuffer, DWORD dwReserved);")
cpp_quote("STDAPI CoInternetGetSession(DWORD dwSessionMode, IInternetSession **ppIInternetSession, DWORD dwReserved);")
cpp_quote("STDAPI CoInternetGetSecurityUrl(LPCWSTR pwszUrl, LPWSTR *ppwszSecUrl, PSUACTION psuAction, DWORD dwReserved);")
cpp_quote("STDAPI AsyncInstallDistributionUnit(LPCWSTR szDistUnit, LPCWSTR szTYPE, LPCWSTR szExt, DWORD dwFileVersionMS, DWORD dwFileVersionLS, LPCWSTR szURL,IBindCtx *pbc, LPVOID pvReserved,DWORD flags);")
cpp_quote("#if (_WIN32_IE >= _WIN32_IE_IE70)")
cpp_quote("STDAPI CoInternetGetSecurityUrlEx(IUri *pUri, IUri **ppSecUri, PSUACTION psuAction, DWORD_PTR dwReserved);")
cpp_quote("#endif")

cpp_quote("")
cpp_quote("#if (_WIN32_IE >= _WIN32_IE_IE60SP2)")
cpp_quote("#ifndef _INTERNETFEATURELIST_DEFINED")
cpp_quote("#define _INTERNETFEATURELIST_DEFINED")

cpp_quote("")
typedef enum _tagINTERNETFEATURELIST {
  FEATURE_OBJECT_CACHING = 0,
  FEATURE_ZONE_ELEVATION,
  FEATURE_MIME_HANDLING,
  FEATURE_MIME_SNIFFING,
  FEATURE_WINDOW_RESTRICTIONS,
  FEATURE_WEBOC_POPUPMANAGEMENT,
  FEATURE_BEHAVIORS,
  FEATURE_DISABLE_MK_PROTOCOL,
  FEATURE_LOCALMACHINE_LOCKDOWN,
  FEATURE_SECURITYBAND,
  FEATURE_RESTRICT_ACTIVEXINSTALL,
  FEATURE_VALIDATE_NAVIGATE_URL,
  FEATURE_RESTRICT_FILEDOWNLOAD,
  FEATURE_ADDON_MANAGEMENT,
  FEATURE_PROTOCOL_LOCKDOWN,
  FEATURE_HTTP_USERNAME_PASSWORD_DISABLE,
  FEATURE_SAFE_BINDTOOBJECT,
  FEATURE_UNC_SAVEDFILECHECK,
  FEATURE_GET_URL_DOM_FILEPATH_UNENCODED,
  FEATURE_TABBED_BROWSING,
  FEATURE_SSLUX,
  FEATURE_DISABLE_NAVIGATION_SOUNDS,
  FEATURE_DISABLE_LEGACY_COMPRESSION,
  FEATURE_FORCE_ADDR_AND_STATUS,
  FEATURE_XMLHTTP,
  FEATURE_DISABLE_TELNET_PROTOCOL,
  FEATURE_FEEDS,
  FEATURE_BLOCK_INPUT_PROMPTS,
  FEATURE_ENTRY_COUNT,
} INTERNETFEATURELIST;
cpp_quote("")
cpp_quote("#define SET_FEATURE_ON_THREAD 0x1")
cpp_quote("#define SET_FEATURE_ON_PROCESS 0x2")
cpp_quote("#define SET_FEATURE_IN_REGISTRY 0x4")
cpp_quote("#define SET_FEATURE_ON_THREAD_LOCALMACHINE 0x8")
cpp_quote("#define SET_FEATURE_ON_THREAD_INTRANET 0x10")
cpp_quote("#define SET_FEATURE_ON_THREAD_TRUSTED 0x20")
cpp_quote("#define SET_FEATURE_ON_THREAD_INTERNET 0x40")
cpp_quote("#define SET_FEATURE_ON_THREAD_RESTRICTED 0x80")
cpp_quote("")
cpp_quote("#define GET_FEATURE_FROM_THREAD 0x1")
cpp_quote("#define GET_FEATURE_FROM_PROCESS 0x2")
cpp_quote("#define GET_FEATURE_FROM_REGISTRY 0x4")
cpp_quote("#define GET_FEATURE_FROM_THREAD_LOCALMACHINE 0x8")
cpp_quote("#define GET_FEATURE_FROM_THREAD_INTRANET 0x10")
cpp_quote("#define GET_FEATURE_FROM_THREAD_TRUSTED 0x20")
cpp_quote("#define GET_FEATURE_FROM_THREAD_INTERNET 0x40")
cpp_quote("#define GET_FEATURE_FROM_THREAD_RESTRICTED 0x80")
cpp_quote("#endif")

cpp_quote("")
cpp_quote("STDAPI CoInternetSetFeatureEnabled(INTERNETFEATURELIST FeatureEntry, DWORD dwFlags, WINBOOL fEnable);")
cpp_quote("STDAPI CoInternetIsFeatureEnabled(INTERNETFEATURELIST FeatureEntry, DWORD dwFlags);")
cpp_quote("STDAPI CoInternetIsFeatureEnabledForUrl(INTERNETFEATURELIST FeatureEntry, DWORD dwFlags, LPCWSTR szURL, IInternetSecurityManager *pSecMgr);")
cpp_quote("STDAPI CoInternetIsFeatureEnabledForIUri(INTERNETFEATURELIST FeatureEntry, DWORD dwFlags, IUri *pIUri, IInternetSecurityManagerEx2 *pSecMgr);")
cpp_quote("STDAPI CoInternetIsFeatureZoneElevationEnabled(LPCWSTR szFromURL, LPCWSTR szToURL, IInternetSecurityManager *pSecMgr, DWORD dwFlags);")
cpp_quote("#endif")
cpp_quote("STDAPI CopyStgMedium(const STGMEDIUM *pcstgmedSrc, STGMEDIUM *pstgmedDest);")
cpp_quote("STDAPI CopyBindInfo(const BINDINFO *pcbiSrc, BINDINFO *pbiDest);")
cpp_quote("STDAPI_(void) ReleaseBindInfo(BINDINFO *pbindinfo);")

cpp_quote("")
cpp_quote("#define INET_E_USE_DEFAULT_PROTOCOLHANDLER _HRESULT_TYPEDEF_(__MSABI_LONG(0x800C0011))")
cpp_quote("#define INET_E_USE_DEFAULT_SETTING         _HRESULT_TYPEDEF_(__MSABI_LONG(0x800C0012))")
cpp_quote("#define INET_E_DEFAULT_ACTION              INET_E_USE_DEFAULT_PROTOCOLHANDLER")
cpp_quote("#define INET_E_QUERYOPTION_UNKNOWN         _HRESULT_TYPEDEF_(__MSABI_LONG(0x800C0013))")
cpp_quote("#define INET_E_REDIRECTING                 _HRESULT_TYPEDEF_(__MSABI_LONG(0x800C0014))")

cpp_quote("")
cpp_quote("#define OInetParseUrl CoInternetParseUrl")
cpp_quote("#define OInetCombineUrl CoInternetCombineUrl")
cpp_quote("#if (_WIN32_IE >= _WIN32_IE_IE70)")
cpp_quote("#define OInetCombineUrlEx CoInternetCombineUrlEx")
cpp_quote("#define OInetCombineIUri CoInternetCombineIUri")
cpp_quote("#endif")
cpp_quote("#define OInetCompareUrl CoInternetCompareUrl")
cpp_quote("#define OInetQueryInfo CoInternetQueryInfo")
cpp_quote("#define OInetGetSession CoInternetGetSession")
cpp_quote("#endif")

cpp_quote("")
cpp_quote("#define PROTOCOLFLAG_NO_PICS_CHECK 0x1")
cpp_quote("")
cpp_quote("STDAPI CoInternetCreateSecurityManager(IServiceProvider *pSP, IInternetSecurityManager **ppSM, DWORD dwReserved);")
cpp_quote("STDAPI CoInternetCreateZoneManager(IServiceProvider *pSP, IInternetZoneManager **ppZM, DWORD dwReserved);")
cpp_quote("")
cpp_quote("EXTERN_C const IID CLSID_InternetSecurityManager;")
cpp_quote("EXTERN_C const IID CLSID_InternetZoneManager;")

cpp_quote("")
cpp_quote("#if (_WIN32_IE >= _WIN32_IE_IE60SP2)")
cpp_quote("EXTERN_C const IID CLSID_PersistentZoneIdentifier;")
cpp_quote("#endif")

cpp_quote("")
cpp_quote("#define SID_SInternetSecurityManager IID_IInternetSecurityManager")
cpp_quote("#if (_WIN32_IE >= _WIN32_IE_IE60SP2)")
cpp_quote("#define SID_SInternetSecurityManagerEx IID_IInternetSecurityManagerEx")
cpp_quote("#endif")
cpp_quote("#if (_WIN32_IE >= _WIN32_IE_IE70)")
cpp_quote("#define SID_SInternetSecurityManagerEx2 IID_IInternetSecurityManagerEx2")
cpp_quote("#endif")
cpp_quote("#define SID_SInternetHostSecurityManager IID_IInternetHostSecurityManager")

cpp_quote("")
cpp_quote("#ifndef _LPINTERNETSECURITYMGRSITE_DEFINED")
cpp_quote("#define _LPINTERNETSECURITYMGRSITE_DEFINED")
cpp_quote("")
[local, object, uuid (79eac9ed-baf9-11ce-8c82-00aa004ba90b), helpstring ("IInternetSecurityMgrSite Interface"), pointer_default (unique)]
interface IInternetSecurityMgrSite : IUnknown {
  HRESULT GetWindow ([out] HWND *phwnd);
  HRESULT EnableModeless ([in] BOOL fEnable);
};
cpp_quote("#endif")

cpp_quote("")
cpp_quote("#ifndef _LPINTERNETSECURITYMANANGER_DEFINED")
cpp_quote("#define _LPINTERNETSECURITYMANANGER_DEFINED")
cpp_quote("")
[uuid (79eac9ee-baf9-11ce-8c82-00aa004ba90b), helpstring ("IInternetSecurityManager Interface"), pointer_default (unique)]
interface IInternetSecurityManager : IUnknown {
  HRESULT SetSecuritySite ([in, unique] IInternetSecurityMgrSite *pSite);
  HRESULT GetSecuritySite ([out] IInternetSecurityMgrSite **ppSite);
cpp_quote("")
  cpp_quote("#define MUTZ_NOSAVEDFILECHECK 0x1")
  cpp_quote("#define MUTZ_ISFILE 0x2")
  cpp_quote("#define MUTZ_ACCEPT_WILDCARD_SCHEME 0x80")
  cpp_quote("#define MUTZ_ENFORCERESTRICTED 0x100")
  cpp_quote("#define MUTZ_RESERVED 0x200")
  cpp_quote("#define MUTZ_REQUIRESAVEDFILECHECK 0x400")
  cpp_quote("#define MUTZ_DONT_UNESCAPE 0x800")
  cpp_quote("#define MUTZ_DONT_USE_CACHE 0x1000")
  cpp_quote("#define MUTZ_FORCE_INTRANET_FLAGS 0x2000")
  cpp_quote("#define MUTZ_IGNORE_ZONE_MAPPINGS 0x4000")

cpp_quote("")
  HRESULT MapUrlToZone ([in] LPCWSTR pwszUrl,[out] DWORD *pdwZone,[in] DWORD dwFlags);
  cpp_quote("")

  cpp_quote("#define MAX_SIZE_SECURITY_ID 512")

cpp_quote("")
  HRESULT GetSecurityId ([in] LPCWSTR pwszUrl,[out, size_is (*pcbSecurityId)]BYTE *pbSecurityId,[in, out]DWORD *pcbSecurityId,[in] DWORD_PTR dwReserved);
cpp_quote("")
  typedef enum {
    PUAF_DEFAULT = 0x0,
    PUAF_NOUI = 0x1,
    PUAF_ISFILE = 0x2,
    PUAF_WARN_IF_DENIED = 0x4,
    PUAF_FORCEUI_FOREGROUND = 0x8,
    PUAF_CHECK_TIFS = 0x10,
    PUAF_DONTCHECKBOXINDIALOG = 0x20,
    PUAF_TRUSTED = 0x40,
    PUAF_ACCEPT_WILDCARD_SCHEME = 0x80,
    PUAF_ENFORCERESTRICTED = 0x100,
    PUAF_NOSAVEDFILECHECK = 0x200,
    PUAF_REQUIRESAVEDFILECHECK = 0x400,
    PUAF_DONT_USE_CACHE = 0x1000,
    PUAF_RESERVED1 = 0x2000,
    PUAF_RESERVED2 = 0x4000,
    PUAF_LMZ_UNLOCKED = 0x10000,
    PUAF_LMZ_LOCKED = 0x20000,
    PUAF_DEFAULTZONEPOL = 0x40000,
    PUAF_NPL_USE_LOCKED_IF_RESTRICTED = 0x80000,
    PUAF_NOUIIFLOCKED = 0x100000,
    PUAF_DRAGPROTOCOLCHECK = 0x200000
  } PUAF;
  typedef enum {
    PUAFOUT_DEFAULT = 0x0,
    PUAFOUT_ISLOCKZONEPOLICY = 0x1
  } PUAFOUT;

cpp_quote("")
  HRESULT ProcessUrlAction ([in] LPCWSTR pwszUrl,[in] DWORD dwAction,[out, size_is (cbPolicy)]BYTE *pPolicy,[in] DWORD cbPolicy,[in, unique]BYTE *pContext,[in] DWORD cbContext,[in] DWORD dwFlags,[in] DWORD dwReserved);
  HRESULT QueryCustomPolicy ([in] LPCWSTR pwszUrl,[in] REFGUID guidKey,[out, size_is (,*pcbPolicy)]BYTE **ppPolicy,[out] DWORD *pcbPolicy,[in] BYTE *pContext,[in] DWORD cbContext,[in] DWORD dwReserved);

  cpp_quote("")
  typedef enum {
    SZM_CREATE = 0x0,
    SZM_DELETE = 0x1
  } SZM_FLAGS;
cpp_quote("")
  HRESULT SetZoneMapping ([in] DWORD dwZone,[in] LPCWSTR lpszPattern,[in] DWORD dwFlags);
  HRESULT GetZoneMappings ([in] DWORD dwZone,[out] IEnumString **ppenumString,[in] DWORD dwFlags);
};
cpp_quote("#endif")

cpp_quote("")
cpp_quote("#if (_WIN32_IE >= _WIN32_IE_IE60SP2)")
cpp_quote("#ifndef _LPINTERNETSECURITYMANANGEREX_DEFINED")
cpp_quote("#define _LPINTERNETSECURITYMANANGEREX_DEFINED")
cpp_quote("")
[uuid (F164EDF1-CC7C-4f0d-9a94-34222625c393), helpstring ("IInternetSecurityManagerEx Interface"), pointer_default (unique)]
interface IInternetSecurityManagerEx : IInternetSecurityManager {
  HRESULT ProcessUrlActionEx ([in] LPCWSTR pwszUrl,[in] DWORD dwAction,[out, size_is (cbPolicy)]BYTE *pPolicy,[in] DWORD cbPolicy,[in] BYTE *pContext,[in] DWORD cbContext,[in] DWORD dwFlags,[in] DWORD dwReserved,[out] DWORD *pdwOutFlags);
}
cpp_quote("#endif")
cpp_quote("#endif")

cpp_quote("")
cpp_quote("#if (_WIN32_IE >= _WIN32_IE_IE70)")
cpp_quote("#ifndef _LPINTERNETSECURITYMANANGEREx2_DEFINED")
cpp_quote("#define _LPINTERNETSECURITYMANANGEREx2_DEFINED")
cpp_quote("")
[uuid (F1E50292-A795-4117-8e09-2b560a72ac60), helpstring ("IInternetSecurityManagerEx2 Interface"), pointer_default (unique)]
interface IInternetSecurityManagerEx2 : IInternetSecurityManagerEx {
  HRESULT MapUrlToZoneEx2 ([in]IUri *pUri,[out] DWORD *pdwZone,[in] DWORD dwFlags,[out]LPWSTR *ppwszMappedUrl,[out]DWORD *pdwOutFlags);
  HRESULT ProcessUrlActionEx2 ([in]IUri *pUri,[in] DWORD dwAction,[out, size_is (cbPolicy)]BYTE *pPolicy,[in] DWORD cbPolicy,[in, unique]BYTE *pContext,[in] DWORD cbContext,[in] DWORD dwFlags,[in] DWORD_PTR dwReserved,[out] DWORD *pdwOutFlags);
  HRESULT GetSecurityIdEx2 ([in]IUri *pUri,[out, size_is (*pcbSecurityId)]BYTE *pbSecurityId,[in, out]DWORD *pcbSecurityId,[in] DWORD_PTR dwReserved);
  HRESULT QueryCustomPolicyEx2 ([in]IUri *pUri,[in] REFGUID guidKey,[out, size_is (,*pcbPolicy)]BYTE **ppPolicy,[out] DWORD *pcbPolicy,[in] BYTE *pContext,[in] DWORD cbContext,[in] DWORD_PTR dwReserved);
}
cpp_quote("#endif")
cpp_quote("#endif")

cpp_quote("")
cpp_quote("#if (_WIN32_IE >= _WIN32_IE_IE60SP2)")
[object, uuid (cd45f185-1b21-48e2-967b-ead743a8914e), pointer_default (unique)]
interface IZoneIdentifier : IUnknown {
  HRESULT GetId ([out] DWORD *pdwZone);
  HRESULT SetId ([in] DWORD dwZone);
  HRESULT Remove ();
};
cpp_quote("#endif")

cpp_quote("")
cpp_quote("#ifndef _LPINTERNETHOSTSECURITYMANANGER_DEFINED")
cpp_quote("#define _LPINTERNETHOSTSECURITYMANANGER_DEFINED")
cpp_quote("")
[local, object, uuid (3af280b6-cb3f-11d0-891e-00c04fb6bfc4), helpstring ("IInternetHostSecurityManager Interface"), pointer_default (unique)]
interface IInternetHostSecurityManager : IUnknown {
  HRESULT GetSecurityId ([out, size_is (*pcbSecurityId)]BYTE *pbSecurityId,[in, out]DWORD *pcbSecurityId,[in] DWORD_PTR dwReserved);
  HRESULT ProcessUrlAction ([in] DWORD dwAction,[out, size_is (cbPolicy)]BYTE *pPolicy,[in] DWORD cbPolicy,[in] BYTE *pContext,[in] DWORD cbContext,[in] DWORD dwFlags,[in] DWORD dwReserved);
  HRESULT QueryCustomPolicy ([in] REFGUID guidKey,[out, size_is (,*pcbPolicy)]BYTE **ppPolicy,[out] DWORD *pcbPolicy,[in] BYTE *pContext,[in] DWORD cbContext,[in] DWORD dwReserved);
};
cpp_quote("#endif")

cpp_quote("")
cpp_quote("#define URLACTION_MIN 0x1000")
cpp_quote("")
cpp_quote("#define URLACTION_DOWNLOAD_MIN 0x1000")
cpp_quote("#define URLACTION_DOWNLOAD_SIGNED_ACTIVEX 0x1001")
cpp_quote("#define URLACTION_DOWNLOAD_UNSIGNED_ACTIVEX 0x1004")
cpp_quote("#define URLACTION_DOWNLOAD_CURR_MAX 0x1004")
cpp_quote("#define URLACTION_DOWNLOAD_MAX 0x11FF")
cpp_quote("")
cpp_quote("#define URLACTION_ACTIVEX_MIN 0x1200")
cpp_quote("#define URLACTION_ACTIVEX_RUN 0x1200")
cpp_quote("#define URLPOLICY_ACTIVEX_CHECK_LIST 0x10000")
cpp_quote("#define URLACTION_ACTIVEX_OVERRIDE_OBJECT_SAFETY 0x1201")
cpp_quote("#define URLACTION_ACTIVEX_OVERRIDE_DATA_SAFETY 0x1202")
cpp_quote("#define URLACTION_ACTIVEX_OVERRIDE_SCRIPT_SAFETY 0x1203")
cpp_quote("#define URLACTION_SCRIPT_OVERRIDE_SAFETY 0x1401")
cpp_quote("#define URLACTION_ACTIVEX_CONFIRM_NOOBJECTSAFETY 0x1204")
cpp_quote("#define URLACTION_ACTIVEX_TREATASUNTRUSTED 0x1205")
cpp_quote("#define URLACTION_ACTIVEX_NO_WEBOC_SCRIPT 0x1206")
cpp_quote("#define URLACTION_ACTIVEX_OVERRIDE_REPURPOSEDETECTION 0x1207")
cpp_quote("#define URLACTION_ACTIVEX_OVERRIDE_OPTIN 0x1208")
cpp_quote("#define URLACTION_ACTIVEX_SCRIPTLET_RUN 0x1209")
cpp_quote("#define URLACTION_ACTIVEX_DYNSRC_VIDEO_AND_ANIMATION 0x120A")
cpp_quote("#define URLACTION_ACTIVEX_OVERRIDE_DOMAINLIST 0x120B")
cpp_quote("#define URLACTION_ACTIVEX_CURR_MAX 0x120B")
cpp_quote("#define URLACTION_ACTIVEX_MAX 0x13ff")
cpp_quote("")
cpp_quote("#define URLACTION_SCRIPT_MIN 0x1400")
cpp_quote("#define URLACTION_SCRIPT_RUN 0x1400")
cpp_quote("#define URLACTION_SCRIPT_JAVA_USE 0x1402")
cpp_quote("#define URLACTION_SCRIPT_SAFE_ACTIVEX 0x1405")
cpp_quote("#define URLACTION_CROSS_DOMAIN_DATA 0x1406")
cpp_quote("#define URLACTION_SCRIPT_PASTE 0x1407")
cpp_quote("#define URLACTION_ALLOW_XDOMAIN_SUBFRAME_RESIZE 0x1408")
cpp_quote("#define URLACTION_SCRIPT_XSSFILTER 0x1409")
cpp_quote("#define URLACTION_SCRIPT_NAVIGATE 0x140A")
cpp_quote("#define URLACTION_PLUGGABLE_PROTOCOL_XHR 0x140B")
cpp_quote("#define URLACTION_SCRIPT_CURR_MAX 0x140B")
cpp_quote("#define URLACTION_SCRIPT_MAX 0x15ff")
cpp_quote("")
cpp_quote("#define URLACTION_HTML_MIN 0x1600")
cpp_quote("#define URLACTION_HTML_SUBMIT_FORMS 0x1601")
cpp_quote("#define URLACTION_HTML_SUBMIT_FORMS_FROM 0x1602")
cpp_quote("#define URLACTION_HTML_SUBMIT_FORMS_TO 0x1603")
cpp_quote("#define URLACTION_HTML_FONT_DOWNLOAD 0x1604")
cpp_quote("#define URLACTION_HTML_JAVA_RUN 0x1605")
cpp_quote("#define URLACTION_HTML_USERDATA_SAVE 0x1606")
cpp_quote("#define URLACTION_HTML_SUBFRAME_NAVIGATE 0x1607")
cpp_quote("#define URLACTION_HTML_META_REFRESH 0x1608")
cpp_quote("#define URLACTION_HTML_MIXED_CONTENT 0x1609")
cpp_quote("#define URLACTION_HTML_INCLUDE_FILE_PATH 0x160A")
cpp_quote("#define URLACTION_HTML_ALLOW_INJECTED_DYNAMIC_HTML 0x160B")
cpp_quote("#define URLACTION_HTML_REQUIRE_UTF8_DOCUMENT_CODEPAGE 0x160C")
cpp_quote("#define URLACTION_HTML_ALLOW_CROSS_DOMAIN_CANVAS 0x160D")
cpp_quote("#define URLACTION_HTML_ALLOW_WINDOW_CLOSE 0x160E")
cpp_quote("#define URLACTION_HTML_ALLOW_CROSS_DOMAIN_WEBWORKER 0x160F")
cpp_quote("#define URLACTION_HTML_ALLOW_CROSS_DOMAIN_TEXTTRACK 0x1610")
cpp_quote("#define URLACTION_HTML_ALLOW_INDEXEDDB 0x1611")
cpp_quote("")
cpp_quote("#define URLACTION_HTML_MAX 0x17ff")
cpp_quote("")
cpp_quote("#define URLACTION_SHELL_MIN 0x1800")
cpp_quote("#define URLACTION_SHELL_INSTALL_DTITEMS 0x1800")
cpp_quote("#define URLACTION_SHELL_MOVE_OR_COPY 0x1802")
cpp_quote("#define URLACTION_SHELL_FILE_DOWNLOAD 0x1803")
cpp_quote("#define URLACTION_SHELL_VERB 0x1804")
cpp_quote("#define URLACTION_SHELL_WEBVIEW_VERB 0x1805")
cpp_quote("#define URLACTION_SHELL_SHELLEXECUTE 0x1806")

cpp_quote("")
cpp_quote("#if (_WIN32_IE >= _WIN32_IE_IE60SP2)")
cpp_quote("#define URLACTION_SHELL_EXECUTE_HIGHRISK 0x1806")
cpp_quote("#define URLACTION_SHELL_EXECUTE_MODRISK 0x1807")
cpp_quote("#define URLACTION_SHELL_EXECUTE_LOWRISK 0x1808")
cpp_quote("#define URLACTION_SHELL_POPUPMGR 0x1809")
cpp_quote("#define URLACTION_SHELL_RTF_OBJECTS_LOAD 0x180A")
cpp_quote("#define URLACTION_SHELL_ENHANCED_DRAGDROP_SECURITY 0x180B")
cpp_quote("#define URLACTION_SHELL_EXTENSIONSECURITY 0x180C")
cpp_quote("#define URLACTION_SHELL_SECURE_DRAGSOURCE 0x180D")
cpp_quote("#endif")
cpp_quote("#if (_WIN32_IE >= _WIN32_IE_WIN7)")
cpp_quote("#define URLACTION_SHELL_REMOTEQUERY 0x180E")
cpp_quote("#define URLACTION_SHELL_PREVIEW 0x180F")
cpp_quote("#define URLACTION_SHELL_SHARE 0x1810")
cpp_quote("#define URLACTION_SHELL_ALLOW_CROSS_SITE_SHARE 0x1811")
cpp_quote("#endif")
cpp_quote("#define URLACTION_SHELL_CURR_MAX 0x1811")
cpp_quote("#define URLACTION_SHELL_MAX 0x19ff")
cpp_quote("")
cpp_quote("#define URLACTION_NETWORK_MIN 0x1A00")
cpp_quote("")
cpp_quote("#define URLACTION_CREDENTIALS_USE 0x1A00")
cpp_quote("#define URLPOLICY_CREDENTIALS_SILENT_LOGON_OK 0x0")
cpp_quote("#define URLPOLICY_CREDENTIALS_MUST_PROMPT_USER 0x10000")
cpp_quote("#define URLPOLICY_CREDENTIALS_CONDITIONAL_PROMPT 0x20000")
cpp_quote("#define URLPOLICY_CREDENTIALS_ANONYMOUS_ONLY 0x30000")
cpp_quote("")
cpp_quote("#define URLACTION_AUTHENTICATE_CLIENT 0x1A01")
cpp_quote("#define URLPOLICY_AUTHENTICATE_CLEARTEXT_OK 0x0")
cpp_quote("#define URLPOLICY_AUTHENTICATE_CHALLENGE_RESPONSE 0x10000")
cpp_quote("#define URLPOLICY_AUTHENTICATE_MUTUAL_ONLY 0x30000")
cpp_quote("")
cpp_quote("#define URLACTION_COOKIES 0x1A02")
cpp_quote("#define URLACTION_COOKIES_SESSION 0x1A03")
cpp_quote("")
cpp_quote("#define URLACTION_CLIENT_CERT_PROMPT 0x1A04")
cpp_quote("")
cpp_quote("#define URLACTION_COOKIES_THIRD_PARTY 0x1A05")
cpp_quote("#define URLACTION_COOKIES_SESSION_THIRD_PARTY 0x1A06")
cpp_quote("")
cpp_quote("#define URLACTION_COOKIES_ENABLED 0x1A10")
cpp_quote("")
cpp_quote("#define URLACTION_NETWORK_CURR_MAX 0x1A10")
cpp_quote("#define URLACTION_NETWORK_MAX 0x1Bff")
cpp_quote("")
cpp_quote("#define URLACTION_JAVA_MIN 0x1C00")
cpp_quote("#define URLACTION_JAVA_PERMISSIONS 0x1C00")
cpp_quote("#define URLPOLICY_JAVA_PROHIBIT 0x0")
cpp_quote("#define URLPOLICY_JAVA_HIGH 0x10000")
cpp_quote("#define URLPOLICY_JAVA_MEDIUM 0x20000")
cpp_quote("#define URLPOLICY_JAVA_LOW 0x30000")
cpp_quote("#define URLPOLICY_JAVA_CUSTOM 0x800000")
cpp_quote("#define URLACTION_JAVA_CURR_MAX 0x1C00")
cpp_quote("#define URLACTION_JAVA_MAX 0x1Cff")
cpp_quote("")
cpp_quote("#define URLACTION_INFODELIVERY_MIN 0x1D00")
cpp_quote("#define URLACTION_INFODELIVERY_NO_ADDING_CHANNELS 0x1D00")
cpp_quote("#define URLACTION_INFODELIVERY_NO_EDITING_CHANNELS 0x1D01")
cpp_quote("#define URLACTION_INFODELIVERY_NO_REMOVING_CHANNELS 0x1D02")
cpp_quote("#define URLACTION_INFODELIVERY_NO_ADDING_SUBSCRIPTIONS 0x1D03")
cpp_quote("#define URLACTION_INFODELIVERY_NO_EDITING_SUBSCRIPTIONS 0x1D04")
cpp_quote("#define URLACTION_INFODELIVERY_NO_REMOVING_SUBSCRIPTIONS 0x1D05")
cpp_quote("#define URLACTION_INFODELIVERY_NO_CHANNEL_LOGGING 0x1D06")
cpp_quote("#define URLACTION_INFODELIVERY_CURR_MAX 0x1D06")
cpp_quote("#define URLACTION_INFODELIVERY_MAX 0x1Dff")
cpp_quote("#define URLACTION_CHANNEL_SOFTDIST_MIN 0x1E00")
cpp_quote("#define URLACTION_CHANNEL_SOFTDIST_PERMISSIONS 0x1E05")
cpp_quote("#define URLPOLICY_CHANNEL_SOFTDIST_PROHIBIT 0x10000")
cpp_quote("#define URLPOLICY_CHANNEL_SOFTDIST_PRECACHE 0x20000")
cpp_quote("#define URLPOLICY_CHANNEL_SOFTDIST_AUTOINSTALL 0x30000")
cpp_quote("#define URLACTION_CHANNEL_SOFTDIST_MAX 0x1Eff")
cpp_quote("#if (_WIN32_IE >= _WIN32_IE_IE80)")
cpp_quote("#define URLACTION_DOTNET_USERCONTROLS 0x2005")
cpp_quote("#endif")
cpp_quote("")
cpp_quote("#if (_WIN32_IE >= _WIN32_IE_IE60SP2)")
cpp_quote("#define URLACTION_BEHAVIOR_MIN 0x2000")
cpp_quote("#define URLACTION_BEHAVIOR_RUN 0x2000")
cpp_quote("#define URLPOLICY_BEHAVIOR_CHECK_LIST 0x10000")
cpp_quote("")
cpp_quote("#define URLACTION_FEATURE_MIN 0x2100")
cpp_quote("#define URLACTION_FEATURE_MIME_SNIFFING 0x2100")
cpp_quote("#define URLACTION_FEATURE_ZONE_ELEVATION 0x2101")
cpp_quote("#define URLACTION_FEATURE_WINDOW_RESTRICTIONS 0x2102")
cpp_quote("#define URLACTION_FEATURE_SCRIPT_STATUS_BAR 0x2103")
cpp_quote("#define URLACTION_FEATURE_FORCE_ADDR_AND_STATUS 0x2104")
cpp_quote("#define URLACTION_FEATURE_BLOCK_INPUT_PROMPTS 0x2105")
cpp_quote("#define URLACTION_FEATURE_DATA_BINDING 0x2106")
cpp_quote("#define URLACTION_FEATURE_CROSSDOMAIN_FOCUS_CHANGE 0x2107")
cpp_quote("")
cpp_quote("#define URLACTION_AUTOMATIC_DOWNLOAD_UI_MIN 0x2200")
cpp_quote("#define URLACTION_AUTOMATIC_DOWNLOAD_UI 0x2200")
cpp_quote("#define URLACTION_AUTOMATIC_ACTIVEX_UI 0x2201")
cpp_quote("")
cpp_quote("#define URLACTION_ALLOW_RESTRICTEDPROTOCOLS 0x2300")
cpp_quote("#endif")
cpp_quote("#if (_WIN32_IE >= _WIN32_IE_IE70)")
cpp_quote("#define URLACTION_ALLOW_APEVALUATION 0x2301")
cpp_quote("#define URLACTION_ALLOW_XHR_EVALUATION 0x2302")
cpp_quote("#define URLACTION_WINDOWS_BROWSER_APPLICATIONS 0x2400")
cpp_quote("#define URLACTION_XPS_DOCUMENTS 0x2401")
cpp_quote("#define URLACTION_LOOSE_XAML 0x2402")
cpp_quote("#define URLACTION_LOWRIGHTS 0x2500")
cpp_quote("#define URLACTION_WINFX_SETUP 0x2600")
cpp_quote("#define URLACTION_INPRIVATE_BLOCKING 0x2700")
cpp_quote("#endif")
cpp_quote("#define URLACTION_ALLOW_AUDIO_VIDEO 0x2701")
cpp_quote("#define URLACTION_ALLOW_ACTIVEX_FILTERING 0x2702")
cpp_quote("#define URLACTION_ALLOW_STRUCTURED_STORAGE_SNIFFING 0x2703")
cpp_quote("#define URLACTION_ALLOW_AUDIO_VIDEO_PLUGINS 0x2704")
cpp_quote("#define URLACTION_ALLOW_ZONE_ELEVATION_VIA_OPT_OUT 0x2705")
cpp_quote("#define URLACTION_ALLOW_ZONE_ELEVATION_OPT_OUT_ADDITION 0x2706")
cpp_quote("#define URLACTION_ALLOW_CROSSDOMAIN_DROP_WITHIN_WINDOW 0x2708")
cpp_quote("#define URLACTION_ALLOW_CROSSDOMAIN_DROP_ACROSS_WINDOWS 0x2709")
cpp_quote("#define URLACTION_ALLOW_CROSSDOMAIN_APPCACHE_MANIFEST 0x270A")
cpp_quote("#define URLACTION_ALLOW_RENDER_LEGACY_DXTFILTERS 0x270B")
cpp_quote("")
cpp_quote("#define URLPOLICY_ALLOW 0x0")
cpp_quote("#define URLPOLICY_QUERY 0x1")
cpp_quote("#define URLPOLICY_DISALLOW 0x3")
cpp_quote("#define URLPOLICY_NOTIFY_ON_ALLOW 0x10")
cpp_quote("#define URLPOLICY_NOTIFY_ON_DISALLOW 0x20")
cpp_quote("#define URLPOLICY_LOG_ON_ALLOW 0x40")
cpp_quote("#define URLPOLICY_LOG_ON_DISALLOW 0x80")
cpp_quote("")
cpp_quote("#define URLPOLICY_MASK_PERMISSIONS 0x0f")
cpp_quote("#define GetUrlPolicyPermissions(dw) (dw & URLPOLICY_MASK_PERMISSIONS)")
cpp_quote("#define SetUrlPolicyPermissions(dw,dw2) ((dw) = ((dw) & ~(URLPOLICY_MASK_PERMISSIONS)) | (dw2))")
cpp_quote("")
cpp_quote("#define URLPOLICY_DONTCHECKDLGBOX 0x100")

cpp_quote("")
cpp_quote("#if (_WIN32_IE >= _WIN32_IE_IE60SP2)")
cpp_quote("EXTERN_C const GUID GUID_CUSTOM_LOCALMACHINEZONEUNLOCKED;")
cpp_quote("#endif")

cpp_quote("")
cpp_quote("#ifndef _LPINTERNETZONEMANAGER_DEFINED")
cpp_quote("#define _LPINTERNETZONEMANAGER_DEFINED")
cpp_quote("")
[local, object, uuid (79eac9ef-baf9-11ce-8c82-00aa004ba90b), helpstring ("IInternetZoneManager Interface"), pointer_default (unique)]
interface IInternetZoneManager : IUnknown {
  typedef [unique] IInternetZoneManager *LPURLZONEMANAGER;
cpp_quote("")
  typedef enum tagURLZONE {
    URLZONE_INVALID = -1,
    URLZONE_PREDEFINED_MIN = 0,
    URLZONE_LOCAL_MACHINE = 0,
    URLZONE_INTRANET,
    URLZONE_TRUSTED,
    URLZONE_INTERNET,
    URLZONE_UNTRUSTED,
    URLZONE_PREDEFINED_MAX = 999,
    URLZONE_USER_MIN = 1000,
    URLZONE_USER_MAX = 10000,
  } URLZONE;
  cpp_quote("")
  cpp_quote("#define URLZONE_ESC_FLAG 0x100")

cpp_quote("")
  typedef enum tagURLTEMPLATE {
    URLTEMPLATE_CUSTOM = 0x0,
    URLTEMPLATE_PREDEFINED_MIN = 0x10000,
    URLTEMPLATE_LOW = 0x10000,
    URLTEMPLATE_MEDLOW = 0x10500,
    URLTEMPLATE_MEDIUM = 0x11000,
    URLTEMPLATE_MEDHIGH = 0x11500,
    URLTEMPLATE_HIGH = 0x12000,
    URLTEMPLATE_PREDEFINED_MAX = 0x20000
  } URLTEMPLATE;
cpp_quote("")
  enum { MAX_ZONE_PATH = 260, MAX_ZONE_DESCRIPTION = 200 };
cpp_quote("")
  typedef enum {
    ZAFLAGS_CUSTOM_EDIT = 0x1,
    ZAFLAGS_ADD_SITES = 0x2,
    ZAFLAGS_REQUIRE_VERIFICATION = 0x4,
    ZAFLAGS_INCLUDE_PROXY_OVERRIDE = 0x8,
    ZAFLAGS_INCLUDE_INTRANET_SITES = 0x10,
    ZAFLAGS_NO_UI = 0x20,
    ZAFLAGS_SUPPORTS_VERIFICATION = 0x40,
    ZAFLAGS_UNC_AS_INTRANET = 0x80,
    ZAFLAGS_DETECT_INTRANET = 0x100,
    ZAFLAGS_USE_LOCKED_ZONES = 0x10000,
    ZAFLAGS_VERIFY_TEMPLATE_SETTINGS = 0x20000,
    ZAFLAGS_NO_CACHE = 0x40000,
  } ZAFLAGS;
cpp_quote("")
  typedef struct _ZONEATTRIBUTES {
    ULONG cbSize;
    WCHAR szDisplayName[MAX_ZONE_PATH];
    WCHAR szDescription[MAX_ZONE_DESCRIPTION];
    WCHAR szIconPath[MAX_ZONE_PATH];
    DWORD dwTemplateMinLevel;
    DWORD dwTemplateRecommended;
    DWORD dwTemplateCurrentLevel;
    DWORD dwFlags;
  } ZONEATTRIBUTES,*LPZONEATTRIBUTES;
cpp_quote("")
  HRESULT GetZoneAttributes ([in] DWORD dwZone,[in, out, unique]ZONEATTRIBUTES *pZoneAttributes);
  HRESULT SetZoneAttributes ([in] DWORD dwZone,[in] ZONEATTRIBUTES *pZoneAttributes);

  cpp_quote("")
  typedef enum _URLZONEREG {
    URLZONEREG_DEFAULT=0,
    URLZONEREG_HKLM,
    URLZONEREG_HKCU
  } URLZONEREG;
cpp_quote("")
  HRESULT GetZoneCustomPolicy ([in] DWORD dwZone,[in] REFGUID guidKey,[out, size_is (,*pcbPolicy)]BYTE **ppPolicy,[out] DWORD *pcbPolicy,[in] URLZONEREG urlZoneReg);
  HRESULT SetZoneCustomPolicy ([in] DWORD dwZone,[in] REFGUID guidKey,[in, size_is (cbPolicy)]BYTE *pPolicy,[in] DWORD cbPolicy,[in] URLZONEREG urlZoneReg);
  HRESULT GetZoneActionPolicy ([in] DWORD dwZone,[in] DWORD dwAction,[out, size_is (cbPolicy)]BYTE *pPolicy,[in] DWORD cbPolicy,[in] URLZONEREG urlZoneReg);
  HRESULT SetZoneActionPolicy ([in] DWORD dwZone,[in] DWORD dwAction,[in, size_is (cbPolicy)]BYTE *pPolicy,[in] DWORD cbPolicy,[in] URLZONEREG urlZoneReg);
  HRESULT PromptAction ([in] DWORD dwAction,[in] HWND hwndParent,[in] LPCWSTR pwszUrl,[in] LPCWSTR pwszText,[in] DWORD dwPromptFlags);
  HRESULT LogAction ([in] DWORD dwAction,[in] LPCWSTR pwszUrl,[in] LPCWSTR pwszText,[in] DWORD dwLogFlags);
  HRESULT CreateZoneEnumerator ([out] DWORD *pdwEnum,[out] DWORD *pdwCount,[in] DWORD dwFlags);
  HRESULT GetZoneAt ([in] DWORD dwEnum,[in] DWORD dwIndex,[out] DWORD *pdwZone);
  HRESULT DestroyZoneEnumerator ([in] DWORD dwEnum);
  HRESULT CopyTemplatePoliciesToZone ([in] DWORD dwTemplate,[in] DWORD dwZone,[in] DWORD dwReserved);
}
cpp_quote("#endif")

cpp_quote("")
cpp_quote("#if (_WIN32_IE >= _WIN32_IE_IE60SP2)")
cpp_quote("#ifndef _LPINTERNETZONEMANAGEREX_DEFINED")
cpp_quote("#define _LPINTERNETZONEMANAGEREX_DEFINED")
cpp_quote("")
[local, object, uuid (A4C23339-8e06-431e-9bf4-7e711c085648), helpstring ("IInternetZoneManagerEx Interface"), pointer_default (unique)]
interface IInternetZoneManagerEx : IInternetZoneManager {
  HRESULT GetZoneActionPolicyEx ([in] DWORD dwZone,[in] DWORD dwAction,[out, size_is (cbPolicy)]BYTE *pPolicy,[in] DWORD cbPolicy,[in] URLZONEREG urlZoneReg,[in] DWORD dwFlags);
  HRESULT SetZoneActionPolicyEx ([in] DWORD dwZone,[in] DWORD dwAction,[in, size_is (cbPolicy)]BYTE *pPolicy,[in] DWORD cbPolicy,[in] URLZONEREG urlZoneReg,[in] DWORD dwFlags);
}
cpp_quote("#endif")
cpp_quote("#endif")

cpp_quote("")
cpp_quote("#if (_WIN32_IE >= _WIN32_IE_IE70)")
cpp_quote("#ifndef _LPINTERNETZONEMANAGEREX2_DEFINED")
cpp_quote("#define _LPINTERNETZONEMANAGEREX2_DEFINED")
cpp_quote("")
cpp_quote("#define SECURITY_IE_STATE_GREEN 0x0")
cpp_quote("#define SECURITY_IE_STATE_RED 0x1")
cpp_quote("")
[local, object, uuid (EDC17559-DD5D-4846-8eef-8becba5a4abf), helpstring ("IInternetZoneManagerEx2 Interface"), pointer_default (unique)]
interface IInternetZoneManagerEx2 : IInternetZoneManagerEx {
  HRESULT GetZoneAttributesEx ([in] DWORD dwZone,[in, out, unique]ZONEATTRIBUTES *pZoneAttributes,[in] DWORD dwFlags);
  HRESULT GetZoneSecurityState ([in] DWORD dwZoneIndex,[in] BOOL fRespectPolicy,[in, out] LPDWORD pdwState,[in, out] BOOL *pfPolicyEncountered);
  HRESULT GetIESecurityState ([in] BOOL fRespectPolicy,[in, out] LPDWORD pdwState,[in, out] BOOL *pfPolicyEncountered,[in] BOOL fNoCache);
  HRESULT FixUnsecureSettings ();
}
cpp_quote("#endif")
cpp_quote("#endif")

cpp_quote("")
cpp_quote("EXTERN_C const IID CLSID_SoftDistExt;")

cpp_quote("")
cpp_quote("#ifndef _LPSOFTDISTEXT_DEFINED")
cpp_quote("#define _LPSOFTDISTEXT_DEFINED")
cpp_quote("")
cpp_quote("#define SOFTDIST_FLAG_USAGE_EMAIL 0x1")
cpp_quote("#define SOFTDIST_FLAG_USAGE_PRECACHE 0x2")
cpp_quote("#define SOFTDIST_FLAG_USAGE_AUTOINSTALL 0x4")
cpp_quote("#define SOFTDIST_FLAG_DELETE_SUBSCRIPTION 0x8")
cpp_quote("")
cpp_quote("#define SOFTDIST_ADSTATE_NONE 0x0")
cpp_quote("#define SOFTDIST_ADSTATE_AVAILABLE 0x1")
cpp_quote("#define SOFTDIST_ADSTATE_DOWNLOADED 0x2")
cpp_quote("#define SOFTDIST_ADSTATE_INSTALLED 0x3")
cpp_quote("")
typedef struct _tagCODEBASEHOLD {
  ULONG cbSize;
  LPWSTR szDistUnit;
  LPWSTR szCodeBase;
  DWORD dwVersionMS;
  DWORD dwVersionLS;
  DWORD dwStyle;
} CODEBASEHOLD,*LPCODEBASEHOLD;

cpp_quote("")
typedef struct _tagSOFTDISTINFO {
  ULONG cbSize;
  DWORD dwFlags;
  DWORD dwAdState;
  LPWSTR szTitle;
  LPWSTR szAbstract;
  LPWSTR szHREF;
  DWORD dwInstalledVersionMS;
  DWORD dwInstalledVersionLS;
  DWORD dwUpdateVersionMS;
  DWORD dwUpdateVersionLS;
  DWORD dwAdvertisedVersionMS;
  DWORD dwAdvertisedVersionLS;
  DWORD dwReserved;
} SOFTDISTINFO, *LPSOFTDISTINFO;

cpp_quote("")
[local, object, uuid (B15B8DC1-C7E1-11d0-8680-00aa00bdcb71), helpstring ("ISoftDistExt Interface"), pointer_default (unique)]
interface ISoftDistExt : IUnknown {
  HRESULT ProcessSoftDist ([in] LPCWSTR szCDFURL, [in] IXMLElement *pSoftDistElement, [in, out] LPSOFTDISTINFO lpsdi);
  HRESULT GetFirstCodeBase ([in] LPWSTR *szCodeBase,[in] LPDWORD dwMaxSize);
  HRESULT GetNextCodeBase ([in] LPWSTR *szCodeBase,[in] LPDWORD dwMaxSize);
  HRESULT AsyncInstallDistributionUnit ([in] IBindCtx *pbc,[in] LPVOID pvReserved,[in] DWORD flags,[in] LPCODEBASEHOLD lpcbh);
}

cpp_quote("")
cpp_quote("STDAPI GetSoftwareUpdateInfo(LPCWSTR szDistUnit, LPSOFTDISTINFO psdi);")
cpp_quote("STDAPI SetSoftwareUpdateAdvertisementState(LPCWSTR szDistUnit, DWORD dwAdState, DWORD dwAdvertisedVersionMS, DWORD dwAdvertisedVersionLS);")
cpp_quote("#endif")

cpp_quote("")
cpp_quote("#ifndef _LPCATALOGFILEINFO_DEFINED")
cpp_quote("#define _LPCATALOGFILEINFO_DEFINED")
cpp_quote("")
[local, object, uuid (711c7600-6b48-11d1-B403-00aa00b92af1), pointer_default (unique)]
interface ICatalogFileInfo : IUnknown {
  typedef [unique] ICatalogFileInfo *LPCATALOGFILEINFO;
cpp_quote("")
  HRESULT GetCatalogFile ([out] LPSTR *ppszCatalogFile);
  HRESULT GetJavaTrust ([out] void **ppJavaTrust);
}
cpp_quote("#endif")

cpp_quote("")
cpp_quote("#ifndef _LPDATAFILTER_DEFINED")
cpp_quote("#define _LPDATAFILTER_DEFINED")
cpp_quote("")
[object, uuid (69d14c80-c18e-11d0-a9ce-006097942311), pointer_default (unique)]
interface IDataFilter: IUnknown {
  typedef [unique] IDataFilter *LPDATAFILTER;
cpp_quote("")
  HRESULT DoEncode ([in] DWORD dwFlags,[in] LONG lInBufferSize,[in, size_is (lInBufferSize)]BYTE *pbInBuffer,[in] LONG lOutBufferSize,[out, size_is (lOutBufferSize)]BYTE *pbOutBuffer,[in] LONG lInBytesAvailable,[out] LONG *plInBytesRead,[out] LONG *plOutBytesWritten,[in] DWORD dwReserved);
  HRESULT DoDecode ([in] DWORD dwFlags,[in] LONG lInBufferSize,[in, size_is (lInBufferSize)]BYTE *pbInBuffer,[in] LONG lOutBufferSize,[out, size_is (lOutBufferSize)]BYTE *pbOutBuffer,[in] LONG lInBytesAvailable,[out] LONG *plInBytesRead,[out] LONG *plOutBytesWritten,[in] DWORD dwReserved);
  HRESULT SetEncodingLevel ([in] DWORD dwEncLevel);
}
cpp_quote("#endif")

cpp_quote("")
cpp_quote("#ifndef _LPENCODINGFILTERFACTORY_DEFINED")
cpp_quote("#define _LPENCODINGFILTERFACTORY_DEFINED")
cpp_quote("")
typedef struct _tagPROTOCOLFILTERDATA {
  DWORD cbSize;
  IInternetProtocolSink *pProtocolSink;
  IInternetProtocol *pProtocol;
  IUnknown *pUnk;
  DWORD dwFilterFlags;
} PROTOCOLFILTERDATA;

cpp_quote("")
[local, object, uuid (70bdde00-c18e-11d0-a9ce-006097942311), pointer_default (unique)]
interface IEncodingFilterFactory : IUnknown {
  typedef [unique] IEncodingFilterFactory *LPENCODINGFILTERFACTORY;
cpp_quote("")
  typedef struct _tagDATAINFO {
    ULONG ulTotalSize;
    ULONG ulavrPacketSize;
    ULONG ulConnectSpeed;
    ULONG ulProcessorSpeed;
  } DATAINFO;
cpp_quote("")
  HRESULT FindBestFilter ([in] LPCWSTR pwzCodeIn,[in] LPCWSTR pwzCodeOut,[in] DATAINFO info,[out] IDataFilter **ppDF);
  HRESULT GetDefaultFilter ([in] LPCWSTR pwzCodeIn,[in] LPCWSTR pwzCodeOut,[out] IDataFilter **ppDF);
}
cpp_quote("#endif")

cpp_quote("")
cpp_quote("#ifndef _HITLOGGING_DEFINED")
cpp_quote("#define _HITLOGGING_DEFINED")

cpp_quote("")
cpp_quote("WINBOOL WINAPI IsLoggingEnabledA(LPCSTR pszUrl);")
cpp_quote("WINBOOL WINAPI IsLoggingEnabledW(LPCWSTR pwszUrl);")

cpp_quote("")
cpp_quote("#define IsLoggingEnabled __MINGW_NAME_AW(IsLoggingEnabled)")

typedef struct _tagHIT_LOGGING_INFO {
  DWORD dwStructSize;
  LPSTR lpszLoggedUrlName;
  SYSTEMTIME StartTime;
  SYSTEMTIME EndTime;
  LPSTR lpszExtendedInfo;
} HIT_LOGGING_INFO,*LPHIT_LOGGING_INFO;
cpp_quote("")
cpp_quote("WINBOOL WINAPI WriteHitLogging(LPHIT_LOGGING_INFO lpLogginginfo);")

cpp_quote("")
cpp_quote("#define CONFIRMSAFETYACTION_LOADOBJECT 0x1")

cpp_quote("")
struct CONFIRMSAFETY {
  CLSID clsid;
  IUnknown *pUnk;
  DWORD dwFlags;
};
cpp_quote("")
cpp_quote("EXTERN_C const GUID GUID_CUSTOM_CONFIRMOBJECTSAFETY;")
cpp_quote("#endif")

cpp_quote("")
cpp_quote("#ifndef _LPIWRAPPEDPROTOCOL_DEFINED")
cpp_quote("#define _LPIWRAPPEDPROTOCOL_DEFINED")
cpp_quote("")
[local, object, uuid (53c84785-8425-4dc5-971b-e58d9c19f9b6), pointer_default (unique)]
interface IWrappedProtocol : IUnknown {
  typedef [unique] IWrappedProtocol *LPIWRAPPEDPROTOCOL;
cpp_quote("")
  HRESULT GetWrapperCode ([out] LONG *pnCode,[in] DWORD_PTR dwReserved);
}
cpp_quote("#endif")

cpp_quote("")
cpp_quote("#ifndef _LPGETBINDHANDLE_DEFINED")
cpp_quote("#define _LPGETBINDHANDLE_DEFINED")
cpp_quote("")
[local, object, uuid (AF0FF408-129d-4b20-91f0-02bd23d88352), pointer_default (unique)]
interface IGetBindHandle: IUnknown {
  typedef [unique] IGetBindHandle *LPGETBINDHANDLE;
cpp_quote("")
  typedef enum {
    BINDHANDLETYPES_APPCACHE = 0x0,
    BINDHANDLETYPES_DEPENDENCY = 0x1,
    BINDHANDLETYPES_COUNT
  } BINDHANDLETYPES;
cpp_quote("")
  HRESULT GetBindHandle ([in] BINDHANDLETYPES enumRequestedHandle,[out] HANDLE *pRetHandle);
}
cpp_quote("#endif")

cpp_quote("")
cpp_quote("#ifndef _XHRPLUGGABLEPROTOCOL_DEFINED")
cpp_quote("#define _XHRPLUGGABLEPROTOCOL_DEFINED")
cpp_quote("")
typedef struct _tagPROTOCOL_ARGUMENT {
  LPCWSTR szMethod;
  LPCWSTR szTargetUrl;
} PROTOCOL_ARGUMENT,*LPPROTOCOL_ARGUMENT;
cpp_quote("#endif")

cpp_quote("")
cpp_quote("#ifndef _LPBINDCALLBACKREDIRECT_DEFINED")
cpp_quote("#define _LPBINDCALLBACKREDIRECT_DEFINED")
cpp_quote("")
[local, object, uuid (11c81bc2-121e-4ed5-B9C4-B430BD54F2C0), pointer_default (unique)]
interface IBindCallbackRedirect : IUnknown {
  typedef [unique] IBindCallbackRedirect *LPBINDCALLBACKREDIRECT;
cpp_quote("")
  HRESULT Redirect ([in] LPCWSTR lpcUrl,[out] VARIANT_BOOL *vbCancel);
}
cpp_quote("#endif")
cpp_quote("")
cpp_quote("#endif")
