Remove some no longer needed AW functions.
[wine] / include / urlmon.idl
1 /*
2  * Copyright (C) 2000 Ulrich Czekalla
3  * Copyright (C) 2003 Alexandre Julliard
4  *
5  * This library is free software; you can redistribute it and/or
6  * modify it under the terms of the GNU Lesser General Public
7  * License as published by the Free Software Foundation; either
8  * version 2.1 of the License, or (at your option) any later version.
9  *
10  * This library is distributed in the hope that it will be useful,
11  * but WITHOUT ANY WARRANTY; without even the implied warranty of
12  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
13  * Lesser General Public License for more details.
14  *
15  * You should have received a copy of the GNU Lesser General Public
16  * License along with this library; if not, write to the Free Software
17  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
18  */
19
20 import "objidl.idl";
21 import "oleidl.idl";
22 import "servprov.idl";
23 /*import "msxml.idl";*/
24
25
26 /*****************************************************************************
27  * IBinding interface
28  */
29 [
30     object,
31     uuid(79eac9c0-baf9-11ce-8c82-00aa004ba90b),
32     pointer_default(unique)
33 ]
34 interface IBinding : IUnknown
35 {
36     typedef [unique] IBinding *LPBINDING;
37
38     HRESULT Abort();
39     HRESULT Suspend();
40     HRESULT Resume();
41
42     HRESULT SetPriority(
43         [in] LONG nPriority);
44
45     HRESULT GetPriority(
46         [out] LONG * pnPriority);
47
48     [local]
49     HRESULT GetBindResult(
50         [out] CLSID *pclsidProtocol,
51         [out] DWORD *pdwResult,
52         [out] LPOLESTR *pszResult,
53         [in, out] DWORD *pdwReserved);
54
55     [call_as(GetBindResult)]
56     HRESULT RemoteGetBindResult(
57         [out] CLSID *pclsidProtocol,
58         [out] DWORD *pdwResult,
59         [out] LPOLESTR *pszResult,
60         [in] DWORD dwReserved);
61 }
62
63
64 /*****************************************************************************
65  * IBindStatusCallback interface
66  */
67 [
68     object,
69     uuid(79eac9c1-baf9-11ce-8c82-00aa004ba90b),
70     pointer_default(unique)
71 ]
72 interface IBindStatusCallback : IUnknown
73 {
74     typedef [unique] IBindStatusCallback *LPBINDSTATUSCALLBACK;
75
76
77     typedef enum
78     {
79         BINDF_ASYNCHRONOUS = 0x00000001,
80         BINDF_ASYNCSTORAGE = 0x00000002,
81         BINDF_NOPROGRESSIVERENDERING = 0x00000004,
82         BINDF_OFFLINEOPERATION = 0x00000008,
83         BINDF_GETNEWESTVERSION = 0x00000010,
84         BINDF_NOWRITECACHE = 0x00000020,
85         BINDF_NEEDFILE = 0x00000040,
86         BINDF_PULLDATA = 0x00000080,
87         BINDF_IGNORESECURITYPROBLEM = 0x00000100,
88         BINDF_RESYNCHRONIZE = 0x00000200,
89         BINDF_HYPERLINK = 0x00000400,
90         BINDF_NO_UI = 0x00000800,
91         BINDF_SILENTOPERATION = 0x00001000,
92         BINDF_PRAGMA_NO_CACHE = 0x00002000,
93         BINDF_GETCLASSOBJECT = 0x00004000,
94         BINDF_RESERVED_1 = 0x00008000,
95         BINDF_FREE_THREADED = 0x00010000,
96         BINDF_DIRECT_READ = 0x00020000,
97         BINDF_FORMS_SUBMIT = 0x00040000,
98         BINDF_GETFROMCACHE_IF_NET_FAIL = 0x00080000,
99         BINDF_FROMURLMON = 0x00100000,
100         BINDF_FWD_BACK = 0x00200000,
101         BINDF_PREFERDEFAULTHANDLER = 0x00400000,
102         BINDF_ENFORCERESTRICTED = 0x00800000
103     } BINDF;
104
105     typedef struct _tagBINDINFO
106     {
107         ULONG cbSize;
108         LPWSTR szExtraInfo;
109         STGMEDIUM stgmedData;
110         DWORD grfBindInfoF;
111         DWORD dwBindVerb;
112         LPWSTR szCustomVerb;
113         DWORD cbStgmedData;
114         DWORD dwOptions;
115         DWORD dwOptionsFlags;
116         DWORD dwCodePage;
117         SECURITY_ATTRIBUTES securityAttributes;
118         IID iid;
119         IUnknown *pUnk;
120         DWORD dwReserved;
121     } BINDINFO;
122
123     typedef struct _REMSECURITY_ATTRIBUTES
124     {
125         DWORD nLength;
126         DWORD lpSecurityDescriptor;
127         BOOL bInheritHandle;
128     } REMSECURITY_ATTRIBUTES, *PREMSECURITY_ATTRIBUTES, *LPREMSECURITY_ATTRIBUTES;
129
130     typedef struct _tagRemBINDINFO
131     {
132         ULONG cbSize;
133         LPWSTR szExtraInfo;
134         DWORD grfBindInfoF;
135         DWORD dwBindVerb;
136         LPWSTR szCustomVerb;
137         DWORD cbstgmedData;
138         DWORD dwOptions;
139         DWORD dwOptionsFlags;
140         DWORD dwCodePage;
141         REMSECURITY_ATTRIBUTES securityAttributes;
142         IID iid;
143         IUnknown *pUnk;
144         DWORD dwReserved;
145     } RemBINDINFO;
146
147     typedef struct tagRemFORMATETC
148     {
149         DWORD cfFormat;
150         DWORD ptd;
151         DWORD dwAspect;
152         LONG lindex;
153         DWORD tymed;
154     } RemFORMATETC, *LPREMFORMATETC;
155
156     typedef enum
157     {
158         BSCF_FIRSTDATANOTIFICATION = 0x01,
159         BSCF_INTERMEDIATEDATANOTIFICATION = 0x02,
160         BSCF_LASTDATANOTIFICATION = 0x04,
161         BSCF_DATAFULLYAVAILABLE = 0x08,
162         BSCF_AVAILABLEDATASIZEUNKNOWN = 0x10
163     } BSCF;
164
165     typedef enum BINDSTATUS
166     {
167         BINDSTATUS_FINDINGRESOURCE = 1,
168         BINDSTATUS_CONNECTING,
169         BINDSTATUS_REDIRECTING,
170         BINDSTATUS_BEGINDOWNLOADDATA,
171         BINDSTATUS_DOWNLOADINGDATA,
172         BINDSTATUS_ENDDOWNLOADDATA,
173         BINDSTATUS_BEGINDOWNLOADCOMPONENTS,
174         BINDSTATUS_INSTALLINGCOMPONENTS,
175         BINDSTATUS_ENDDOWNLOADCOMPONENTS,
176         BINDSTATUS_USINGCACHEDCOPY,
177         BINDSTATUS_SENDINGREQUEST,
178         BINDSTATUS_CLASSIDAVAILABLE,
179         BINDSTATUS_MIMETYPEAVAILABLE,
180         BINDSTATUS_CACHEFILENAMEAVAILABLE,
181         BINDSTATUS_BEGINSYNCOPERATION,
182         BINDSTATUS_ENDSYNCOPERATION,
183         BINDSTATUS_BEGINUPLOADDATA,
184         BINDSTATUS_UPLOADINGDATA,
185         BINDSTATUS_ENDUPLOADINGDATA,
186         BINDSTATUS_PROTOCOLCLASSID,
187         BINDSTATUS_ENCODING,
188         BINDSTATUS_VERFIEDMIMETYPEAVAILABLE,
189         BINDSTATUS_CLASSINSTALLLOCATION,
190         BINDSTATUS_DECODING,
191         BINDSTATUS_LOADINGMIMEHANDLER,
192         BINDSTATUS_CONTENTDISPOSITIONATTACH,
193         BINDSTATUS_FILTERREPORTMIMETYPE,
194         BINDSTATUS_CLSIDCANINSTANTIATE,
195         BINDSTATUS_IUNKNOWNAVAILABLE,
196         BINDSTATUS_DIRECTBIND,
197         BINDSTATUS_RAWMIMETYPE,
198         BINDSTATUS_PROXYDETECTING,
199         BINDSTATUS_ACCEPTRANGES,
200         BINDSTATUS_COOKIE_SENT,
201         BINDSTATUS_COMPACT_POLICY_RECEIVED,
202         BINDSTATUS_COOKIE_SUPPRESSED,
203         BINDSTATUS_COOKIE_STATE_UNKNOWN,
204         BINDSTATUS_COOKIE_STATE_ACCEPT,
205         BINDSTATUS_COOKIE_STATE_REJECT,
206         BINDSTATUS_COOKIE_STATE_PROMPT,
207         BINDSTATUS_COOKIE_STATE_LEASH,
208         BINDSTATUS_COOKIE_STATE_DOWNGRADE,
209         BINDSTATUS_POLICY_HREF,
210         BINDSTATUS_P3P_HEADER,
211         BINDSTATUS_SESSION_COOKIE_RECEIVED,
212         BINDSTATUS_PERSISTENT_COOKIE_RECEIVED,
213         BINDSTATUS_SESSION_COOKIES_ALLOWED,
214         BINDSTATUS_CACHECONTROL
215     } BINDSTATUS;
216
217
218     HRESULT OnStartBinding(
219         [in] DWORD dwReserved,
220         [in] IBinding * pib);
221
222     HRESULT GetPriority(
223         [out] LONG * pnPriority);
224
225     HRESULT OnLowResource(
226         [in] DWORD reserved);
227
228     HRESULT OnProgress(
229         [in] ULONG ulProgress,
230         [in] ULONG ulProgressMax,
231         [in] ULONG ulStatusCode,
232         [in] LPCWSTR szStatusText);
233
234     HRESULT OnStopBinding(
235         [in] HRESULT hresult,
236         [in, unique] LPCWSTR szError);
237
238     [local]
239     HRESULT GetBindInfo(
240         [out] DWORD *grfBINDF,
241         [in, out, unique] BINDINFO * pbindinfo);
242
243     [call_as(GetBindInfo)]
244     HRESULT RemoteGetBindInfo(
245         [out] DWORD *grfBINDF,
246         [in, out, unique] RemBINDINFO * pbindinfo,
247         [in, out, unique] RemSTGMEDIUM* pstgmed);
248
249     [local]
250     HRESULT OnDataAvailable(
251         [in] DWORD grfBSCF,
252         [in] DWORD dwSize,
253         [in] FORMATETC* pformatetc,
254         [in] STGMEDIUM* pstgmed);
255
256     [call_as(OnDataAvailable)]
257     HRESULT RemoteOnDataAvailable(
258         [in] DWORD grfBSCF,
259         [in] DWORD dwSize,
260         [in] RemFORMATETC *pformatetc,
261         [in] RemSTGMEDIUM* pstgmed);
262
263     HRESULT OnObjectAvailable(
264         [in] REFIID riid,
265         [in, iid_is(riid)] IUnknown* punk);
266 }
267
268
269 /*****************************************************************************
270  * IBindHost interface
271  */
272 cpp_quote("#define SID_IBindHost IID_IBindHost")
273 cpp_quote("#define SID_SBindHost IID_IBindHost")
274 [
275     object,
276     uuid(fc4801a1-2ba9-11cf-a229-00aa003d7352),
277     pointer_default(unique)
278 ]
279 interface IBindHost : IUnknown
280 {
281     typedef [unique] IBindHost *LPBINDHOST;
282
283     HRESULT CreateMoniker(
284         [in] LPOLESTR szName,
285         [in] IBindCtx *pBC,
286         [out] IMoniker** ppmk,
287         [in] DWORD dwReserved);
288
289     [local]
290     HRESULT MonikerBindToStorage(
291         [in] IMoniker *pMk,
292         [in] IBindCtx *pBC,
293         [in] IBindStatusCallback *pBSC,
294         [in] REFIID riid,
295         [out] void **ppvObj);
296
297     [call_as(MonikerBindToStorage)]
298     HRESULT RemoteMonikerBindToStorage(
299         [in, unique] IMoniker *pMk,
300         [in, unique] IBindCtx *pBC,
301         [in, unique] IBindStatusCallback *pBSC,
302         [in] REFIID riid,
303         [out, iid_is(riid)] IUnknown **ppvObj);
304
305     [local]
306     HRESULT MonikerBindToObject(
307         [in] IMoniker *pMk,
308         [in] IBindCtx *pBC,
309         [in] IBindStatusCallback *pBSC,
310         [in] REFIID riid,
311         [out] void **ppvObj);
312
313     [call_as(MonikerBindToObject)]
314     HRESULT RemoteMonikerBindToObject(
315         [in, unique] IMoniker *pMk,
316         [in, unique] IBindCtx *pBC,
317         [in, unique] IBindStatusCallback *pBSC,
318         [in] REFIID riid,
319         [out, iid_is(riid)] IUnknown **ppvObj);
320 }
321
322
323 /*****************************************************************************
324  * IWinInetInfo interface
325  */
326 [
327     object,
328     uuid(79eac9d6-bafa-11ce-8c82-00aa004ba90b),
329     pointer_default(unique)
330 ]
331 interface IWinInetInfo : IUnknown
332 {
333     typedef [unique] IWinInetInfo *LPWININETINFO;
334
335     [local]
336     HRESULT QueryOption(
337         [in] DWORD dwOption,
338         [in, out, size_is(*pcbBuf)] LPVOID pBuffer,
339         [in, out] DWORD *pcbBuf);
340
341     [call_as(QueryOption)]
342     HRESULT RemoteQueryOption(
343         [in] DWORD  dwOption,
344         [in, out, size_is(*pcbBuf)] BYTE *pBuffer,
345         [in, out] DWORD *pcbBuf);
346 }
347
348
349
350 /*****************************************************************************
351  * IWinInetHttpInfo interface
352  */
353 [
354     object,
355     uuid(79eac9d8-bafa-11ce-8c82-00aa004ba90b),
356     pointer_default(unique)
357 ]
358 interface IWinInetHttpInfo : IWinInetInfo
359 {
360     typedef [unique] IWinInetHttpInfo *LPWININETHTTPINFO;
361
362     [local]
363     HRESULT QueryInfo(
364         [in] DWORD dwOption,
365         [in, out,size_is(*pcbBuf)] LPVOID pBuffer,
366         [in, out] DWORD *pcbBuf,
367         [in, out] DWORD *pdwFlags,
368         [in, out] DWORD *pdwReserved);
369
370     [call_as(QueryInfo)]
371     HRESULT RemoteQueryInfo(
372         [in] DWORD dwOption,
373         [in,out,size_is(*pcbBuf)] BYTE *pBuffer,
374         [in, out] DWORD *pcbBuf,
375         [in, out] DWORD *pdwFlags,
376         [in, out] DWORD *pdwReserved);
377 }
378
379
380
381 /*****************************************************************************
382  * IPersistMoniker interface
383  */
384 [
385     object,
386     uuid(79eac9c9-baf9-11ce-8c82-00aa004ba90b),
387     pointer_default(unique)
388 ]
389 interface IPersistMoniker : IUnknown
390 {
391     typedef [unique] IPersistMoniker *LPPERSISTMONIKER;
392
393     HRESULT GetClassID(
394         [out] CLSID *pClassID);
395
396     HRESULT IsDirty();
397
398     HRESULT Load(
399         [in] BOOL fFullyAvailable,
400         [in] IMoniker *pimkName,
401         [in] LPBC pibc,
402         [in] DWORD grfMode);
403
404     HRESULT Save(
405         [in] IMoniker *pimkName,
406         [in] LPBC pbc,
407         [in] BOOL fRemember);
408
409     HRESULT SaveCompleted(
410         [in] IMoniker *pimkName,
411         [in] LPBC pibc);
412
413     HRESULT GetCurMoniker(
414         [out] IMoniker **ppimkName);
415 }
416
417
418 /*****************************************************************************
419  * IInternetProtocolInfo interface
420  */
421 [
422     local,
423     object,
424     uuid(79eac9ec-baf9-11ce-8c82-00aa004ba90b),
425     pointer_default(unique)
426 ]
427 interface IInternetProtocolInfo : IUnknown
428 {
429     typedef [unique] IInternetProtocolInfo *LPIINTERNETPROTOCOLINFO;
430
431     typedef enum _tagPARSEACTION
432     {
433         PARSE_CANONICALIZE = 1,
434         PARSE_FRIENDLY,
435         PARSE_SECURITY_URL,
436         PARSE_ROOTDOCUMENT,
437         PARSE_DOCUMENT,
438         PARSE_ANCHOR,
439         PARSE_ENCODE,
440         PARSE_DECODE,
441         PARSE_PATH_FROM_URL,
442         PARSE_URL_FROM_PATH,
443         PARSE_MIME,
444         PARSE_SERVER,
445         PARSE_SCHEMA,
446         PARSE_SITE,
447         PARSE_DOMAIN,
448         PARSE_LOCATION,
449         PARSE_SECURITY_DOMAIN,
450         PARSE_ESCAPE,
451         PARSE_UNESCAPE
452     } PARSEACTION;
453
454     typedef enum _tagPSUACTION
455     {
456         PSU_DEFAULT = 1,
457         PSU_SECURITY_URL_ONLY
458     } PSUACTION;
459
460     typedef enum _tagQUERYOPTION
461     {
462         QUERY_EXPIRATION_DATE = 1,
463         QUERY_TIME_OF_LAST_CHANGE,
464         QUERY_CONTENT_ENCODING,
465         QUERY_CONTENT_TYPE,
466         QUERY_REFRESH,
467         QUERY_RECOMBINE,
468         QUERY_CAN_NAVIGATE,
469         QUERY_USES_NETWORK,
470         QUERY_IS_CACHED,
471         QUERY_IS_INSTALLEDENTRY,
472         QUERY_IS_CACHED_OR_MAPPED,
473         QUERY_USES_CACHE,
474         QUERY_IS_SECURE,
475         QUERY_IS_SAFE
476     } QUERYOPTION;
477
478     HRESULT ParseUrl(
479         [in] LPCWSTR pwzUrl,
480         [in] PARSEACTION ParseAction,
481         [in] DWORD dwParseFlags,
482         [out] LPWSTR pwzResult,
483         [in] DWORD cchResult,
484         [out] DWORD *pcchResult,
485         [in] DWORD dwReserved);
486
487     HRESULT CombineUrl(
488         [in] LPCWSTR pwzBaseUrl,
489         [in] LPCWSTR pwzRelativeUrl,
490         [in] DWORD dwCombineFlags,
491         [out] LPWSTR pwzResult,
492         [in] DWORD cchResult,
493         [out] DWORD *pcchResult,
494         [in] DWORD dwReserved);
495
496     HRESULT CompareUrl(
497         [in] LPCWSTR pwzUrl1,
498         [in] LPCWSTR pwzUrl2,
499         [in] DWORD dwCompareFlags);
500
501     HRESULT QueryInfo(
502         [in] LPCWSTR pwzUrl,
503         [in] QUERYOPTION OueryOption,
504         [in] DWORD dwQueryFlags,
505         [in, out,size_is(*pcbBuf)] LPVOID pBuffer,
506         [in] DWORD cbBuffer,
507         [in, out] DWORD *pcbBuf,
508         [in] DWORD dwReserved);
509 }
510
511 /*****************************************************************************
512  * IInternetSession interface
513  */
514 [
515     local,
516     object,
517     uuid(79eac9e7-baf9-11ce-8c82-00aa004ba90b),
518     pointer_default(unique)
519 ]
520 interface IInternetSession : IUnknown
521 {
522     typedef [unique] IInternetSession *LPIINTERNETSESSION;
523
524     typedef enum _tagOIBDG_FLAGS
525     {
526         OIBDG_APARTMENTTHREADED = 0x0100,
527         OIBDG_DATAONLY          = 0x1000
528     } OIBDG_FLAGS;
529
530     HRESULT RegisterNameSpace(
531         [in] IClassFactory *pCF,
532         [in] REFCLSID rclsid,
533         [in] LPCWSTR pwzProtocol,
534         [in] ULONG cPatterns,
535         [in] const LPCWSTR *ppwzPatterns,
536         [in] DWORD dwReserved);
537
538     HRESULT UnregisterNameSpace(
539         [in] IClassFactory *pCF,
540         [in] LPCWSTR pszProtocol);
541
542     HRESULT RegisterMimeFilter(
543         [in] IClassFactory *pCF,
544         [in] REFCLSID rclsid,
545         [in] LPCWSTR pwzType);
546
547     HRESULT UnregisterMimeFilter(
548         [in] IClassFactory *pCF,
549         [in] LPCWSTR pwzType);
550
551     HRESULT CreateBinding(
552         [in] LPBC pBC,
553         [in] LPCWSTR szUrl,
554         [in] IUnknown *pUnkOuter,
555         [out, unique] IUnknown **ppUnk,
556         [out, unique] /*IInternetProtocol*/ void **ppOInetProt,
557         [in] DWORD dwOption);
558
559     HRESULT SetSessionOption(
560         [in] DWORD dwOption,
561         [in] LPVOID pBuffer,
562         [in] DWORD dwBufferLength,
563         [in] DWORD dwReserved);
564 }
565
566 /*****************************************************************************
567  * IInternetSecurityMgrSite interface
568  */
569 [
570     local,
571     object,
572     uuid(79eac9ed-baf9-11ce-8c82-00aa004ba90b),
573     pointer_default(unique)
574 ]
575 interface IInternetSecurityMgrSite : IUnknown
576 {
577     HRESULT GetWindow(
578         [out] HWND *phwnd);
579
580     HRESULT EnableModeless(
581         [in] BOOL fEnable);
582 };
583
584
585 /*****************************************************************************
586  * IInternetSecurityManager interface
587  */
588 cpp_quote("#define SID_SInternetSecurityManager IID_IInternetSecurityManager")
589
590 [
591     object,
592     uuid(79eac9ee-baf9-11ce-8c82-00aa004ba90b),
593     pointer_default(unique)
594 ]
595 interface IInternetSecurityManager : IUnknown
596 {
597     HRESULT SetSecuritySite(
598         [in, unique] IInternetSecurityMgrSite *pSite);
599
600     HRESULT GetSecuritySite(
601         [out] IInternetSecurityMgrSite **ppSite);
602
603     HRESULT MapUrlToZone(
604         [in] LPCWSTR pwszUrl,
605         [out] DWORD *pdwZone,
606         [in] DWORD dwFlags);
607
608 cpp_quote("#define MAX_SIZE_SECURITY_ID 512")
609
610     HRESULT GetSecurityId(
611         [in] LPCWSTR pwszUrl,
612         [out, size_is(*pcbSecurityId)] BYTE *pbSecurityId,
613         [in, out] DWORD *pcbSecurityId,
614         [in] DWORD dwReserved);
615
616
617     typedef enum {
618         PUAF_DEFAULT                = 0x00,
619         PUAF_NOUI                   = 0x01,
620         PUAF_ISFILE                 = 0x02,
621         PUAF_WARN_IF_DENIED         = 0x04,
622         PUAF_FORCEUI_FOREGROUND     = 0x08,
623         PUAF_CHECK_TIPS             = 0x10
624     } PUAF;
625
626     HRESULT ProcessUrlAction(
627         [in] LPCWSTR pwszUrl,
628         [in] DWORD dwAction,
629         [out, size_is(cbPolicy)] BYTE *pPolicy,
630         [in] DWORD cbPolicy,
631         [in] BYTE *pContext,
632         [in] DWORD cbContext,
633         [in] DWORD dwFlags,
634         [in] DWORD dwReserved);
635
636     HRESULT QueryCustomPolicy(
637         [in] LPCWSTR pwszUrl,
638         [in] REFGUID guidKey,
639         [out, size_is(*pcbPolicy)] BYTE **ppPolicy,
640         [out] DWORD *pcbPolicy,
641         [in] BYTE *pContext,
642         [in] DWORD cbContext,
643         [in] DWORD dwReserved);
644
645     typedef enum {
646         SZM_CREATE = 0x0,
647         SZM_DELETE = 0x1
648     } SZM_FLAGS;
649
650     HRESULT SetZoneMapping(
651         [in] DWORD dwZone,
652         [in] LPCWSTR lpszPattern,
653         [in] DWORD dwFlags);
654
655     HRESULT GetZoneMappings(
656         [in] DWORD dwZone,
657         [out] IEnumString **ppenumString,
658         [in] DWORD dwFlags);
659 };
660
661 /*****************************************************************************
662  * IInternetZoneManager interface
663  */
664 [
665     local,
666     object,
667     uuid(79EAC9EF-BAf9-11CE-8C82-00AA004BA90B),
668     pointer_default(unique)
669 ]
670 interface IInternetZoneManager : IUnknown
671 {
672     typedef [unique] IInternetZoneManager* LPURLZONEMANAGER;
673
674     typedef enum tagURLZONE
675     {
676         URLZONE_PREDEFINED_MIN  = 0,
677         URLZONE_LOCAL_MACHINE   = 0,
678         URLZONE_INTRANET        = 1,
679         URLZONE_TRUSTED         = 2,
680         URLZONE_INTERNET        = 3,
681         URLZONE_UNTRUSTED       = 4,
682         URLZONE_PREDEFINED_MAX  = 999,
683         URLZONE_USER_MIN        = 1000,
684         URLZONE_USER_MAX        = 10000,
685     }  URLZONE;
686
687     typedef enum tagURLTEMPLATE
688     {
689         URLTEMPLATE_CUSTOM         = 0x00000,
690         URLTEMPLATE_PREDEFINED_MIN = 0x10000,
691         URLTEMPLATE_LOW            = 0x10000,
692         URLTEMPLATE_MEDIUM         = 0x11000,
693         URLTEMPLATE_HIGH           = 0x12000,
694         URLTEMPLATE_PREDEFINED_MAX = 0x20000,
695     } URLTEMPLATE ;
696
697     typedef enum {
698         ZAFLAGS_CUSTOM_EDIT            = 0x00000001,
699         ZAFLAGS_ADD_SITES              = 0x00000002,
700         ZAFLAGS_REQUIRE_VERIFICATION   = 0x00000004,
701         ZAFLAGS_INCLUDE_PROXY_OVERRIDE = 0x00000008,
702         ZAFLAGS_INCLUDE_INTRANET_SITES = 0x00000010,
703         ZAFLAGS_NO_UI                  = 0x00000020,
704         ZAFLAGS_SUPPORTS_VERIFICATION  = 0x00000040,
705         ZAFLAGS_UNC_AS_INTRANET        = 0x00000080,
706     } ZAFLAGS ;
707
708     enum {
709         MAX_ZONE_PATH        = 260,
710         MAX_ZONE_DESCRIPTION = 200
711     };
712
713     typedef struct _ZONEATTRIBUTES {
714         ULONG cbSize;
715         WCHAR szDisplayName[MAX_ZONE_PATH];
716         WCHAR szDescription[MAX_ZONE_DESCRIPTION];
717         WCHAR szIconPath[MAX_ZONE_PATH];
718         DWORD dwTemplateMinLevel;
719         DWORD dwTemplateRecommended;
720         DWORD dwTemplateCurrentLevel;
721         DWORD dwFlags;
722     } ZONEATTRIBUTES, *LPZONEATTRIBUTES;
723
724     typedef enum _URLZONEREG {
725         URLZONEREG_DEFAULT,
726         URLZONEREG_HKLM,
727         URLZONEREG_HKCU
728     } URLZONEREG;
729
730     HRESULT GetZoneAttributes(
731         [in]              DWORD dwZone,
732         [in, out, unique] ZONEATTRIBUTES* pZoneAttributes);
733
734     HRESULT SetZoneAttributes(
735         [in] DWORD dwZone,
736         [in] ZONEATTRIBUTES* pZoneAttributes);
737
738     HRESULT GetZoneCustomPolicy(
739         [in]  DWORD dwZone,
740         [in]  REFGUID guidKey,
741         [out] BYTE **ppPolicy,
742         [out] DWORD* pcbPolicy,
743         [in]  URLZONEREG ulrZoneReg);
744
745     HRESULT SetZoneCustomPolicy(
746         [in] DWORD dwZone,
747         [in] REFGUID guidKey,
748         [in] BYTE *ppPolicy,
749         [in] DWORD pcbPolicy,
750         [in] URLZONEREG ulrZoneReg);
751
752     HRESULT GetZoneActionPolicy(
753         [in]  DWORD dwZone,
754         [in]  DWORD dwAction,
755         [out] BYTE* pPolicy,
756         [in]  DWORD cbPolicy,
757         [in]  URLZONEREG urlZoneReg);
758
759     HRESULT SetZoneActionPolicy(
760         [in] DWORD dwZone,
761         [in] DWORD dwAction,
762         [in] BYTE* pPolicy,
763         [in] DWORD cbPolicy,
764         [in] URLZONEREG urlZoneReg);
765
766     HRESULT LogAction(
767         [in] DWORD dwAction,
768         [in] LPCWSTR pwszUrl,
769         [in] LPCWSTR pwszText,
770         [in] DWORD dwLogFlags);
771
772     HRESULT CreateZoneEnumerator(
773         [out] DWORD* pdwEnum,
774         [out] DWORD* pdwCount,
775         [in]  DWORD dwFlags);
776
777     HRESULT GetZoneAt(
778         [in]  DWORD dwEnum,
779         [in]  DWORD dwIndex,
780         [out] DWORD* pdwZone);
781
782     HRESULT DestroyZoneEnumerator(
783         [in] DWORD dwEnum);
784
785     HRESULT CopyTemplatePoliciesToZone(
786         [in] DWORD dwTemplate,
787         [in] DWORD dwZone,
788         [in] DWORD dwReserved);
789 }
790
791 cpp_quote("DEFINE_GUID(CLSID_InternetSecurityManager, 0x7b8a2d94, 0x0ac9, 0x11d1, 0x89, 0x6c, 0x00, 0xc0, 0x4f, 0xB6, 0xbf, 0xc4);")
792 cpp_quote("DEFINE_GUID(CLSID_InternetZoneManager, 0x7B8A2D95, 0x0AC9, 0x11D1, 0x89, 0x6C, 0x00, 0xC0, 0x4F, 0xB6, 0xBF, 0xC4);")
793 cpp_quote("DEFINE_GUID(IID_IAsyncMoniker, 0x79EAC9D3, 0xBAF9, 0x11CE, 0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0x0B);")
794 cpp_quote("DEFINE_GUID(CLSID_StdURLMoniker, 0x79EAC9E0, 0xBAF9, 0x11CE, 0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0x0B);")
795
796 cpp_quote("#define MK_S_ASYNCHRONOUS                0x000401E8")
797 cpp_quote("#define S_ASYNCHRONOUS                   MK_S_ASYNCHRONOUS")
798
799 cpp_quote("#define INET_E_ERROR_FIRST               0x800C0002L")
800 cpp_quote("#define INET_E_INVALID_URL               0x800C0002L")
801 cpp_quote("#define INET_E_NO_SESSION                0x800C0003L")
802 cpp_quote("#define INET_E_CANNOT_CONNECT            0x800C0004L")
803 cpp_quote("#define INET_E_RESOURCE_NOT_FOUND        0x800C0005L")
804 cpp_quote("#define INET_E_OBJECT_NOT_FOUND          0x800C0006L")
805 cpp_quote("#define INET_E_DATA_NOT_AVAILABLE        0x800C0007L")
806 cpp_quote("#define INET_E_DOWNLOAD_FAILURE          0x800C0008L")
807 cpp_quote("#define INET_E_AUTHENTICATION_REQUIRED   0x800C0009L")
808 cpp_quote("#define INET_E_NO_VALID_MEDIA            0x800C000AL")
809 cpp_quote("#define INET_E_CONNECTION_TIMEOUT        0x800C000BL")
810 cpp_quote("#define INET_E_INVALID_REQUEST           0x800C000CL")
811 cpp_quote("#define INET_E_UNKNOWN_PROTOCOL          0x800C000DL")
812 cpp_quote("#define INET_E_SECURITY_PROBLEM          0x800C000EL")
813 cpp_quote("#define INET_E_CANNOT_LOAD_DATA          0x800C000FL")
814 cpp_quote("#define INET_E_CANNOT_INSTANTIATE_OBJECT 0x800C0010L")
815 cpp_quote("#define INET_E_QUERYOPTION_UNKNOWN       0x800C0013L")
816 cpp_quote("#define INET_E_REDIRECT_FAILED           0x800C0014L")
817 cpp_quote("#define INET_E_REDIRECT_TO_DIR           0x800C0015L")
818 cpp_quote("#define INET_E_CANNOT_LOCK_REQUEST       0x800C0016L")
819 cpp_quote("#define INET_E_ERROR_LAST                INET_E_REDIRECT_TO_DIR")
820
821 cpp_quote("HRESULT WINAPI CreateURLMoniker(IMoniker *pmkContext, LPCWSTR szURL, IMoniker **ppmk);")
822 cpp_quote("HRESULT WINAPI RegisterBindStatusCallback(IBindCtx *pbc, IBindStatusCallback *pbsc, IBindStatusCallback **ppbsc, DWORD dwReserved);")
823 cpp_quote("HRESULT WINAPI CompareSecurityIds(BYTE*,DWORD,BYTE*,DWORD,DWORD);")
824 cpp_quote("HRESULT WINAPI URLDownloadToFileA(LPUNKNOWN pCaller, LPCSTR szURL,  LPCSTR  szFileName, DWORD dwReserved, LPBINDSTATUSCALLBACK lpfnCB);")
825 cpp_quote("HRESULT WINAPI URLDownloadToFileW(LPUNKNOWN pCaller, LPCWSTR szURL, LPCWSTR szFileName, DWORD dwReserved, LPBINDSTATUSCALLBACK lpfnCB);")
826 cpp_quote("HRESULT WINAPI CoInternetGetSession(DWORD,IInternetSession**,DWORD);")
827 cpp_quote("HRESULT WINAPI MkParseDisplayNameEx(IBindCtx*,LPCWSTR,ULONG*,IMoniker**);")
828 cpp_quote("HRESULT WINAPI IsAsyncMoniker(IMoniker* pmk);")
829 cpp_quote("HRESULT WINAPI CreateAsyncBindCtx(DWORD, IBindStatusCallback*, IEnumFORMATETC*, IBindCtx**);")
830 cpp_quote("HRESULT WINAPI CoInternetCombineUrl(LPCWSTR,LPCWSTR,DWORD,LPWSTR,DWORD,DWORD*,DWORD);")
831 cpp_quote("HRESULT WINAPI CoInternetCompareUrl(LPCWSTR,LPCWSTR,DWORD);");
832 cpp_quote("HRESULT WINAPI CoInternetCreateZoneManager(IServiceProvider*, IInternetZoneManager**, DWORD);");
833
834 cpp_quote("#define OInetCombineUrl CoInternetCombineUrl")
835 cpp_quote("#define OInetCompareUrl CoInternetCompareUrl")
836 cpp_quote("#define OInetGetSession CoInternetGetSession")
837
838 cpp_quote("#define MKSYS_URLMONIKER 6")