windows-nt/Source/XPSP1/NT/public/sdk/inc/urlmon.idl
2020-09-26 16:20:57 +08:00

2885 lines
112 KiB
Plaintext

//+---------------------------------------------------------------------------
//
// Microsoft Windows
// Copyright (C) Microsoft Corporation, 1992-1999.
//
// File: urlmon.idl
//
// Contents: async moniker interfaces
//
// Classes:
//
// Functions:
//
//
//----------------------------------------------------------------------------
cpp_quote("//=--------------------------------------------------------------------------=")
cpp_quote("// UrlMon.h")
cpp_quote("//=--------------------------------------------------------------------------=")
cpp_quote("// (C) Copyright 1995-1998 Microsoft Corporation. All Rights Reserved.")
cpp_quote("//")
cpp_quote("// THIS CODE AND INFORMATION IS PROVIDED \"AS IS\" WITHOUT WARRANTY OF")
cpp_quote("// ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO")
cpp_quote("// THE IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A")
cpp_quote("// PARTICULAR PURPOSE.")
cpp_quote("//=--------------------------------------------------------------------------=")
cpp_quote("")
cpp_quote("#pragma comment(lib,\"uuid.lib\")")
cpp_quote("")
cpp_quote("//---------------------------------------------------------------------------=")
cpp_quote("// URL Moniker Interfaces.")
cpp_quote("")
#ifdef UNIX
typedef unsigned long HANDLE_PTR;
#endif /* UNIX */
import "objidl.idl";
import "oleidl.idl";
import "servprov.idl";
import "msxml.idl";
interface IPersistMoniker;
interface IBindProtocol;
interface IBinding;
interface IBindStatusCallback;
interface IBindStatusCallbackMsg;
interface IAuthenticate;
interface IWindowForBindingUI;
interface ICodeInstall;
interface IHttpNegotiate;
interface IHttpNegotiate2;
cpp_quote("// Side-by-Side clsid")
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_StdEncodingFilterFac; ")
cpp_quote("EXTERN_C const IID CLSID_SBS_DeCompMimeFilter; ")
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("// END Side-by-Side clsid")
cpp_quote("// These are for backwards compatibility with previous URLMON versions")
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("#define PI_DOCFILECLSIDLOOKUP PI_CLSIDLOOKUP")
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_StdEncodingFilterFac; ")
cpp_quote("EXTERN_C const IID CLSID_DeCompMimeFilter; ")
cpp_quote("EXTERN_C const IID CLSID_CdlProtocol; ")
cpp_quote("EXTERN_C const IID CLSID_ClassInstallFilter; ")
cpp_quote("EXTERN_C const IID IID_IAsyncBindCtx; ")
#pragma midl_echo(" ")
#pragma midl_echo("#define SZ_URLCONTEXT OLESTR(\"URL Context\")")
#pragma midl_echo("#define SZ_ASYNC_CALLEE OLESTR(\"AsyncCallee\")")
#pragma midl_echo("#define MKSYS_URLMONIKER 6 ")
#pragma midl_echo("#define URL_MK_LEGACY 0 ")
#pragma midl_echo("#define URL_MK_UNIFORM 1 ")
#pragma midl_echo("#define URL_MK_NO_CANONICALIZE 2 ")
#pragma midl_echo(" ")
#pragma midl_echo("STDAPI CreateURLMoniker(LPMONIKER pMkCtx, LPCWSTR szURL, LPMONIKER FAR * ppmk); ")
#pragma midl_echo("STDAPI CreateURLMonikerEx(LPMONIKER pMkCtx, LPCWSTR szURL, LPMONIKER FAR * ppmk, DWORD dwFlags); ")
#pragma midl_echo("STDAPI GetClassURL(LPCWSTR szURL, CLSID *pClsID); ")
#pragma midl_echo("STDAPI CreateAsyncBindCtx(DWORD reserved, IBindStatusCallback *pBSCb, ")
#pragma midl_echo(" IEnumFORMATETC *pEFetc, IBindCtx **ppBC); ")
#pragma midl_echo("STDAPI CreateAsyncBindCtxEx(IBindCtx *pbc, DWORD dwOptions, IBindStatusCallback *pBSCb, IEnumFORMATETC *pEnum, ")
#pragma midl_echo(" IBindCtx **ppBC, DWORD reserved); ")
#pragma midl_echo("STDAPI MkParseDisplayNameEx(IBindCtx *pbc, LPCWSTR szDisplayName, ULONG *pchEaten, ")
#pragma midl_echo(" LPMONIKER *ppmk); ")
#pragma midl_echo("STDAPI RegisterBindStatusCallback(LPBC pBC, IBindStatusCallback *pBSCb, ")
#pragma midl_echo(" IBindStatusCallback** ppBSCBPrev, DWORD dwReserved); ")
#pragma midl_echo("STDAPI RevokeBindStatusCallback(LPBC pBC, IBindStatusCallback *pBSCb); ")
#pragma midl_echo("STDAPI GetClassFileOrMime(LPBC pBC, LPCWSTR szFilename, LPVOID pBuffer, DWORD cbSize, LPCWSTR szMime, DWORD dwReserved, CLSID *pclsid); ")
#pragma midl_echo("STDAPI IsValidURL(LPBC pBC, LPCWSTR szURL, DWORD dwReserved); ")
#pragma midl_echo("STDAPI CoGetClassObjectFromURL( REFCLSID rCLASSID,")
#pragma midl_echo(" LPCWSTR szCODE, DWORD dwFileVersionMS, ")
#pragma midl_echo(" DWORD dwFileVersionLS, LPCWSTR szTYPE,")
#pragma midl_echo(" LPBINDCTX pBindCtx, DWORD dwClsContext,")
#pragma midl_echo(" LPVOID pvReserved, REFIID riid, LPVOID * ppv);")
#pragma midl_echo("STDAPI FaultInIEFeature( HWND hWnd,")
#pragma midl_echo(" uCLSSPEC *pClassSpec,")
#pragma midl_echo(" QUERYCONTEXT *pQuery, DWORD dwFlags); ")
#pragma midl_echo("STDAPI GetComponentIDFromCLSSPEC(uCLSSPEC *pClassspec,")
#pragma midl_echo(" LPSTR * ppszComponentID); ")
#pragma midl_echo("// flags for FaultInIEFeature")
#pragma midl_echo("#define FIEF_FLAG_FORCE_JITUI 0x1 // force JIT ui even if")
#pragma midl_echo(" // previoulsy rejected by ")
#pragma midl_echo(" // user in this session or")
#pragma midl_echo(" // marked as Never Ask Again")
#pragma midl_echo("#define FIEF_FLAG_PEEK 0x2 // just peek, don't faultin")
#pragma midl_echo("#define FIEF_FLAG_SKIP_INSTALLED_VERSION_CHECK 0x4 // force JIT without checking local version")
#pragma midl_echo(" ")
#pragma midl_echo("//helper apis ")
#pragma midl_echo("STDAPI IsAsyncMoniker(IMoniker* pmk); ")
#pragma midl_echo("STDAPI CreateURLBinding(LPCWSTR lpszUrl, IBindCtx *pbc, IBinding **ppBdg); ")
#pragma midl_echo(" ")
#pragma midl_echo("STDAPI RegisterMediaTypes(UINT ctypes, const LPCSTR* rgszTypes, CLIPFORMAT* rgcfTypes); ")
#pragma midl_echo("STDAPI FindMediaType(LPCSTR rgszTypes, CLIPFORMAT* rgcfTypes); ")
#pragma midl_echo("STDAPI CreateFormatEnumerator( UINT cfmtetc, FORMATETC* rgfmtetc, IEnumFORMATETC** ppenumfmtetc); ")
#pragma midl_echo("STDAPI RegisterFormatEnumerator(LPBC pBC, IEnumFORMATETC *pEFetc, DWORD reserved); ")
#pragma midl_echo("STDAPI RevokeFormatEnumerator(LPBC pBC, IEnumFORMATETC *pEFetc); ")
#pragma midl_echo("STDAPI RegisterMediaTypeClass(LPBC pBC,UINT ctypes, const LPCSTR* rgszTypes, CLSID *rgclsID, DWORD reserved); ")
#pragma midl_echo("STDAPI FindMediaTypeClass(LPBC pBC, LPCSTR szType, CLSID *pclsID, DWORD reserved); ")
#pragma midl_echo("STDAPI UrlMkSetSessionOption(DWORD dwOption, LPVOID pBuffer, DWORD dwBufferLength, DWORD dwReserved); ")
#pragma midl_echo("STDAPI UrlMkGetSessionOption(DWORD dwOption, LPVOID pBuffer, DWORD dwBufferLength, DWORD *pdwBufferLength, DWORD dwReserved); ")
#pragma midl_echo("STDAPI FindMimeFromData( ")
#pragma midl_echo(" LPBC pBC, // bind context - can be NULL ")
#pragma midl_echo(" LPCWSTR pwzUrl, // url - can be null ")
#pragma midl_echo(" LPVOID pBuffer, // buffer with data to sniff - can be null (pwzUrl must be valid) ")
#pragma midl_echo(" DWORD cbSize, // size of buffer ")
#pragma midl_echo(" LPCWSTR pwzMimeProposed, // proposed mime if - can be null ")
#pragma midl_echo(" DWORD dwMimeFlags, // will be defined ")
#pragma midl_echo(" LPWSTR *ppwzMimeOut, // the suggested mime ")
#pragma midl_echo(" DWORD dwReserved); // must be 0 ")
#pragma midl_echo("#define FMFD_DEFAULT 0x00000000 ")
#pragma midl_echo("#define FMFD_URLASFILENAME 0x00000001 ")
#pragma midl_echo("STDAPI ObtainUserAgentString(DWORD dwOption, LPSTR pszUAOut, DWORD* cbSize); ")
#pragma midl_echo("STDAPI CompareSecurityIds(BYTE* pbSecurityId1, DWORD dwLen1, BYTE* pbSecurityId2, DWORD dwLen2, DWORD dwReserved); ")
#pragma midl_echo(" ")
#pragma midl_echo("// URLMON-specific defines for UrlMkSetSessionOption() above")
#pragma midl_echo("#define URLMON_OPTION_USERAGENT 0x10000001")
#pragma midl_echo("#define URLMON_OPTION_USERAGENT_REFRESH 0x10000002")
#pragma midl_echo("#define URLMON_OPTION_URL_ENCODING 0x10000004")
#pragma midl_echo(" ")
#pragma midl_echo("#define CF_NULL 0 ")
#pragma midl_echo("#define CFSTR_MIME_NULL NULL ")
// 7 bit MIME Types
#pragma midl_echo("#define CFSTR_MIME_TEXT (TEXT(\"text/plain\")) ")
#pragma midl_echo("#define CFSTR_MIME_RICHTEXT (TEXT(\"text/richtext\")) ")
#pragma midl_echo("#define CFSTR_MIME_X_BITMAP (TEXT(\"image/x-xbitmap\")) ")
#pragma midl_echo("#define CFSTR_MIME_POSTSCRIPT (TEXT(\"application/postscript\")) ")
// 8 bit MIME Types
#pragma midl_echo("#define CFSTR_MIME_AIFF (TEXT(\"audio/aiff\")) ")
#pragma midl_echo("#define CFSTR_MIME_BASICAUDIO (TEXT(\"audio/basic\")) ")
#pragma midl_echo("#define CFSTR_MIME_WAV (TEXT(\"audio/wav\")) ")
#pragma midl_echo("#define CFSTR_MIME_X_WAV (TEXT(\"audio/x-wav\")) ")
#pragma midl_echo("#define CFSTR_MIME_GIF (TEXT(\"image/gif\")) ")
#pragma midl_echo("#define CFSTR_MIME_PJPEG (TEXT(\"image/pjpeg\")) ")
#pragma midl_echo("#define CFSTR_MIME_JPEG (TEXT(\"image/jpeg\")) ")
#pragma midl_echo("#define CFSTR_MIME_TIFF (TEXT(\"image/tiff\")) ")
#pragma midl_echo("#define CFSTR_MIME_X_PNG (TEXT(\"image/x-png\")) ")
#pragma midl_echo("#define CFSTR_MIME_BMP (TEXT(\"image/bmp\")) ")
#pragma midl_echo("#define CFSTR_MIME_X_ART (TEXT(\"image/x-jg\")) ")
#pragma midl_echo("#define CFSTR_MIME_X_EMF (TEXT(\"image/x-emf\")) ")
#pragma midl_echo("#define CFSTR_MIME_X_WMF (TEXT(\"image/x-wmf\")) ")
#pragma midl_echo("#define CFSTR_MIME_AVI (TEXT(\"video/avi\")) ")
#pragma midl_echo("#define CFSTR_MIME_MPEG (TEXT(\"video/mpeg\")) ")
#pragma midl_echo("#define CFSTR_MIME_FRACTALS (TEXT(\"application/fractals\")) ")
#pragma midl_echo("#define CFSTR_MIME_RAWDATA (TEXT(\"application/octet-stream\"))")
#pragma midl_echo("#define CFSTR_MIME_RAWDATASTRM (TEXT(\"application/octet-stream\"))")
#pragma midl_echo("#define CFSTR_MIME_PDF (TEXT(\"application/pdf\")) ")
#pragma midl_echo("#define CFSTR_MIME_HTA (TEXT(\"application/hta\")) ")
#pragma midl_echo("#define CFSTR_MIME_X_AIFF (TEXT(\"audio/x-aiff\")) ")
#pragma midl_echo("#define CFSTR_MIME_X_REALAUDIO (TEXT(\"audio/x-pn-realaudio\")) ")
#pragma midl_echo("#define CFSTR_MIME_XBM (TEXT(\"image/xbm\")) ")
#pragma midl_echo("#define CFSTR_MIME_QUICKTIME (TEXT(\"video/quicktime\")) ")
#pragma midl_echo("#define CFSTR_MIME_X_MSVIDEO (TEXT(\"video/x-msvideo\")) ")
#pragma midl_echo("#define CFSTR_MIME_X_SGI_MOVIE (TEXT(\"video/x-sgi-movie\")) ")
// 7 or 8 bit MIME Types
#pragma midl_echo("#define CFSTR_MIME_HTML (TEXT(\"text/html\")) ")
#pragma midl_echo("#define CFSTR_MIME_XML (TEXT(\"text/xml\")) ")
#pragma midl_echo(" ")
cpp_quote("// MessageId: MK_S_ASYNCHRONOUS ")
cpp_quote("// MessageText: Operation is successful, but will complete asynchronously. ")
cpp_quote("// ")
cpp_quote("#define MK_S_ASYNCHRONOUS _HRESULT_TYPEDEF_(0x000401E8L) ")
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_(0x8000000AL) ")
cpp_quote("#endif ")
cpp_quote(" ")
cpp_quote("// ")
cpp_quote("// ")
cpp_quote("// WinINet and protocol specific errors are mapped to one of the following ")
cpp_quote("// error which are returned in IBSC::OnStopBinding ")
cpp_quote("// ")
cpp_quote("// ")
cpp_quote("// Note: FACILITY C is split into ranges of 1k ")
cpp_quote("// C0000 - C03FF INET_E_ (URLMON's original hresult) ")
cpp_quote("// C0400 - C07FF INET_E_CLIENT_xxx ")
cpp_quote("// C0800 - C0BFF INET_E_SERVER_xxx ")
cpp_quote("// C0C00 - C0FFF INET_E_???? ")
cpp_quote("// C1000 - C13FF INET_E_AGENT_xxx (info delivery agents) ")
//
// url could not be parsed
//
cpp_quote("#define INET_E_INVALID_URL _HRESULT_TYPEDEF_(0x800C0002L) ")
//
// InternetOpen failed - no session was established
//
cpp_quote("#define INET_E_NO_SESSION _HRESULT_TYPEDEF_(0x800C0003L) ")
//
// InternetConnect failed - no
//
cpp_quote("#define INET_E_CANNOT_CONNECT _HRESULT_TYPEDEF_(0x800C0004L) ")
//
// the server or proxy was not found
//
cpp_quote("#define INET_E_RESOURCE_NOT_FOUND _HRESULT_TYPEDEF_(0x800C0005L) ")
//
// the actual object was not found - e.g. http: 404
//
cpp_quote("#define INET_E_OBJECT_NOT_FOUND _HRESULT_TYPEDEF_(0x800C0006L) ")
//
// connection was established but data can not be retrieved
// no filename from cache invalid etc.
//
cpp_quote("#define INET_E_DATA_NOT_AVAILABLE _HRESULT_TYPEDEF_(0x800C0007L) ")
//
// generic download failure - connection broke
//
cpp_quote("#define INET_E_DOWNLOAD_FAILURE _HRESULT_TYPEDEF_(0x800C0008L) ")
//
// to access to this object need authentication e.g. http: 401
//
cpp_quote("#define INET_E_AUTHENTICATION_REQUIRED _HRESULT_TYPEDEF_(0x800C0009L) ")
//
// the object is not available of the required type http: 403 no object
//
cpp_quote("#define INET_E_NO_VALID_MEDIA _HRESULT_TYPEDEF_(0x800C000AL) ")
//
// the internet connection timed out
//
cpp_quote("#define INET_E_CONNECTION_TIMEOUT _HRESULT_TYPEDEF_(0x800C000BL) ")
//
// the request was invalid
//
cpp_quote("#define INET_E_INVALID_REQUEST _HRESULT_TYPEDEF_(0x800C000CL) ")
//
// protocol is not know and no plugable protocol is registered
//
cpp_quote("#define INET_E_UNKNOWN_PROTOCOL _HRESULT_TYPEDEF_(0x800C000DL) ")
//
// security problem encountered
//
cpp_quote("#define INET_E_SECURITY_PROBLEM _HRESULT_TYPEDEF_(0x800C000EL) ")
//
// object could not be loaded; IPersistXXX::Load failed
//
cpp_quote("#define INET_E_CANNOT_LOAD_DATA _HRESULT_TYPEDEF_(0x800C000FL) ")
//
// CoCreateInstance failed.
//
cpp_quote("#define INET_E_CANNOT_INSTANTIATE_OBJECT _HRESULT_TYPEDEF_(0x800C0010L) ")
//
// Redirect failed.
//
cpp_quote("#define INET_E_REDIRECT_FAILED _HRESULT_TYPEDEF_(0x800C0014L) ")
//
// Redirect to directory.
//
cpp_quote("#define INET_E_REDIRECT_TO_DIR _HRESULT_TYPEDEF_(0x800C0015L) ")
//
// HResult range returned in OnStopBinding
//
//
// Data can not be locked
//
cpp_quote("#define INET_E_CANNOT_LOCK_REQUEST _HRESULT_TYPEDEF_(0x800C0016L) ")
cpp_quote("#define INET_E_USE_EXTEND_BINDING _HRESULT_TYPEDEF_(0x800C0017L) ")
cpp_quote("#define INET_E_TERMINATED_BIND _HRESULT_TYPEDEF_(0x800C0018L) ")
cpp_quote("#define INET_E_ERROR_FIRST _HRESULT_TYPEDEF_(0x800C0002L) ")
// User declined download of component
cpp_quote("#define INET_E_CODE_DOWNLOAD_DECLINED _HRESULT_TYPEDEF_(0x800C0100L) ")
cpp_quote("#define INET_E_RESULT_DISPATCHED _HRESULT_TYPEDEF_(0x800C0200L) ")
// Exact code download version requested not found
cpp_quote("#define INET_E_CANNOT_REPLACE_SFP_FILE _HRESULT_TYPEDEF_(0x800C0300L) ")
// NOTE: Please update INET_E_ERROR_LAST if you add an error code with a higher number:
cpp_quote("#define INET_E_ERROR_LAST INET_E_CANNOT_REPLACE_SFP_FILE")
//+---------------------------------------------------------------------------
//
// Copyright (C) Microsoft Corporation, 1995-1998.
//
// Contents: IPersistMoniker interface definition
//
//----------------------------------------------------------------------------
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;
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")
//+---------------------------------------------------------------------------
//
// Copyright (C) Microsoft Corporation, 1995-1998.
//
// Contents: IMonikerProp interface definition
//
//----------------------------------------------------------------------------
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;
typedef enum {
MIMETYPEPROP = 0x00000000,
USE_SRC_URL = 0X00000001
} MONIKERPROPERTY;
HRESULT PutProperty (
[in] MONIKERPROPERTY mkp,
[in] LPCWSTR val
);
}
cpp_quote("#endif")
//+---------------------------------------------------------------------------
//
// Copyright (C) Microsoft Corporation, 1995-1998.
//
// Contents: IBindProtocol interface definition
//
//----------------------------------------------------------------------------
cpp_quote("#ifndef _LPBINDPROTOCOL_DEFINED")
cpp_quote("#define _LPBINDPROTOCOL_DEFINED")
[
local,
object,
uuid(79eac9cd-baf9-11ce-8c82-00aa004ba90b),
pointer_default(unique)
]
interface IBindProtocol : IUnknown
{
typedef [unique] IBindProtocol *LPBINDPROTOCOL;
HRESULT CreateBinding(
[in] LPCWSTR szUrl,
[in] IBindCtx *pbc,
[out] IBinding ** ppb);
}
cpp_quote("#endif")
//+---------------------------------------------------------------------------
//
// Copyright (C) Microsoft Corporation, 1995-1998.
//
// Contents: IBinding interface definition
//
//----------------------------------------------------------------------------
cpp_quote("#ifndef _LPBINDING_DEFINED")
cpp_quote("#define _LPBINDING_DEFINED")
[
object,
uuid(79eac9c0-baf9-11ce-8c82-00aa004ba90b),
pointer_default(unique)
]
interface IBinding: IUnknown
{
typedef [unique] IBinding *LPBINDING;
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")
//+---------------------------------------------------------------------------
//
// Copyright (C) Microsoft Corporation, 1995-1998.
//
// Contents: IBindStatusCallback interface definition
//
//----------------------------------------------------------------------------
cpp_quote("#ifndef _LPBINDSTATUSCALLBACK_DEFINED")
cpp_quote("#define _LPBINDSTATUSCALLBACK_DEFINED")
[
object,
uuid(79eac9c1-baf9-11ce-8c82-00aa004ba90b),
pointer_default(unique)
]
interface IBindStatusCallback: IUnknown
{
typedef [unique] IBindStatusCallback *LPBINDSTATUSCALLBACK;
typedef enum
{
BINDVERB_GET = 0x00000000, // default action
BINDVERB_POST = 0x00000001, // post verb
BINDVERB_PUT = 0x00000002, // put verb
BINDVERB_CUSTOM = 0x00000003, // custom verb
} BINDVERB;
typedef enum
{
BINDINFOF_URLENCODESTGMEDDATA = 0x00000001, // url encode the stgmed data
BINDINFOF_URLENCODEDEXTRAINFO = 0x00000002, // url encode the extra info
} BINDINFOF;
// flags that describe the type of transaction that caller wants
typedef enum
{
BINDF_ASYNCHRONOUS = 0x00000001
,BINDF_ASYNCSTORAGE = 0x00000002
,BINDF_NOPROGRESSIVERENDERING = 0x00000004
,BINDF_OFFLINEOPERATION = 0x00000008
,BINDF_GETNEWESTVERSION = 0x00000010
,BINDF_NOWRITECACHE = 0x00000020
,BINDF_NEEDFILE = 0x00000040
,BINDF_PULLDATA = 0x00000080
,BINDF_IGNORESECURITYPROBLEM = 0x00000100
,BINDF_RESYNCHRONIZE = 0x00000200
,BINDF_HYPERLINK = 0x00000400
,BINDF_NO_UI = 0x00000800
,BINDF_SILENTOPERATION = 0x00001000
,BINDF_PRAGMA_NO_CACHE = 0x00002000
,BINDF_GETCLASSOBJECT = 0x00004000
,BINDF_RESERVED_1 = 0x00008000
// bindstatus callback from client is free threaded
,BINDF_FREE_THREADED = 0x00010000
// client does not need to know excat size of data available
// hence the read goes directly to e.g. socket
,BINDF_DIRECT_READ = 0x00020000
// is the transaction a forms submit.
,BINDF_FORMS_SUBMIT = 0x00040000
,BINDF_GETFROMCACHE_IF_NET_FAIL = 0x00080000
// binding is from UrlMoniker
,BINDF_FROMURLMON = 0x00100000
,BINDF_FWD_BACK = 0x00200000
,BINDF_PREFERDEFAULTHANDLER = 0x00400000
,BINDF_ENFORCERESTRICTED = 0x00800000
// Note:
// the highest byte 0x??000000 is used internally
// see other documentation
} BINDF;
typedef enum
{
URL_ENCODING_NONE = 0x00000000
,URL_ENCODING_ENABLE_UTF8 = 0x10000000
,URL_ENCODING_DISABLE_UTF8 = 0x20000000
} URL_ENCODING;
typedef struct _tagBINDINFO
{
ULONG cbSize;
LPWSTR szExtraInfo; // e.g. string added to the URL string [range byte]
STGMEDIUM stgmedData; // e.g. put or post data
DWORD grfBindInfoF; // e.g. how meddata should be treaded
DWORD dwBindVerb; // e.g. put, post, ...
LPWSTR szCustomVerb; // e.g. custom verb
DWORD cbstgmedData; // size of data in stgmedData
DWORD dwOptions; // additional option
DWORD dwOptionsFlags; // options flags
DWORD dwCodePage; // the code used to convert the url
SECURITY_ATTRIBUTES securityAttributes;
IID iid; // iid of pUnk
IUnknown *pUnk; // pUnk - whatever
DWORD dwReserved; // should be null
} BINDINFO;
typedef struct _REMSECURITY_ATTRIBUTES
{
DWORD nLength;
DWORD lpSecurityDescriptor;
BOOL bInheritHandle;
} REMSECURITY_ATTRIBUTES, *PREMSECURITY_ATTRIBUTES, *LPREMSECURITY_ATTRIBUTES;
typedef struct _tagRemBINDINFO
{
ULONG cbSize;
LPWSTR szExtraInfo; // e.g. string added to the URL string [range byte]
DWORD grfBindInfoF; // e.g. how meddata should be treaded
DWORD dwBindVerb; // e.g. put, post, ...
LPWSTR szCustomVerb; // e.g. custom verb
DWORD cbstgmedData; // size of data in stgmedData
DWORD dwOptions; // additional options
DWORD dwOptionsFlags; // options flags
DWORD dwCodePage; // the code used to convert the url
REMSECURITY_ATTRIBUTES securityAttributes;
IID iid; // iid of pUnk
IUnknown *pUnk; // pUnk - whatever
DWORD dwReserved; // should be null
} RemBINDINFO;
typedef struct tagRemFORMATETC {
DWORD cfFormat;
DWORD ptd;
DWORD dwAspect;
LONG lindex;
DWORD tymed;
} RemFORMATETC, *LPREMFORMATETC;
// Options flag
typedef enum
{
BINDINFO_OPTIONS_WININETFLAG = 0x00010000
,BINDINFO_OPTIONS_ENABLE_UTF8 = 0x00020000
,BINDINFO_OPTIONS_DISABLE_UTF8 = 0x00040000
,BINDINFO_OPTIONS_USE_IE_ENCODING = 0x00080000
,BINDINFO_OPTIONS_BINDTOOBJECT = 0x00100000
// Note:
// the lowest byte 0xx0000???? is used extended binding
} BINDINFO_OPTIONS;
// Data notification flags
typedef enum
{
BSCF_FIRSTDATANOTIFICATION = 0x00000001
,BSCF_INTERMEDIATEDATANOTIFICATION = 0x00000002
,BSCF_LASTDATANOTIFICATION = 0x00000004
,BSCF_DATAFULLYAVAILABLE = 0x00000008
,BSCF_AVAILABLEDATASIZEUNKNOWN = 0x00000010
} BSCF;
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;
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] 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")
//+---------------------------------------------------------------------------
//
// Copyright (C) Microsoft Corporation, 1995-1998.
//
// Contents: IAuthenticate interface definition
//
//----------------------------------------------------------------------------
cpp_quote("#ifndef _LPAUTHENTICATION_DEFINED")
cpp_quote("#define _LPAUTHENTICATION_DEFINED")
[
object,
uuid(79eac9d0-baf9-11ce-8c82-00aa004ba90b),
pointer_default(unique)
]
interface IAuthenticate : IUnknown
{
typedef [unique] IAuthenticate *LPAUTHENTICATION;
HRESULT Authenticate(
[out] HWND* phwnd,
[out] LPWSTR *pszUsername,
[out] LPWSTR *pszPassword
);
}
cpp_quote("#endif")
//+---------------------------------------------------------------------------
//
// Copyright (C) Microsoft Corporation, 1995-1998.
//
// Contents: IHttpNegotiate interface definition
//
//----------------------------------------------------------------------------
cpp_quote("#ifndef _LPHTTPNEGOTIATE_DEFINED")
cpp_quote("#define _LPHTTPNEGOTIATE_DEFINED")
[
object,
uuid(79eac9d2-baf9-11ce-8c82-00aa004ba90b),
pointer_default(unique)
]
interface IHttpNegotiate : IUnknown
{
typedef [unique] IHttpNegotiate *LPHTTPNEGOTIATE;
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")
//+---------------------------------------------------------------------------
//
// Copyright (C) Microsoft Corporation, 1995-1998.
//
// Contents: IHttpNegotiate2 interface definition
//
//----------------------------------------------------------------------------
cpp_quote("#ifndef _LPHTTPNEGOTIATE2_DEFINED")
cpp_quote("#define _LPHTTPNEGOTIATE2_DEFINED")
[
object,
uuid(4F9F9FCB-E0F4-48eb-B7AB-FA2EA9365CB4),
pointer_default(unique)
]
interface IHttpNegotiate2 : IHttpNegotiate
{
typedef [unique] IHttpNegotiate2 *LPHTTPNEGOTIATE2;
HRESULT GetRootSecurityId
(
[out, size_is(*pcbSecurityId)]
BYTE* pbSecurityId,
[in, out]
DWORD* pcbSecurityId,
[in] DWORD_PTR dwReserved
);
}
cpp_quote("#endif")
//+---------------------------------------------------------------------------
//
// Copyright (C) Microsoft Corporation, 1995-1998.
//
// Contents: IWindowForBindingUI interface definition
//
//----------------------------------------------------------------------------
cpp_quote("#ifndef _LPWINDOWFORBINDINGUI_DEFINED")
cpp_quote("#define _LPWINDOWFORBINDINGUI_DEFINED")
[
local,
object,
uuid(79eac9d5-bafa-11ce-8c82-00aa004ba90b),
pointer_default(unique)
]
interface IWindowForBindingUI : IUnknown
{
typedef [unique] IWindowForBindingUI *LPWINDOWFORBINDINGUI;
HRESULT GetWindow(
[in] REFGUID rguidReason,
[out] HWND* phwnd);
}
cpp_quote("#endif")
//+---------------------------------------------------------------------------
//
// Copyright (C) Microsoft Corporation, 1995-1998.
//
// Contents: ICodeDownloadClient interface definition
//
//----------------------------------------------------------------------------
cpp_quote("#ifndef _LPCODEINSTALL_DEFINED")
cpp_quote("#define _LPCODEINSTALL_DEFINED")
[
local,
object,
uuid(79eac9d1-baf9-11ce-8c82-00aa004ba90b),
pointer_default(unique)
]
interface ICodeInstall : IWindowForBindingUI
{
typedef [unique] ICodeInstall *LPCODEINSTALL;
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_STATUS;
HRESULT OnCodeInstallProblem(
[in] ULONG ulStatusCode, // contingency status
[in, unique] LPCWSTR szDestination, // file that needs to be updated
[in, unique] LPCWSTR szSource, // new version from 'net (a temp file)
[in] DWORD dwReserved
);
}
cpp_quote("#endif")
//+---------------------------------------------------------------------------
//
// Copyright (C) Microsoft Corporation, 1995-1998.
//
// Contents: IWinInetInfo interface definition
//
//----------------------------------------------------------------------------
cpp_quote("#ifndef _LPWININETINFO_DEFINED")
cpp_quote("#define _LPWININETINFO_DEFINED")
[
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("#define WININETINFO_OPTION_LOCK_HANDLE 65534")
//+---------------------------------------------------------------------------
//
// Copyright (C) Microsoft Corporation, 1995-1998.
//
// Contents: IHttpSecurity interface definition
//
//----------------------------------------------------------------------------
cpp_quote("#ifndef _LPHTTPSECURITY_DEFINED")
cpp_quote("#define _LPHTTPSECURITY_DEFINED")
[
local,
object,
uuid(79eac9d7-bafa-11ce-8c82-00aa004ba90b),
pointer_default(unique)
]
interface IHttpSecurity : IWindowForBindingUI
{
typedef [unique] IHttpSecurity *LPHTTPSECURITY;
HRESULT OnSecurityProblem(
[in] DWORD dwProblem);
}
cpp_quote("#endif")
//+---------------------------------------------------------------------------
//
// Copyright (C) Microsoft Corporation, 1995-1998.
//
// Contents: IWinInetHttpInfo interface definition
//
//----------------------------------------------------------------------------
cpp_quote("#ifndef _LPWININETHTTPINFO_DEFINED")
cpp_quote("#define _LPWININETHTTPINFO_DEFINED")
[
object,
uuid(79eac9d8-bafa-11ce-8c82-00aa004ba90b),
pointer_default(unique)
]
interface IWinInetHttpInfo : IWinInetInfo
{
typedef [unique] IWinInetHttpInfo *LPWININETHTTPINFO;
[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("#define SID_IBindHost IID_IBindHost")
cpp_quote("#define SID_SBindHost IID_IBindHost")
//+---------------------------------------------------------------------------
//
// Copyright (C) Microsoft Corporation, 1995-1998.
//
// Contents: IBindHost definition
//
//---------------------------------------------------------------------------
cpp_quote("#ifndef _LPBINDHOST_DEFINED")
cpp_quote("#define _LPBINDHOST_DEFINED")
cpp_quote("EXTERN_C const GUID SID_BindHost;")
[
object,
uuid(fc4801a1-2ba9-11cf-a229-00aa003d7352),
pointer_default(unique)
]
interface IBindHost : IUnknown
{
typedef [unique] IBindHost *LPBINDHOST;
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")
// urlhlink stuff
#pragma midl_echo(" ")
cpp_quote("// These are for backwards compatibility with previous URLMON versions")
#pragma midl_echo("// Flags for the UrlDownloadToCacheFile ")
#pragma midl_echo("#define URLOSTRM_USECACHEDCOPY_ONLY 0x1 // Only get from cache ")
#pragma midl_echo("#define URLOSTRM_USECACHEDCOPY 0x2 // Get from cache if available else download ")
#pragma midl_echo("#define URLOSTRM_GETNEWESTVERSION 0x3 // Get new version only. But put it in cache too ")
#pragma midl_echo(" ")
#pragma midl_echo(" ")
#pragma midl_echo("struct IBindStatusCallback; ")
#pragma midl_echo("STDAPI HlinkSimpleNavigateToString( ")
#pragma midl_echo(" /* [in] */ LPCWSTR szTarget, // required - target document - null if local jump w/in doc ")
#pragma midl_echo(" /* [in] */ LPCWSTR szLocation, // optional, for navigation into middle of a doc ")
#pragma midl_echo(" /* [in] */ LPCWSTR szTargetFrameName,// optional, for targeting frame-sets ")
#pragma midl_echo(" /* [in] */ IUnknown *pUnk, // required - we'll search this for other necessary interfaces ")
#pragma midl_echo(" /* [in] */ IBindCtx *pbc, // optional. caller may register an IBSC in this ")
#pragma midl_echo(" /* [in] */ IBindStatusCallback *, ")
#pragma midl_echo(" /* [in] */ DWORD grfHLNF, // flags ")
#pragma midl_echo(" /* [in] */ DWORD dwReserved // for future use, must be NULL ")
#pragma midl_echo("); ")
#pragma midl_echo(" ")
#pragma midl_echo("STDAPI HlinkSimpleNavigateToMoniker( ")
#pragma midl_echo(" /* [in] */ IMoniker *pmkTarget, // required - target document - (may be null ")
#pragma midl_echo(" /* [in] */ LPCWSTR szLocation, // optional, for navigation into middle of a doc ")
#pragma midl_echo(" /* [in] */ LPCWSTR szTargetFrameName,// optional, for targeting frame-sets ")
#pragma midl_echo(" /* [in] */ IUnknown *pUnk, // required - we'll search this for other necessary interfaces ")
#pragma midl_echo(" /* [in] */ IBindCtx *pbc, // optional. caller may register an IBSC in this ")
#pragma midl_echo(" /* [in] */ IBindStatusCallback *, ")
#pragma midl_echo(" /* [in] */ DWORD grfHLNF, // flags ")
#pragma midl_echo(" /* [in] */ DWORD dwReserved // for future use, must be NULL ")
#pragma midl_echo("); ")
//#pragma midl_echo("typedef HRESULT (STDAPICALLTYPE *LPFNUOSCALLBACK)(LPBINDSTATUSCALLBACK); ")
#pragma midl_echo(" ")
#pragma midl_echo("STDAPI URLOpenStreamA(LPUNKNOWN,LPCSTR,DWORD,LPBINDSTATUSCALLBACK); ")
#pragma midl_echo("STDAPI URLOpenStreamW(LPUNKNOWN,LPCWSTR,DWORD,LPBINDSTATUSCALLBACK); ")
#pragma midl_echo("STDAPI URLOpenPullStreamA(LPUNKNOWN,LPCSTR,DWORD,LPBINDSTATUSCALLBACK); ")
#pragma midl_echo("STDAPI URLOpenPullStreamW(LPUNKNOWN,LPCWSTR,DWORD,LPBINDSTATUSCALLBACK); ")
#pragma midl_echo("STDAPI URLDownloadToFileA(LPUNKNOWN,LPCSTR,LPCSTR,DWORD,LPBINDSTATUSCALLBACK); ")
#pragma midl_echo("STDAPI URLDownloadToFileW(LPUNKNOWN,LPCWSTR,LPCWSTR,DWORD,LPBINDSTATUSCALLBACK); ")
#pragma midl_echo("STDAPI URLDownloadToCacheFileA(LPUNKNOWN,LPCSTR,LPTSTR,DWORD,DWORD,LPBINDSTATUSCALLBACK); ")
#pragma midl_echo("STDAPI URLDownloadToCacheFileW(LPUNKNOWN,LPCWSTR,LPWSTR,DWORD,DWORD,LPBINDSTATUSCALLBACK); ")
#pragma midl_echo("STDAPI URLOpenBlockingStreamA(LPUNKNOWN,LPCSTR,LPSTREAM*,DWORD,LPBINDSTATUSCALLBACK); ")
#pragma midl_echo("STDAPI URLOpenBlockingStreamW(LPUNKNOWN,LPCWSTR,LPSTREAM*,DWORD,LPBINDSTATUSCALLBACK); ")
#pragma midl_echo(" ")
#pragma midl_echo("#ifdef UNICODE ")
#pragma midl_echo("#define URLOpenStream URLOpenStreamW ")
#pragma midl_echo("#define URLOpenPullStream URLOpenPullStreamW ")
#pragma midl_echo("#define URLDownloadToFile URLDownloadToFileW ")
#pragma midl_echo("#define URLDownloadToCacheFile URLDownloadToCacheFileW ")
#pragma midl_echo("#define URLOpenBlockingStream URLOpenBlockingStreamW ")
#pragma midl_echo("#else ")
#pragma midl_echo("#define URLOpenStream URLOpenStreamA ")
#pragma midl_echo("#define URLOpenPullStream URLOpenPullStreamA ")
#pragma midl_echo("#define URLDownloadToFile URLDownloadToFileA ")
#pragma midl_echo("#define URLDownloadToCacheFile URLDownloadToCacheFileA ")
#pragma midl_echo("#define URLOpenBlockingStream URLOpenBlockingStreamA ")
#pragma midl_echo("#endif // !UNICODE ")
#pragma midl_echo(" ")
#pragma midl_echo(" ")
#pragma midl_echo("STDAPI HlinkGoBack(IUnknown *pUnk); ")
#pragma midl_echo("STDAPI HlinkGoForward(IUnknown *pUnk); ")
#pragma midl_echo("STDAPI HlinkNavigateString(IUnknown *pUnk, LPCWSTR szTarget); ")
#pragma midl_echo("STDAPI HlinkNavigateMoniker(IUnknown *pUnk, IMoniker *pmkTarget); ")
#pragma midl_echo(" ")
// urlhlink end
//
// Some components to not want the new async plugable protocol interfaces (e.g OLE)
//
#pragma midl_echo("#ifndef _URLMON_NO_ASYNC_PLUGABLE_PROTOCOLS_ ")
interface IInternet;
interface IInternetBindInfo;
interface IInternetProtocolRoot;
interface IInternetProtocol;
interface IInternetProtocolSink;
interface IInternetProtocolInfo;
interface IInternetSession;
interface IInternetProtocolSinkStackable;
//+---------------------------------------------------------------------------
//
// Copyright (C) Microsoft Corporation, 1995-1998.
//
// Contents: IInternet interface definition
//
//----------------------------------------------------------------------------
cpp_quote("#ifndef _LPIINTERNET")
cpp_quote("#define _LPIINTERNET")
[
local,
object,
uuid(79eac9e0-baf9-11ce-8c82-00aa004ba90b),
pointer_default(unique)
]
interface IInternet : IUnknown
{
typedef [unique] IInternet *LPIINTERNET;
}
cpp_quote("#endif")
//+---------------------------------------------------------------------------
//
// Copyright (C) Microsoft Corporation, 1995-1998.
//
// Contents: IInternetBindInfo interface definition
//
//----------------------------------------------------------------------------
cpp_quote("#ifndef _LPIINTERNETBINDINFO")
cpp_quote("#define _LPIINTERNETBINDINFO")
[
local,
object,
uuid(79eac9e1-baf9-11ce-8c82-00aa004ba90b),
pointer_default(unique)
]
interface IInternetBindInfo : IUnknown
{
typedef [unique] IInternetBindInfo *LPIINTERNETBINDINFO;
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;
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")
//+---------------------------------------------------------------------------
//
// Copyright (C) Microsoft Corporation, 1995-1998.
//
// Contents: IInternetProtocolRoot interface definition
//
//----------------------------------------------------------------------------
cpp_quote("#ifndef _LPIINTERNETPROTOCOLROOT_DEFINED")
cpp_quote("#define _LPIINTERNETPROTOCOLROOT_DEFINED")
[
local,
object,
uuid(79eac9e3-baf9-11ce-8c82-00aa004ba90b),
pointer_default(unique)
]
interface IInternetProtocolRoot : IUnknown
{
typedef [unique] IInternetProtocolRoot *LPIINTERNETPROTOCOLROOT;
typedef enum _tagPI_FLAGS
{
PI_PARSE_URL = 0x00000001
,PI_FILTER_MODE = 0x00000002
,PI_FORCE_ASYNC = 0x00000004
,PI_USE_WORKERTHREAD = 0x00000008
,PI_MIMEVERIFICATION = 0x00000010
,PI_CLSIDLOOKUP = 0x00000020
,PI_DATAPROGRESS = 0x00000040
,PI_SYNCHRONOUS = 0x00000080
,PI_APARTMENTTHREADED = 0x00000100
,PI_CLASSINSTALL = 0x00000200
// new flags to deal with mime handler
// and to load app directly
,PI_PASSONBINDCTX = 0x00002000
,PI_NOMIMEHANDLER = 0x00008000
,PI_LOADAPPDIRECT = 0x00004000
// flags used in the protocol data on switch
,PD_FORCE_SWITCH = 0x00010000
,PI_PREFERDEFAULTHANDLER = 0x00020000
} PI_FLAGS;
typedef struct _tagPROTOCOLDATA
{
DWORD grfFlags;
DWORD dwState;
LPVOID pData;
ULONG cbData;
} PROTOCOLDATA;
typedef struct _tagStartParam
{
IID iid;
IBindCtx *pIBindCtx;
IUnknown *pItf;
} StartParam;
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")
//+---------------------------------------------------------------------------
//
// Copyright (C) Microsoft Corporation, 1995-1998.
//
// Contents: IInternetProtocol interface definition
//
//----------------------------------------------------------------------------
cpp_quote("#ifndef _LPIINTERNETPROTOCOL_DEFINED")
cpp_quote("#define _LPIINTERNETPROTOCOL_DEFINED")
[
local,
object,
uuid(79eac9e4-baf9-11ce-8c82-00aa004ba90b),
pointer_default(unique)
]
interface IInternetProtocol : IInternetProtocolRoot
{
typedef [unique] IInternetProtocol *LPIINTERNETPROTOCOL;
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")
//+---------------------------------------------------------------------------
//
// Copyright (C) Microsoft Corporation, 1995-1998.
//
// Contents: IInternetProtocolSink interface definition
//
//----------------------------------------------------------------------------
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;
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")
//+---------------------------------------------------------------------------
//
// Copyright (C) Microsoft Corporation, 1995-1998.
//
// Contents: IInternetProtocolSinkStackable interface definition
//
//----------------------------------------------------------------------------
cpp_quote("#ifndef _LPIINTERNETPROTOCOLSINKSTACKABLE_DEFINED")
cpp_quote("#define _LPIINTERNETPROTOCOLSINKSTACKABLE_DEFINED")
[
local,
object,
uuid(79eac9f0-baf9-11ce-8c82-00aa004ba90b),
pointer_default(unique)
]
interface IInternetProtocolSinkStackable : IUnknown
{
typedef [unique] IInternetProtocolSinkStackable *LPIINTERNETPROTOCOLSINKStackable;
HRESULT SwitchSink(
[in] IInternetProtocolSink *pOIProtSink
);
HRESULT CommitSwitch();
HRESULT RollbackSwitch();
}
cpp_quote("#endif")
//+---------------------------------------------------------------------------
//
// Copyright (C) Microsoft Corporation, 1995 - 1997.
//
// Contents: IInternetSession interface definition
//
//----------------------------------------------------------------------------
cpp_quote("#ifndef _LPIINTERNETSESSION_DEFINED")
cpp_quote("#define _LPIINTERNETSESSION_DEFINED")
[
local,
object,
uuid(79eac9e7-baf9-11ce-8c82-00aa004ba90b),
pointer_default(unique)
]
interface IInternetSession : IUnknown
{
typedef [unique] IInternetSession *LPIINTERNETSESSION;
typedef enum _tagOIBDG_FLAGS
{
// default is free threaded
OIBDG_APARTMENTTHREADED = 0x00000100
,OIBDG_DATAONLY = 0x00001000
} OIBDG_FLAGS;
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")
//+---------------------------------------------------------------------------
//
// Copyright (C) Microsoft Corporation, 1995-1998.
//
// Contents: IInternetThreadSwitch interface definition
//
//----------------------------------------------------------------------------
cpp_quote("#ifndef _LPIINTERNETTHREADSWITCH_DEFINED")
cpp_quote("#define _LPIINTERNETTHREADSWITCH_DEFINED")
[
local,
object,
uuid(79eac9e8-baf9-11ce-8c82-00aa004ba90b),
pointer_default(unique)
]
interface IInternetThreadSwitch : IUnknown
{
typedef [unique] IInternetThreadSwitch *LPIINTERNETTHREADSWITCH;
HRESULT Prepare();
HRESULT Continue();
}
cpp_quote("#endif")
//+---------------------------------------------------------------------------
//
// Copyright (C) Microsoft Corporation, 1995-1998.
//
// Contents: IInternetPriority interface definition
//
//----------------------------------------------------------------------------
cpp_quote("#ifndef _LPIINTERNETPRIORITY_DEFINED")
cpp_quote("#define _LPIINTERNETPRIORITY_DEFINED")
[
local,
object,
uuid(79eac9eb-baf9-11ce-8c82-00aa004ba90b),
pointer_default(unique)
]
interface IInternetPriority : IUnknown
{
typedef [unique] IInternetPriority *LPIINTERNETPRIORITY;
HRESULT SetPriority(
[in] LONG nPriority
);
HRESULT GetPriority(
[out] LONG * pnPriority
);
}
cpp_quote("#endif")
//+---------------------------------------------------------------------------
//
// Copyright (C) Microsoft Corporation, 1995-1998.
//
// Contents: IInternetProtocolInfo interface definition
//
//----------------------------------------------------------------------------
cpp_quote("#ifndef _LPIINTERNETPROTOCOLINFO_DEFINED")
cpp_quote("#define _LPIINTERNETPROTOCOLINFO_DEFINED")
[
local,
object,
uuid(79eac9ec-baf9-11ce-8c82-00aa004ba90b),
pointer_default(unique)
]
interface IInternetProtocolInfo : IUnknown
{
typedef [unique] IInternetProtocolInfo *LPIINTERNETPROTOCOLINFO;
typedef enum _tagPARSEACTION
{
PARSE_CANONICALIZE = 1 // compute canonical URL
,PARSE_FRIENDLY // get user friendly name from URL
,PARSE_SECURITY_URL // get security URL.
,PARSE_ROOTDOCUMENT // returns URL of root document for site
,PARSE_DOCUMENT // Strips of #anchor
,PARSE_ANCHOR // Strips of everything before #anchor
,PARSE_ENCODE // encode the url
,PARSE_DECODE // decode the url
,PARSE_PATH_FROM_URL // get the path if apply
,PARSE_URL_FROM_PATH // create a url from the path
,PARSE_MIME // return mime of this url
,PARSE_SERVER // return server
,PARSE_SCHEMA
,PARSE_SITE
,PARSE_DOMAIN
,PARSE_LOCATION
,PARSE_SECURITY_DOMAIN // returns the canonical security form of the URL.
,PARSE_ESCAPE // encode the url
,PARSE_UNESCAPE // decode the url
} PARSEACTION;
// Actions for CoInternetGetSecurityURL function.
typedef enum _tagPSUACTION
{
PSU_DEFAULT = 1 // gets security URL and returns its domain.
,PSU_SECURITY_URL_ONLY // gets just the security URL
} PSUACTION;
//
// Query options - needs more work on possible options
//
typedef enum _tagQUERYOPTION
{
QUERY_EXPIRATION_DATE = 1 // the expiration date in form of systemtime
,QUERY_TIME_OF_LAST_CHANGE // time of last change in form of systemtime
,QUERY_CONTENT_ENCODING // the content concoding schema
,QUERY_CONTENT_TYPE // the content type header (mime and charset)
,QUERY_REFRESH // the refresh
,QUERY_RECOMBINE // combine the page URL with the nearest base if TRUE
,QUERY_CAN_NAVIGATE // does the protocol navigate (unlike mailto)
,QUERY_USES_NETWORK // will URL hit network
,QUERY_IS_CACHED // is data cached locally?
,QUERY_IS_INSTALLEDENTRY // Is the entry installed locally (on cdrom)
,QUERY_IS_CACHED_OR_MAPPED // is the entry in cache or is it on a mapped drive
// It may be mapped but may not actually be present
,QUERY_USES_CACHE // does the protocol use the internet cache
,QUERY_IS_SECURE // is the protocol encrypted
,QUERY_IS_SAFE // the protocol serves only trusted (e.g. local resource) content
} QUERYOPTION;
//
// returns:
// S_OK on success
// S_FALSE on success but buffer is too small
// INET_E_DEFAULT_ACTION if action is not know should be handled be default implementation
//
HRESULT ParseUrl(
[in] LPCWSTR pwzUrl,
[in] PARSEACTION ParseAction,
[in] DWORD dwParseFlags,
[out] LPWSTR pwzResult,
[in] DWORD cchResult,
[out] DWORD *pcchResult,
[in] DWORD dwReserved
);
//
// returns:
// S_OK on success
// S_FALSE on success but buffer is too small
// INET_E_DEFAULT_ACTION if action is not know should be handled be default implementation
//
HRESULT CombineUrl(
[in] LPCWSTR pwzBaseUrl,
[in] LPCWSTR pwzRelativeUrl,
[in] DWORD dwCombineFlags,
[out] LPWSTR pwzResult,
[in] DWORD cchResult,
[out] DWORD *pcchResult,
[in] DWORD dwReserved
);
//
// returns:
// S_OK if equal
// S_FALSE otherwise
//
HRESULT CompareUrl(
[in] LPCWSTR pwzUrl1,
[in] LPCWSTR pwzUrl2,
[in] DWORD dwCompareFlags
);
//
// returns:
// S_OK on success
// S_FALSE on success but buffer is too small
// INET_E_QUERYOPTION_UNKNOWN
//
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("#endif")
//
// compatablility defines
//
cpp_quote("#define IOInet IInternet ")
cpp_quote("#define IOInetBindInfo IInternetBindInfo ")
cpp_quote("#define IOInetProtocolRoot IInternetProtocolRoot")
cpp_quote("#define IOInetProtocol IInternetProtocol ")
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("#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("#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("#define IID_IOInet IID_IInternet ")
cpp_quote("#define IID_IOInetBindInfo IID_IInternetBindInfo ")
cpp_quote("#define IID_IOInetProtocolRoot IID_IInternetProtocolRoot")
cpp_quote("#define IID_IOInetProtocol IID_IInternetProtocol ")
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")
//
// OInet helper functions for url parsing
//
#pragma midl_echo("STDAPI CoInternetParseUrl( ")
#pragma midl_echo(" LPCWSTR pwzUrl, ")
#pragma midl_echo(" PARSEACTION ParseAction, ")
#pragma midl_echo(" DWORD dwFlags, ")
#pragma midl_echo(" LPWSTR pszResult, ")
#pragma midl_echo(" DWORD cchResult, ")
#pragma midl_echo(" DWORD *pcchResult, ")
#pragma midl_echo(" DWORD dwReserved ")
#pragma midl_echo(" ); ")
#pragma midl_echo("STDAPI CoInternetCombineUrl( ")
#pragma midl_echo(" LPCWSTR pwzBaseUrl, ")
#pragma midl_echo(" LPCWSTR pwzRelativeUrl, ")
#pragma midl_echo(" DWORD dwCombineFlags, ")
#pragma midl_echo(" LPWSTR pszResult, ")
#pragma midl_echo(" DWORD cchResult, ")
#pragma midl_echo(" DWORD *pcchResult, ")
#pragma midl_echo(" DWORD dwReserved ")
#pragma midl_echo(" ); ")
#pragma midl_echo("STDAPI CoInternetCompareUrl( ")
#pragma midl_echo(" LPCWSTR pwzUrl1, ")
#pragma midl_echo(" LPCWSTR pwzUrl2, ")
#pragma midl_echo(" DWORD dwFlags ")
#pragma midl_echo(" ); ")
#pragma midl_echo("STDAPI CoInternetGetProtocolFlags( ")
#pragma midl_echo(" LPCWSTR pwzUrl, ")
#pragma midl_echo(" DWORD *pdwFlags, ")
#pragma midl_echo(" DWORD dwReserved ")
#pragma midl_echo(" ); ")
#pragma midl_echo("STDAPI CoInternetQueryInfo( ")
#pragma midl_echo(" LPCWSTR pwzUrl, ")
#pragma midl_echo(" QUERYOPTION QueryOptions, ")
#pragma midl_echo(" DWORD dwQueryFlags, ")
#pragma midl_echo(" LPVOID pvBuffer, ")
#pragma midl_echo(" DWORD cbBuffer, ")
#pragma midl_echo(" DWORD *pcbBuffer, ")
#pragma midl_echo(" DWORD dwReserved ")
#pragma midl_echo(" ); ")
#pragma midl_echo("STDAPI CoInternetGetSession( ")
#pragma midl_echo(" DWORD dwSessionMode, ")
#pragma midl_echo(" IInternetSession **ppIInternetSession,")
#pragma midl_echo(" DWORD dwReserved ")
#pragma midl_echo(" ); ")
#pragma midl_echo("STDAPI CoInternetGetSecurityUrl( ")
#pragma midl_echo(" LPCWSTR pwzUrl, ")
#pragma midl_echo(" LPWSTR *ppwzSecUrl, ")
#pragma midl_echo(" PSUACTION psuAction, ")
#pragma midl_echo(" DWORD dwReserved ")
#pragma midl_echo(" ); ")
#pragma midl_echo("STDAPI AsyncInstallDistributionUnit( ")
#pragma midl_echo(" LPCWSTR szDistUnit, ")
#pragma midl_echo(" LPCWSTR szTYPE, ")
#pragma midl_echo(" LPCWSTR szExt, ")
#pragma midl_echo(" DWORD dwFileVersionMS, ")
#pragma midl_echo(" DWORD dwFileVersionLS, ")
#pragma midl_echo(" LPCWSTR szURL, ")
#pragma midl_echo(" IBindCtx *pbc, ")
#pragma midl_echo(" LPVOID pvReserved, ")
#pragma midl_echo(" DWORD flags ")
#pragma midl_echo(" ); ")
//
// STGMEDIUMs and BINDINFO helper utils
//
#pragma midl_echo(" ")
#pragma midl_echo("STDAPI CopyStgMedium(const STGMEDIUM * pcstgmedSrc, ")
#pragma midl_echo(" STGMEDIUM * pstgmedDest); ")
#pragma midl_echo("STDAPI CopyBindInfo( const BINDINFO * pcbiSrc, ")
#pragma midl_echo(" BINDINFO * pbiDest ); ")
#pragma midl_echo("STDAPI_(void) ReleaseBindInfo( BINDINFO * pbindinfo ); ")
#pragma midl_echo(" ")
cpp_quote("#define INET_E_USE_DEFAULT_PROTOCOLHANDLER _HRESULT_TYPEDEF_(0x800C0011L) ")
cpp_quote("#define INET_E_USE_DEFAULT_SETTING _HRESULT_TYPEDEF_(0x800C0012L) ")
cpp_quote("#define INET_E_DEFAULT_ACTION INET_E_USE_DEFAULT_PROTOCOLHANDLER ")
cpp_quote("#define INET_E_QUERYOPTION_UNKNOWN _HRESULT_TYPEDEF_(0x800C0013L) ")
cpp_quote("#define INET_E_REDIRECTING _HRESULT_TYPEDEF_(0x800C0014L) ")
cpp_quote("#define OInetParseUrl CoInternetParseUrl ")
cpp_quote("#define OInetCombineUrl CoInternetCombineUrl ")
cpp_quote("#define OInetCompareUrl CoInternetCompareUrl ")
cpp_quote("#define OInetQueryInfo CoInternetQueryInfo ")
cpp_quote("#define OInetGetSession CoInternetGetSession ")
#pragma midl_echo("#endif // !_URLMON_NO_ASYNC_PLUGABLE_PROTOCOLS_ ")
cpp_quote("//")
cpp_quote("// Static Protocol flags")
cpp_quote("//")
cpp_quote("#define PROTOCOLFLAG_NO_PICS_CHECK 0x00000001")
cpp_quote("")
cpp_quote("// Creates the security manager object. The first argument is the Service provider")
cpp_quote("// to allow for delegation")
cpp_quote("STDAPI CoInternetCreateSecurityManager(IServiceProvider *pSP, IInternetSecurityManager **ppSM, DWORD dwReserved);")
cpp_quote("")
cpp_quote("STDAPI CoInternetCreateZoneManager(IServiceProvider *pSP, IInternetZoneManager **ppZM, DWORD dwReserved);")
cpp_quote("")
cpp_quote("")
cpp_quote("// Security manager CLSID's")
cpp_quote("EXTERN_C const IID CLSID_InternetSecurityManager; ")
cpp_quote("EXTERN_C const IID CLSID_InternetZoneManager; ")
cpp_quote("// This service is used for delegation support on the Security Manager interface")
cpp_quote("#define SID_SInternetSecurityManager IID_IInternetSecurityManager")
cpp_quote("")
cpp_quote("#define SID_SInternetHostSecurityManager IID_IInternetHostSecurityManager")
cpp_quote("")
cpp_quote("#ifndef _LPINTERNETSECURITYMGRSITE_DEFINED")
cpp_quote("#define _LPINTERNETSECURITYMGRSITE_DEFINED")
[
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("#ifndef _LPINTERNETSECURITYMANANGER_DEFINED")
cpp_quote("#define _LPINTERNETSECURITYMANANGER_DEFINED")
[
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("#define MUTZ_NOSAVEDFILECHECK 0x00000001 // don't check file: for saved file comment")
cpp_quote("#define MUTZ_ENFORCERESTRICTED 0x00000100 // enforce restricted zone independent of URL")
HRESULT MapUrlToZone
(
[in] LPCWSTR pwszUrl,
[out] DWORD* pdwZone,
[in] DWORD dwFlags
);
cpp_quote("// MapUrlToZone returns the zone index given a URL")
cpp_quote("#define MAX_SIZE_SECURITY_ID 512 // bytes")
HRESULT GetSecurityId
(
[in] LPCWSTR pwszUrl,
[out, size_is(*pcbSecurityId)]
BYTE* pbSecurityId,
[in, out]
DWORD* pcbSecurityId,
[in] DWORD_PTR dwReserved
);
// Flags passed into ProcessUrlAction.
typedef enum
{
PUAF_DEFAULT = 0x00000000,
PUAF_NOUI = 0x00000001,
PUAF_ISFILE = 0x00000002, // Assume URL if File, url does not need file://
PUAF_WARN_IF_DENIED = 0x00000004,
PUAF_FORCEUI_FOREGROUND = 0x00000008,
PUAF_CHECK_TIFS = 0x00000010,
PUAF_DONTCHECKBOXINDIALOG = 0x00000020,
PUAF_TRUSTED = 0x00000040,
PUAF_ACCEPT_WILDCARD_SCHEME = 0x00000080,
PUAF_ENFORCERESTRICTED = 0x00000100,
} PUAF ;
HRESULT ProcessUrlAction
(
[in] LPCWSTR pwszUrl,
[in] DWORD dwAction,
[out, size_is(cbPolicy)]
BYTE* pPolicy, // output buffer pointer
[in] DWORD cbPolicy, // output buffer size
[in] BYTE* pContext, // context (used by the delegation routines)
[in] DWORD cbContext, // size of the Context
[in] DWORD dwFlags, // See enum PUAF for details.
[in] DWORD dwReserved
);
cpp_quote("// This is the wrapper function that most clients will use.")
cpp_quote("// It figures out the current Policy for the passed in Action,")
cpp_quote("// and puts up UI if the current Policy indicates that the user")
cpp_quote("// should be queried. It returns back the Policy which the caller")
cpp_quote("// will use to determine if the action should be allowed")
HRESULT QueryCustomPolicy
(
[in] LPCWSTR pwszUrl,
[in] REFGUID guidKey,
[out, size_is(,*pcbPolicy)] // allocation via IMemAlloc; caller frees
BYTE** ppPolicy, // pointer to output buffer pointer
[out] DWORD* pcbPolicy, // pointer to output buffer size
[in] BYTE* pContext, // context (used by the delegation routines)
[in] DWORD cbContext, // size of the Context
[in] DWORD dwReserved
);
cpp_quote("// This is the wrapper function to conveniently read a custom policy.")
// create/enumerate mappings
typedef enum
{
SZM_CREATE = 0x00000000, // create new mapping, error's if mapping already exists.
SZM_DELETE = 0x00000001, // delete the mapping
}
SZM_FLAGS;
HRESULT SetZoneMapping
(
[in] DWORD dwZone, // absolute zone index
[in] LPCWSTR lpszPattern, // URL pattern with limited wildcarding
[in] DWORD dwFlags // add, change, delete
);
cpp_quote("// SetZoneMapping")
cpp_quote("// lpszPattern: string denoting a URL pattern")
cpp_quote("// Examples of valid patterns: ")
cpp_quote("// *://*.msn.com ")
cpp_quote("// http://*.sony.co.jp ")
cpp_quote("// *://et.msn.com ")
cpp_quote("// ftp://157.54.23.41/ ")
cpp_quote("// https://localsvr ")
cpp_quote("// file:\\localsvr\share ")
cpp_quote("// *://157.54.100-200.* ")
cpp_quote("// Examples of invalid patterns: ")
cpp_quote("// http://*.lcs.mit.edu ")
cpp_quote("// ftp://* ")
cpp_quote("// dwFlags: SZM_FLAGS values ")
HRESULT GetZoneMappings
(
[in] DWORD dwZone, // absolute zone index
[out] IEnumString **ppenumString, // output buffer size
[in] DWORD dwFlags // reserved, pass 0
);
// Returns an enumerator of strings for the mappings of a zone.
// dwFlags is for future use; pass in 0.
};
cpp_quote("#endif")
cpp_quote("#ifndef _LPINTERNETHOSTSECURITYMANANGER_DEFINED")
cpp_quote("#define _LPINTERNETHOSTSECURITYMANANGER_DEFINED")
cpp_quote("//This is the interface MSHTML exposes to its clients")
cpp_quote("//The clients need not pass in a URL to these functions")
cpp_quote("//since MSHTML maintains the notion of the current URL")
[
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, // output buffer pointer
[in] DWORD cbPolicy, // output buffer size
[in] BYTE* pContext, // context (used by the delegation routines)
[in] DWORD cbContext, // size of the Context
[in] DWORD dwFlags, // See enum PUAF for details.
[in] DWORD dwReserved
);
HRESULT QueryCustomPolicy
(
[in] REFGUID guidKey,
[out, size_is(,*pcbPolicy)] // allocation via IMemAlloc; caller frees
BYTE** ppPolicy, // pointer to output buffer pointer
[out] DWORD* pcbPolicy, // pointer to output buffer size
[in] BYTE* pContext, // context (used by the delegation routines)
[in] DWORD cbContext, // size of the Context
[in] DWORD dwReserved
);
};
cpp_quote("#endif")
cpp_quote("")
cpp_quote("// The zone manager maintains policies for a set of standard actions. ")
cpp_quote("// These actions are identified by integral values (called action indexes)")
cpp_quote("// specified below.")
cpp_quote("")
cpp_quote("// Minimum legal value for an action ")
cpp_quote("#define URLACTION_MIN 0x00001000")
cpp_quote("")
cpp_quote("#define URLACTION_DOWNLOAD_MIN 0x00001000")
cpp_quote("#define URLACTION_DOWNLOAD_SIGNED_ACTIVEX 0x00001001")
cpp_quote("#define URLACTION_DOWNLOAD_UNSIGNED_ACTIVEX 0x00001004")
cpp_quote("#define URLACTION_DOWNLOAD_CURR_MAX 0x00001004")
cpp_quote("#define URLACTION_DOWNLOAD_MAX 0x000011FF")
cpp_quote("")
cpp_quote("#define URLACTION_ACTIVEX_MIN 0x00001200")
cpp_quote("#define URLACTION_ACTIVEX_RUN 0x00001200")
cpp_quote("#define URLPOLICY_ACTIVEX_CHECK_LIST 0x00010000")
cpp_quote("#define URLACTION_ACTIVEX_OVERRIDE_OBJECT_SAFETY 0x00001201 // aggregate next four")
cpp_quote("#define URLACTION_ACTIVEX_OVERRIDE_DATA_SAFETY 0x00001202 //")
cpp_quote("#define URLACTION_ACTIVEX_OVERRIDE_SCRIPT_SAFETY 0x00001203 //")
cpp_quote("#define URLACTION_SCRIPT_OVERRIDE_SAFETY 0x00001401 //")
cpp_quote("#define URLACTION_ACTIVEX_CONFIRM_NOOBJECTSAFETY 0x00001204 //")
cpp_quote("#define URLACTION_ACTIVEX_TREATASUNTRUSTED 0x00001205")
cpp_quote("#define URLACTION_ACTIVEX_NO_WEBOC_SCRIPT 0x00001206")
cpp_quote("#define URLACTION_ACTIVEX_CURR_MAX 0x00001206")
cpp_quote("#define URLACTION_ACTIVEX_MAX 0x000013ff")
cpp_quote("")
cpp_quote("#define URLACTION_SCRIPT_MIN 0x00001400")
cpp_quote("#define URLACTION_SCRIPT_RUN 0x00001400")
cpp_quote("#define URLACTION_SCRIPT_JAVA_USE 0x00001402")
cpp_quote("#define URLACTION_SCRIPT_SAFE_ACTIVEX 0x00001405")
cpp_quote("#define URLACTION_CROSS_DOMAIN_DATA 0x00001406")
cpp_quote("#define URLACTION_SCRIPT_PASTE 0x00001407")
cpp_quote("#define URLACTION_SCRIPT_CURR_MAX 0x00001407")
cpp_quote("#define URLACTION_SCRIPT_MAX 0x000015ff")
cpp_quote("")
cpp_quote("#define URLACTION_HTML_MIN 0x00001600")
cpp_quote("#define URLACTION_HTML_SUBMIT_FORMS 0x00001601 // aggregate next two")
cpp_quote("#define URLACTION_HTML_SUBMIT_FORMS_FROM 0x00001602 //")
cpp_quote("#define URLACTION_HTML_SUBMIT_FORMS_TO 0x00001603 //")
cpp_quote("#define URLACTION_HTML_FONT_DOWNLOAD 0x00001604")
cpp_quote("#define URLACTION_HTML_JAVA_RUN 0x00001605 // derive from Java custom policy")
cpp_quote("#define URLACTION_HTML_USERDATA_SAVE 0x00001606")
cpp_quote("#define URLACTION_HTML_SUBFRAME_NAVIGATE 0x00001607")
cpp_quote("#define URLACTION_HTML_META_REFRESH 0x00001608")
cpp_quote("#define URLACTION_HTML_MIXED_CONTENT 0x00001609")
//cpp_quote("#define URLACTION_HTML_CURR_MAX 0x00001609")
cpp_quote("#define URLACTION_HTML_MAX 0x000017ff")
cpp_quote("")
cpp_quote("#define URLACTION_SHELL_MIN 0x00001800")
cpp_quote("#define URLACTION_SHELL_INSTALL_DTITEMS 0x00001800")
cpp_quote("#define URLACTION_SHELL_MOVE_OR_COPY 0x00001802")
cpp_quote("#define URLACTION_SHELL_FILE_DOWNLOAD 0x00001803")
cpp_quote("#define URLACTION_SHELL_VERB 0x00001804")
cpp_quote("#define URLACTION_SHELL_WEBVIEW_VERB 0x00001805")
cpp_quote("#define URLACTION_SHELL_SHELLEXECUTE 0x00001806")
cpp_quote("#define URLACTION_SHELL_CURR_MAX 0x00001806")
cpp_quote("#define URLACTION_SHELL_MAX 0x000019ff")
cpp_quote("")
cpp_quote("#define URLACTION_NETWORK_MIN 0x00001A00")
cpp_quote("")
cpp_quote("#define URLACTION_CREDENTIALS_USE 0x00001A00")
cpp_quote("#define URLPOLICY_CREDENTIALS_SILENT_LOGON_OK 0x00000000")
cpp_quote("#define URLPOLICY_CREDENTIALS_MUST_PROMPT_USER 0x00010000")
cpp_quote("#define URLPOLICY_CREDENTIALS_CONDITIONAL_PROMPT 0x00020000")
cpp_quote("#define URLPOLICY_CREDENTIALS_ANONYMOUS_ONLY 0x00030000")
cpp_quote("")
cpp_quote("#define URLACTION_AUTHENTICATE_CLIENT 0x00001A01")
cpp_quote("#define URLPOLICY_AUTHENTICATE_CLEARTEXT_OK 0x00000000")
cpp_quote("#define URLPOLICY_AUTHENTICATE_CHALLENGE_RESPONSE 0x00010000")
cpp_quote("#define URLPOLICY_AUTHENTICATE_MUTUAL_ONLY 0x00030000")
cpp_quote("")
cpp_quote("")
cpp_quote("#define URLACTION_COOKIES 0x00001A02")
cpp_quote("#define URLACTION_COOKIES_SESSION 0x00001A03")
cpp_quote("")
cpp_quote("#define URLACTION_CLIENT_CERT_PROMPT 0x00001A04")
cpp_quote("")
cpp_quote("#define URLACTION_COOKIES_THIRD_PARTY 0x00001A05")
cpp_quote("#define URLACTION_COOKIES_SESSION_THIRD_PARTY 0x00001A06")
cpp_quote("")
cpp_quote("#define URLACTION_COOKIES_ENABLED 0x00001A10")
cpp_quote("")
cpp_quote("#define URLACTION_NETWORK_CURR_MAX 0x00001A10")
cpp_quote("#define URLACTION_NETWORK_MAX 0x00001Bff")
cpp_quote("")
cpp_quote("")
cpp_quote("#define URLACTION_JAVA_MIN 0x00001C00")
cpp_quote("#define URLACTION_JAVA_PERMISSIONS 0x00001C00")
cpp_quote("#define URLPOLICY_JAVA_PROHIBIT 0x00000000")
cpp_quote("#define URLPOLICY_JAVA_HIGH 0x00010000")
cpp_quote("#define URLPOLICY_JAVA_MEDIUM 0x00020000")
cpp_quote("#define URLPOLICY_JAVA_LOW 0x00030000")
cpp_quote("#define URLPOLICY_JAVA_CUSTOM 0x00800000")
cpp_quote("#define URLACTION_JAVA_CURR_MAX 0x00001C00")
cpp_quote("#define URLACTION_JAVA_MAX 0x00001Cff")
cpp_quote("")
cpp_quote("")
cpp_quote("// The following Infodelivery actions should have no default policies")
cpp_quote("// in the registry. They assume that no default policy means fall")
cpp_quote("// back to the global restriction. If an admin sets a policy per")
cpp_quote("// zone, then it overrides the global restriction.")
cpp_quote("")
cpp_quote("#define URLACTION_INFODELIVERY_MIN 0x00001D00")
cpp_quote("#define URLACTION_INFODELIVERY_NO_ADDING_CHANNELS 0x00001D00")
cpp_quote("#define URLACTION_INFODELIVERY_NO_EDITING_CHANNELS 0x00001D01")
cpp_quote("#define URLACTION_INFODELIVERY_NO_REMOVING_CHANNELS 0x00001D02")
cpp_quote("#define URLACTION_INFODELIVERY_NO_ADDING_SUBSCRIPTIONS 0x00001D03")
cpp_quote("#define URLACTION_INFODELIVERY_NO_EDITING_SUBSCRIPTIONS 0x00001D04")
cpp_quote("#define URLACTION_INFODELIVERY_NO_REMOVING_SUBSCRIPTIONS 0x00001D05")
cpp_quote("#define URLACTION_INFODELIVERY_NO_CHANNEL_LOGGING 0x00001D06")
cpp_quote("#define URLACTION_INFODELIVERY_CURR_MAX 0x00001D06")
cpp_quote("#define URLACTION_INFODELIVERY_MAX 0x00001Dff")
cpp_quote("#define URLACTION_CHANNEL_SOFTDIST_MIN 0x00001E00")
cpp_quote("#define URLACTION_CHANNEL_SOFTDIST_PERMISSIONS 0x00001E05")
cpp_quote("#define URLPOLICY_CHANNEL_SOFTDIST_PROHIBIT 0x00010000")
cpp_quote("#define URLPOLICY_CHANNEL_SOFTDIST_PRECACHE 0x00020000")
cpp_quote("#define URLPOLICY_CHANNEL_SOFTDIST_AUTOINSTALL 0x00030000")
cpp_quote("#define URLACTION_CHANNEL_SOFTDIST_MAX 0x00001Eff")
cpp_quote("")
cpp_quote("// For each action specified above the system maintains")
cpp_quote("// a set of policies for the action. ")
cpp_quote("// The only policies supported currently are permissions (i.e. is something allowed)")
cpp_quote("// and logging status. ")
cpp_quote("// IMPORTANT: If you are defining your own policies don't overload the meaning of the")
cpp_quote("// loword of the policy. You can use the hiword to store any policy bits which are only")
cpp_quote("// meaningful to your action.")
cpp_quote("// For an example of how to do this look at the URLPOLICY_JAVA above")
cpp_quote("")
cpp_quote("// Permissions ")
cpp_quote("#define URLPOLICY_ALLOW 0x00")
cpp_quote("#define URLPOLICY_QUERY 0x01")
cpp_quote("#define URLPOLICY_DISALLOW 0x03")
cpp_quote("")
cpp_quote("// Notifications are not done when user already queried.") // CUT
cpp_quote("#define URLPOLICY_NOTIFY_ON_ALLOW 0x10")
cpp_quote("#define URLPOLICY_NOTIFY_ON_DISALLOW 0x20")
cpp_quote("")
cpp_quote("// Logging is done regardless of whether user was queried.") // CUT
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("")
cpp_quote("#define URLPOLICY_DONTCHECKDLGBOX 0x100")
cpp_quote("// The ordinal #'s that define the predefined zones internet explorer knows about. ")
cpp_quote("// When we support user-defined zones their zone numbers should be between ")
cpp_quote("// URLZONE_USER_MIN and URLZONE_USER_MAX")
//+---------------------------------------------------------------------------
//
// Copyright (C) Microsoft Corporation, 1995-1998.
//
// Contents: IInternetZoneManager interface definition
//
//----------------------------------------------------------------------------
cpp_quote("#ifndef _LPINTERNETZONEMANAGER_DEFINED")
cpp_quote("#define _LPINTERNETZONEMANAGER_DEFINED")
[
local,
object,
uuid(79eac9ef-baf9-11ce-8c82-00aa004ba90b),
helpstring("IInternetZoneManager Interface"),
pointer_default(unique)
]
interface IInternetZoneManager : IUnknown
{
typedef [unique] IInternetZoneManager *LPURLZONEMANAGER;
typedef enum tagURLZONE
{
URLZONE_PREDEFINED_MIN = 0,
URLZONE_LOCAL_MACHINE = 0, // local machine zone is not exposed in UI
URLZONE_INTRANET, // My Intranet zone
URLZONE_TRUSTED, // Trusted Web sites zone
URLZONE_INTERNET, // The Internet zone
URLZONE_UNTRUSTED, // Untrusted sites zone
URLZONE_PREDEFINED_MAX = 999,
URLZONE_USER_MIN = 1000,
URLZONE_USER_MAX = 10000,
} URLZONE;
typedef enum tagURLTEMPLATE
{
// This value is just used to indicate the current set
// of policies are not based on any template.
URLTEMPLATE_CUSTOM = 0x000000,
URLTEMPLATE_PREDEFINED_MIN = 0x10000,
URLTEMPLATE_LOW = 0x10000,
URLTEMPLATE_MEDLOW = 0x10500,
URLTEMPLATE_MEDIUM = 0x11000,
URLTEMPLATE_HIGH = 0x12000,
URLTEMPLATE_PREDEFINED_MAX = 0x20000
} URLTEMPLATE ;
enum { MAX_ZONE_PATH = 260, MAX_ZONE_DESCRIPTION = 200 };
typedef enum {
ZAFLAGS_CUSTOM_EDIT = 0x00000001,
ZAFLAGS_ADD_SITES = 0x00000002,
ZAFLAGS_REQUIRE_VERIFICATION = 0x00000004,
ZAFLAGS_INCLUDE_PROXY_OVERRIDE = 0x00000008, // Intranet only.
ZAFLAGS_INCLUDE_INTRANET_SITES = 0x00000010, // Intranet only.
ZAFLAGS_NO_UI = 0x00000020, // Don't display UI (used for local machine)
ZAFLAGS_SUPPORTS_VERIFICATION = 0x00000040, // Supports server verification.
ZAFLAGS_UNC_AS_INTRANET = 0x00000080,
} ZAFLAGS ;
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; // ZAFLAGS.
} ZONEATTRIBUTES, *LPZONEATTRIBUTES;
HRESULT GetZoneAttributes
(
[in] DWORD dwZone,
[in, out, unique]
ZONEATTRIBUTES* pZoneAttributes
);
cpp_quote("// Gets the zone attributes (information in registry other than actual security")
cpp_quote("// policies associated with the zone). Zone attributes are fixed as:")
HRESULT SetZoneAttributes
(
[in] DWORD dwZone,
[in] ZONEATTRIBUTES* pZoneAttributes
);
cpp_quote("// Sets the zone attributes (information in registry other than actual security")
cpp_quote("// policies associated with the zone). Zone attributes as above.")
cpp_quote("// Returns S_OK or ??? if failed to write the zone attributes.")
cpp_quote("/* Registry Flags")
cpp_quote("")
cpp_quote(" When reading, default behavior is:")
cpp_quote(" If HKLM allows override and HKCU value exists")
cpp_quote(" Then use HKCU value")
cpp_quote(" Else use HKLM value")
cpp_quote(" When writing, default behavior is same as HKCU")
cpp_quote(" If HKLM allows override")
cpp_quote(" Then Write to HKCU")
cpp_quote(" Else Fail")
cpp_quote("*/")
typedef enum _URLZONEREG
{
URLZONEREG_DEFAULT=0,
URLZONEREG_HKLM,
URLZONEREG_HKCU
} URLZONEREG;
HRESULT GetZoneCustomPolicy
(
[in] DWORD dwZone, // zone index
[in] REFGUID guidKey, // key to lookup value
[out, size_is(,*pcbPolicy)] // allocation via IMemAlloc; caller frees
BYTE** ppPolicy, // pointer to output buffer pointer
[out] DWORD* pcbPolicy, // pointer to output buffer size
[in] URLZONEREG urlZoneReg // effective, HKCU, or HKLM
);
cpp_quote("// Gets a named custom policy associated with a zone;")
cpp_quote("// e.g. the Java VM settings can be defined with a unique key such as 'Java'.")
cpp_quote("// Custom policy support is intended to allow extensibility from the predefined")
cpp_quote("// set of policies that IE4 has built in.")
cpp_quote("// ")
cpp_quote("// pwszKey is the string name designating the custom policy. Components are")
cpp_quote("// responsible for having unique names.")
cpp_quote("// ppPolicy is the callee allocated buffer for the policy byte blob; caller is")
cpp_quote("// responsible for freeing this buffer eventually.")
cpp_quote("// pcbPolicy is the size of the byte blob returned.")
cpp_quote("// dwRegFlags determines how registry is accessed (see above).")
cpp_quote("// Returns S_OK if key is found and buffer allocated; ??? if key is not found (no buffer alloced).")
HRESULT SetZoneCustomPolicy
(
[in] DWORD dwZone, // zone index
[in] REFGUID guidKey, // key to lookup value
[in, size_is(cbPolicy)]
BYTE* pPolicy, // input buffer pointer
[in] DWORD cbPolicy, // input data size
[in] URLZONEREG urlZoneReg // default, HKCU, or HKLM
);
cpp_quote("// Sets a named custom policy associated with a zone;")
cpp_quote("// e.g. the Java VM settings can be defined with a unique key such as 'Java'.")
cpp_quote("// Custom policy support is intended to allow extensibility from the predefined")
cpp_quote("// set of policies that IE4 has built in. ")
cpp_quote("// ")
cpp_quote("// pwszKey is the string name designating the custom policy. Components are")
cpp_quote("// responsible for having unique names.")
cpp_quote("// ppPolicy is the caller allocated buffer for the policy byte blob.")
cpp_quote("// pcbPolicy is the size of the byte blob to be set.")
cpp_quote("// dwRegFlags determines if HTCU or HKLM is set.")
cpp_quote("// Returns S_OK or ??? if failed to write the zone custom policy.")
HRESULT GetZoneActionPolicy
(
[in] DWORD dwZone, // zone index
[in] DWORD dwAction, // index number of action
[out, size_is(cbPolicy)]
BYTE* pPolicy, // output buffer pointer
[in] DWORD cbPolicy, // output buffer size
[in] URLZONEREG urlZoneReg // effective, HKCU, or HKLM
);
cpp_quote("// Gets action policy associated with a zone, the builtin, fixed-length policies info.")
cpp_quote("")
cpp_quote("// dwAction is the action code for the action as defined above.")
cpp_quote("// pPolicy is the caller allocated buffer for the policy data.")
cpp_quote("// cbPolicy is the size of the caller allocated buffer.")
cpp_quote("// dwRegFlags determines how registry is accessed (see above).")
cpp_quote("// Returns S_OK if action is valid; ??? if action is not valid.")
HRESULT SetZoneActionPolicy
(
[in] DWORD dwZone, // zone index
[in] DWORD dwAction, // index number of action
[in, size_is(cbPolicy)]
BYTE* pPolicy, // input buffer pointer
[in] DWORD cbPolicy, // input data size
[in] URLZONEREG urlZoneReg // HKCU, or HKLM
);
// Sets action policy associated with a zone, the builtin, fixed-length policies info.
//
// dwAction is the action code as defined above.
// pPolicy is the caller allocated buffer for the policy data.
// cbPolicy is the size of the caller allocated buffer.
// dwRegFlags determines how registry is accessed (see above).
// Returns S_OK if action is valid; ??? if action is not valid.
// UI, logging, and wrapper for both
// This function is not implemented yet.
HRESULT PromptAction
(
[in] DWORD dwAction, // action type
[in] HWND hwndParent, // parent window handle
[in] LPCWSTR pwszUrl, // URL to display
[in] LPCWSTR pwszText, // dialog text
[in] DWORD dwPromptFlags // reserved, pass 0
);
// This method presents UI to ask user about specified action
// This function is not implemented.
HRESULT LogAction
(
[in] DWORD dwAction, // action type
[in] LPCWSTR pwszUrl, // URL to log
[in] LPCWSTR pwszText, // associated text
[in] DWORD dwLogFlags // reserved, pass 0
);
// zone enumeration
HRESULT CreateZoneEnumerator
(
[out] DWORD* pdwEnum, // enum handle
[out] DWORD* pdwCount, // # of elements in the list.
[in] DWORD dwFlags // reserved, pass 0
);
// Returns enumerator handle needed to enumerate defined zones.
// The zone enumeration corresponds to a snap-shot of the zones when
// the Create call is made.
HRESULT GetZoneAt
(
[in] DWORD dwEnum, // returned by CreateZoneEnumerator
[in] DWORD dwIndex, // 0-based
[out] DWORD* pdwZone // absolute zone index.
);
HRESULT DestroyZoneEnumerator
(
[in] DWORD dwEnum // enum handle
);
// Destroys resources associated with an enumerator
HRESULT CopyTemplatePoliciesToZone
(
[in] DWORD dwTemplate, // High, medium or low
[in] DWORD dwZone, // Zone to copy policies to.
[in] DWORD dwReserved
);
}
cpp_quote("#endif")
cpp_quote("EXTERN_C const IID CLSID_SoftDistExt; ")
//+---------------------------------------------------------------------------
//
// Copyright (C) Microsoft Corporation, 1995-1998.
//
// Contents: ISoftDistExt interface definition
//
//----------------------------------------------------------------------------
cpp_quote("#ifndef _LPSOFTDISTEXT_DEFINED")
cpp_quote("#define _LPSOFTDISTEXT_DEFINED")
cpp_quote("")
cpp_quote("#define SOFTDIST_FLAG_USAGE_EMAIL 0x00000001")
cpp_quote("#define SOFTDIST_FLAG_USAGE_PRECACHE 0x00000002")
cpp_quote("#define SOFTDIST_FLAG_USAGE_AUTOINSTALL 0x00000004")
cpp_quote("#define SOFTDIST_FLAG_DELETE_SUBSCRIPTION 0x00000008")
cpp_quote("")
cpp_quote("")
cpp_quote("#define SOFTDIST_ADSTATE_NONE 0x00000000")
cpp_quote("#define SOFTDIST_ADSTATE_AVAILABLE 0x00000001")
cpp_quote("#define SOFTDIST_ADSTATE_DOWNLOADED 0x00000002")
cpp_quote("#define SOFTDIST_ADSTATE_INSTALLED 0x00000003")
cpp_quote("")
typedef struct _tagCODEBASEHOLD
{
ULONG cbSize;
LPWSTR szDistUnit;
LPWSTR szCodeBase;
DWORD dwVersionMS;
DWORD dwVersionLS;
DWORD dwStyle;
} CODEBASEHOLD, *LPCODEBASEHOLD;
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;
[
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("STDAPI GetSoftwareUpdateInfo( LPCWSTR szDistUnit, LPSOFTDISTINFO psdi );")
cpp_quote("STDAPI SetSoftwareUpdateAdvertisementState( LPCWSTR szDistUnit, DWORD dwAdState, DWORD dwAdvertisedVersionMS, DWORD dwAdvertisedVersionLS );")
cpp_quote("#endif")
//+---------------------------------------------------------------------------
//
// Copyright (C) Microsoft Corporation, 1995-1998.
//
// Contents: ICatalogFileInfo interface definition
//
//----------------------------------------------------------------------------
cpp_quote("#ifndef _LPCATALOGFILEINFO_DEFINED")
cpp_quote("#define _LPCATALOGFILEINFO_DEFINED")
[
local,
object,
uuid(711C7600-6B48-11d1-B403-00AA00B92AF1),
pointer_default(unique)
]
interface ICatalogFileInfo : IUnknown
{
typedef [unique] ICatalogFileInfo *LPCATALOGFILEINFO;
HRESULT GetCatalogFile(
[out] LPSTR *ppszCatalogFile // Catalog file path
);
HRESULT GetJavaTrust(
[out] void **ppJavaTrust // Java Trust structure
);
}
cpp_quote("#endif")
//+---------------------------------------------------------------------------
//
// Copyright (C) Microsoft Corporation, 1995-1998.
//
// Contents: IDataFilter definition
//
//---------------------------------------------------------------------------
cpp_quote("#ifndef _LPDATAFILTER_DEFINED")
cpp_quote("#define _LPDATAFILTER_DEFINED")
[
object,
uuid(69d14c80-c18e-11d0-a9ce-006097942311),
pointer_default(unique)
]
interface IDataFilter: IUnknown
{
typedef [unique] IDataFilter *LPDATAFILTER;
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")
//+---------------------------------------------------------------------------
//
// Copyright (C) Microsoft Corporation, 1995-1998.
//
// Contents: IEncodingFilterFactory definition
//
//---------------------------------------------------------------------------
cpp_quote("#ifndef _LPENCODINGFILTERFACTORY_DEFINED")
cpp_quote("#define _LPENCODINGFILTERFACTORY_DEFINED")
typedef struct _tagPROTOCOLFILTERDATA
{
DWORD cbSize;
IInternetProtocolSink *pProtocolSink; // out parameter
IInternetProtocol *pProtocol; // in parameter
IUnknown *pUnk;
DWORD dwFilterFlags;
} PROTOCOLFILTERDATA;
[
local,
object,
uuid(70bdde00-c18e-11d0-a9ce-006097942311),
pointer_default(unique)
]
interface IEncodingFilterFactory : IUnknown
{
typedef [unique] IEncodingFilterFactory *LPENCODINGFILTERFACTORY;
typedef struct _tagDATAINFO
{
ULONG ulTotalSize;
ULONG ulavrPacketSize;
ULONG ulConnectSpeed;
ULONG ulProcessorSpeed;
} DATAINFO ;
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")
//+---------------------------------------------------------------------------
//
// Copyright (C) Microsoft Corporation, 1995-1998.
//
// Contents: Hit Logging Apis definition
//
//---------------------------------------------------------------------------
cpp_quote("#ifndef _HITLOGGING_DEFINED")
cpp_quote("#define _HITLOGGING_DEFINED")
cpp_quote("// Logging-specific apis")
#pragma midl_echo("BOOL WINAPI IsLoggingEnabledA(IN LPCSTR pszUrl); ")
#pragma midl_echo("BOOL WINAPI IsLoggingEnabledW(IN LPCWSTR pwszUrl); ")
cpp_quote("#ifdef UNICODE ")
cpp_quote("#define IsLoggingEnabled IsLoggingEnabledW ")
cpp_quote("#else ")
cpp_quote("#define IsLoggingEnabled IsLoggingEnabledA ")
cpp_quote("#endif // !UNICODE ")
// HIT_LOGGING_INFO
typedef struct _tagHIT_LOGGING_INFO {
DWORD dwStructSize;
LPSTR lpszLoggedUrlName;
SYSTEMTIME StartTime;
SYSTEMTIME EndTime;
LPSTR lpszExtendedInfo;
} HIT_LOGGING_INFO, * LPHIT_LOGGING_INFO;
#pragma midl_echo("BOOL WINAPI WriteHitLogging(IN LPHIT_LOGGING_INFO lpLogginginfo); ")
cpp_quote("#define CONFIRMSAFETYACTION_LOADOBJECT 0x00000001")
struct CONFIRMSAFETY
{
CLSID clsid;
IUnknown * pUnk;
DWORD dwFlags;
};
cpp_quote("EXTERN_C const GUID GUID_CUSTOM_CONFIRMOBJECTSAFETY; ")
cpp_quote("#endif")
//+---------------------------------------------------------------------------
//
// Copyright (C) Microsoft Corporation, 2000.
//
// Contents: IWrappedProtocol definition
//
//---------------------------------------------------------------------------
cpp_quote("#ifndef _LPIWRAPPEDPROTOCOL_DEFINED")
cpp_quote("#define _LPIWRAPPEDPROTOCOL_DEFINED")
[
local,
object,
uuid(53c84785-8425-4dc5-971b-e58d9c19f9b6),
pointer_default(unique)
]
interface IWrappedProtocol : IUnknown
{
typedef [unique] IWrappedProtocol *LPIWRAPPEDPROTOCOL;
HRESULT GetWrapperCode(
[out] LONG * pnCode,
[in] DWORD_PTR dwReserved
);
}
cpp_quote("#endif")