user32: Moved win.h to the user32 directory.
[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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
18  */
19
20 import "objidl.idl";
21 import "oleidl.idl";
22 import "servprov.idl";
23 import "msxml.idl";
24
25 interface IInternetProtocolSink;
26
27 /*****************************************************************************
28  * IInternet interface
29  */
30 [
31     object,
32     uuid(79eac9e0-baf9-11ce-8c82-00aa004ba90b),
33     pointer_default(unique),
34     local
35 ]
36 interface IInternet : IUnknown
37 {
38     typedef [unique] IInternet *LPIINTERNET;
39 }
40
41 /*****************************************************************************
42  * IBinding interface
43  */
44 [
45     object,
46     uuid(79eac9c0-baf9-11ce-8c82-00aa004ba90b),
47     pointer_default(unique)
48 ]
49 interface IBinding : IUnknown
50 {
51     typedef [unique] IBinding *LPBINDING;
52
53     HRESULT Abort();
54     HRESULT Suspend();
55     HRESULT Resume();
56
57     HRESULT SetPriority(
58         [in] LONG nPriority);
59
60     HRESULT GetPriority(
61         [out] LONG * pnPriority);
62
63     [local]
64     HRESULT GetBindResult(
65         [out] CLSID *pclsidProtocol,
66         [out] DWORD *pdwResult,
67         [out] LPOLESTR *pszResult,
68         [in, out] DWORD *pdwReserved);
69
70     [call_as(GetBindResult)]
71     HRESULT RemoteGetBindResult(
72         [out] CLSID *pclsidProtocol,
73         [out] DWORD *pdwResult,
74         [out] LPOLESTR *pszResult,
75         [in] DWORD dwReserved);
76 }
77
78
79 /*****************************************************************************
80  * IBindStatusCallback interface
81  */
82 [
83     object,
84     uuid(79eac9c1-baf9-11ce-8c82-00aa004ba90b),
85     pointer_default(unique)
86 ]
87 interface IBindStatusCallback : IUnknown
88 {
89     typedef [unique] IBindStatusCallback *LPBINDSTATUSCALLBACK;
90
91     typedef enum
92     {
93         BINDVERB_GET    = 0x00000000,
94         BINDVERB_POST   = 0x00000001,
95         BINDVERB_PUT    = 0x00000002,
96         BINDVERB_CUSTOM = 0x00000003
97     } BINDVERB;
98
99     typedef enum
100     {
101         BINDINFOF_URLENCODESTGMEDDATA = 0x00000001,
102         BINDINFOF_URLENCODEDEXTRAINFO = 0x00000002
103     } BINDINFOF;
104
105     typedef enum
106     {
107         BINDF_ASYNCHRONOUS = 0x00000001,
108         BINDF_ASYNCSTORAGE = 0x00000002,
109         BINDF_NOPROGRESSIVERENDERING = 0x00000004,
110         BINDF_OFFLINEOPERATION = 0x00000008,
111         BINDF_GETNEWESTVERSION = 0x00000010,
112         BINDF_NOWRITECACHE = 0x00000020,
113         BINDF_NEEDFILE = 0x00000040,
114         BINDF_PULLDATA = 0x00000080,
115         BINDF_IGNORESECURITYPROBLEM = 0x00000100,
116         BINDF_RESYNCHRONIZE = 0x00000200,
117         BINDF_HYPERLINK = 0x00000400,
118         BINDF_NO_UI = 0x00000800,
119         BINDF_SILENTOPERATION = 0x00001000,
120         BINDF_PRAGMA_NO_CACHE = 0x00002000,
121         BINDF_GETCLASSOBJECT = 0x00004000,
122         BINDF_RESERVED_1 = 0x00008000,
123         BINDF_FREE_THREADED = 0x00010000,
124         BINDF_DIRECT_READ = 0x00020000,
125         BINDF_FORMS_SUBMIT = 0x00040000,
126         BINDF_GETFROMCACHE_IF_NET_FAIL = 0x00080000,
127         BINDF_FROMURLMON = 0x00100000,
128         BINDF_FWD_BACK = 0x00200000,
129         BINDF_PREFERDEFAULTHANDLER = 0x00400000,
130         BINDF_ENFORCERESTRICTED = 0x00800000
131     } BINDF;
132
133     typedef enum
134     {
135         URL_ENCODING_NONE         = 0x00000000,
136         URL_ENCODING_ENABLE_UTF8  = 0x10000000,
137         URL_ENCODING_DISABLE_UTF8 = 0x20000000
138     } URL_ENCODING;
139
140     typedef struct _tagBINDINFO
141     {
142         ULONG cbSize;
143         LPWSTR szExtraInfo;
144         STGMEDIUM stgmedData;
145         DWORD grfBindInfoF;
146         DWORD dwBindVerb;
147         LPWSTR szCustomVerb;
148         DWORD cbstgmedData;
149         DWORD dwOptions;
150         DWORD dwOptionsFlags;
151         DWORD dwCodePage;
152         SECURITY_ATTRIBUTES securityAttributes;
153         IID iid;
154         IUnknown *pUnk;
155         DWORD dwReserved;
156     } BINDINFO;
157
158     typedef struct _REMSECURITY_ATTRIBUTES
159     {
160         DWORD nLength;
161         DWORD lpSecurityDescriptor;
162         BOOL bInheritHandle;
163     } REMSECURITY_ATTRIBUTES, *PREMSECURITY_ATTRIBUTES, *LPREMSECURITY_ATTRIBUTES;
164
165     typedef struct _tagRemBINDINFO
166     {
167         ULONG cbSize;
168         LPWSTR szExtraInfo;
169         DWORD grfBindInfoF;
170         DWORD dwBindVerb;
171         LPWSTR szCustomVerb;
172         DWORD cbstgmedData;
173         DWORD dwOptions;
174         DWORD dwOptionsFlags;
175         DWORD dwCodePage;
176         REMSECURITY_ATTRIBUTES securityAttributes;
177         IID iid;
178         IUnknown *pUnk;
179         DWORD dwReserved;
180     } RemBINDINFO;
181
182     typedef struct tagRemFORMATETC
183     {
184         DWORD cfFormat;
185         DWORD ptd;
186         DWORD dwAspect;
187         LONG lindex;
188         DWORD tymed;
189     } RemFORMATETC, *LPREMFORMATETC;
190
191     typedef enum
192     {
193         BSCF_FIRSTDATANOTIFICATION = 0x01,
194         BSCF_INTERMEDIATEDATANOTIFICATION = 0x02,
195         BSCF_LASTDATANOTIFICATION = 0x04,
196         BSCF_DATAFULLYAVAILABLE = 0x08,
197         BSCF_AVAILABLEDATASIZEUNKNOWN = 0x10
198     } BSCF;
199
200     typedef enum BINDSTATUS
201     {
202         BINDSTATUS_FINDINGRESOURCE = 1,
203         BINDSTATUS_CONNECTING,
204         BINDSTATUS_REDIRECTING,
205         BINDSTATUS_BEGINDOWNLOADDATA,
206         BINDSTATUS_DOWNLOADINGDATA,
207         BINDSTATUS_ENDDOWNLOADDATA,
208         BINDSTATUS_BEGINDOWNLOADCOMPONENTS,
209         BINDSTATUS_INSTALLINGCOMPONENTS,
210         BINDSTATUS_ENDDOWNLOADCOMPONENTS,
211         BINDSTATUS_USINGCACHEDCOPY,
212         BINDSTATUS_SENDINGREQUEST,
213         BINDSTATUS_CLASSIDAVAILABLE,
214         BINDSTATUS_MIMETYPEAVAILABLE,
215         BINDSTATUS_CACHEFILENAMEAVAILABLE,
216         BINDSTATUS_BEGINSYNCOPERATION,
217         BINDSTATUS_ENDSYNCOPERATION,
218         BINDSTATUS_BEGINUPLOADDATA,
219         BINDSTATUS_UPLOADINGDATA,
220         BINDSTATUS_ENDUPLOADINGDATA,
221         BINDSTATUS_PROTOCOLCLASSID,
222         BINDSTATUS_ENCODING,
223         BINDSTATUS_VERIFIEDMIMETYPEAVAILABLE,
224         BINDSTATUS_CLASSINSTALLLOCATION,
225         BINDSTATUS_DECODING,
226         BINDSTATUS_LOADINGMIMEHANDLER,
227         BINDSTATUS_CONTENTDISPOSITIONATTACH,
228         BINDSTATUS_FILTERREPORTMIMETYPE,
229         BINDSTATUS_CLSIDCANINSTANTIATE,
230         BINDSTATUS_IUNKNOWNAVAILABLE,
231         BINDSTATUS_DIRECTBIND,
232         BINDSTATUS_RAWMIMETYPE,
233         BINDSTATUS_PROXYDETECTING,
234         BINDSTATUS_ACCEPTRANGES,
235         BINDSTATUS_COOKIE_SENT,
236         BINDSTATUS_COMPACT_POLICY_RECEIVED,
237         BINDSTATUS_COOKIE_SUPPRESSED,
238         BINDSTATUS_COOKIE_STATE_UNKNOWN,
239         BINDSTATUS_COOKIE_STATE_ACCEPT,
240         BINDSTATUS_COOKIE_STATE_REJECT,
241         BINDSTATUS_COOKIE_STATE_PROMPT,
242         BINDSTATUS_COOKIE_STATE_LEASH,
243         BINDSTATUS_COOKIE_STATE_DOWNGRADE,
244         BINDSTATUS_POLICY_HREF,
245         BINDSTATUS_P3P_HEADER,
246         BINDSTATUS_SESSION_COOKIE_RECEIVED,
247         BINDSTATUS_PERSISTENT_COOKIE_RECEIVED,
248         BINDSTATUS_SESSION_COOKIES_ALLOWED,
249         BINDSTATUS_CACHECONTROL,
250         BINDSTATUS_CONTENTDISPOSITIONFILENAME,
251         BINDSTATUS_MIMETEXTPLAINMISMATCH,
252         BINDSTATUS_PUBLISHERAVAILABLE,
253         BINDSTATUS_DISPLAYNAMEAVAILABLE
254     } BINDSTATUS;
255
256
257     HRESULT OnStartBinding(
258         [in] DWORD dwReserved,
259         [in] IBinding * pib);
260
261     HRESULT GetPriority(
262         [out] LONG * pnPriority);
263
264     HRESULT OnLowResource(
265         [in] DWORD reserved);
266
267     HRESULT OnProgress(
268         [in] ULONG ulProgress,
269         [in] ULONG ulProgressMax,
270         [in] ULONG ulStatusCode,
271         [in] LPCWSTR szStatusText);
272
273     HRESULT OnStopBinding(
274         [in] HRESULT hresult,
275         [in, unique] LPCWSTR szError);
276
277     [local]
278     HRESULT GetBindInfo(
279         [out] DWORD *grfBINDF,
280         [in, out, unique] BINDINFO * pbindinfo);
281
282     [call_as(GetBindInfo)]
283     HRESULT RemoteGetBindInfo(
284         [out] DWORD *grfBINDF,
285         [in, out, unique] RemBINDINFO * pbindinfo,
286         [in, out, unique] RemSTGMEDIUM* pstgmed);
287
288     [local]
289     HRESULT OnDataAvailable(
290         [in] DWORD grfBSCF,
291         [in] DWORD dwSize,
292         [in] FORMATETC* pformatetc,
293         [in] STGMEDIUM* pstgmed);
294
295     [call_as(OnDataAvailable)]
296     HRESULT RemoteOnDataAvailable(
297         [in] DWORD grfBSCF,
298         [in] DWORD dwSize,
299         [in] RemFORMATETC *pformatetc,
300         [in] RemSTGMEDIUM* pstgmed);
301
302     HRESULT OnObjectAvailable(
303         [in] REFIID riid,
304         [in, iid_is(riid)] IUnknown* punk);
305 }
306
307 /*****************************************************************************
308  * IAuthenticate interface
309  */
310 [
311     local,
312     object,
313     uuid(79EAC9D0-BAf9-11CE-8C82-00AA004BA90B),
314     pointer_default(unique)
315 ]
316 interface IAuthenticate : IUnknown
317 {
318     typedef [unique] IAuthenticate *LPAUTHENTICATION;
319
320     HRESULT Authenticate(
321         [out] HWND* phwnd,
322         [out] LPWSTR *pszUsername,
323         [out] LPWSTR *pszPassword);
324 }
325
326 /*****************************************************************************
327  * IHttpNegotiate interface
328  */
329 [
330     object,
331     uuid(79EAC9D2-BAF9-11CE-8C82-00AA004BA90B),
332     pointer_default(unique)
333 ]
334 interface IHttpNegotiate : IUnknown
335 {
336     typedef [unique] IHttpNegotiate *LPHTTPNEGOTIATE;
337
338     HRESULT BeginningTransaction(
339         [in] LPCWSTR szURL,
340         [in, unique] LPCWSTR szHeaders,
341         [in] DWORD dwReserved,
342         [out] LPWSTR *pszAdditionalHeaders);
343
344     HRESULT OnResponse(
345         [in] DWORD dwResponseCode,
346         [in, unique] LPCWSTR szResponseHeaders,
347         [in, unique] LPCWSTR szRequestHeaders,
348         [out] LPWSTR *pszAdditionalRequestHeaders);
349 }
350
351 /*****************************************************************************
352  * IHttpNegotiate2 interface
353  */
354 [
355     object,
356     uuid(4F9F9FCB-E0F4-48eb-B7AB-FA2EA9365CB4),
357     pointer_default(unique)
358 ]
359 interface IHttpNegotiate2 : IHttpNegotiate
360 {
361     typedef [unique] IHttpNegotiate2 *LPHTTPNEGOTIATE2;
362
363     HRESULT GetRootSecurityId(
364          [out, size_is(*pcbSecurityId)] BYTE *pbSecurityId,
365          [in, out] DWORD *pcbSecurityId,
366          [in] DWORD_PTR dwReserved);
367 }
368
369 /*****************************************************************************
370  * IBindHost interface
371  */
372 cpp_quote("#define SID_IBindHost IID_IBindHost")
373 cpp_quote("#define SID_SBindHost IID_IBindHost")
374 [
375     object,
376     uuid(fc4801a1-2ba9-11cf-a229-00aa003d7352),
377     pointer_default(unique)
378 ]
379 interface IBindHost : IUnknown
380 {
381     typedef [unique] IBindHost *LPBINDHOST;
382
383     HRESULT CreateMoniker(
384         [in] LPOLESTR szName,
385         [in] IBindCtx *pBC,
386         [out] IMoniker** ppmk,
387         [in] DWORD dwReserved);
388
389     [local]
390     HRESULT MonikerBindToStorage(
391         [in] IMoniker *pMk,
392         [in] IBindCtx *pBC,
393         [in] IBindStatusCallback *pBSC,
394         [in] REFIID riid,
395         [out] void **ppvObj);
396
397     [call_as(MonikerBindToStorage)]
398     HRESULT RemoteMonikerBindToStorage(
399         [in, unique] IMoniker *pMk,
400         [in, unique] IBindCtx *pBC,
401         [in, unique] IBindStatusCallback *pBSC,
402         [in] REFIID riid,
403         [out, iid_is(riid)] IUnknown **ppvObj);
404
405     [local]
406     HRESULT MonikerBindToObject(
407         [in] IMoniker *pMk,
408         [in] IBindCtx *pBC,
409         [in] IBindStatusCallback *pBSC,
410         [in] REFIID riid,
411         [out] void **ppvObj);
412
413     [call_as(MonikerBindToObject)]
414     HRESULT RemoteMonikerBindToObject(
415         [in, unique] IMoniker *pMk,
416         [in, unique] IBindCtx *pBC,
417         [in, unique] IBindStatusCallback *pBSC,
418         [in] REFIID riid,
419         [out, iid_is(riid)] IUnknown **ppvObj);
420 }
421
422
423 /*****************************************************************************
424  * IWinInetInfo interface
425  */
426 [
427     object,
428     uuid(79eac9d6-bafa-11ce-8c82-00aa004ba90b),
429     pointer_default(unique)
430 ]
431 interface IWinInetInfo : IUnknown
432 {
433     typedef [unique] IWinInetInfo *LPWININETINFO;
434
435     [local]
436     HRESULT QueryOption(
437         [in] DWORD dwOption,
438         [in, out, size_is(*pcbBuf)] LPVOID pBuffer,
439         [in, out] DWORD *pcbBuf);
440
441     [call_as(QueryOption)]
442     HRESULT RemoteQueryOption(
443         [in] DWORD  dwOption,
444         [in, out, size_is(*pcbBuf)] BYTE *pBuffer,
445         [in, out] DWORD *pcbBuf);
446 }
447
448
449
450 /*****************************************************************************
451  * IWinInetHttpInfo interface
452  */
453 [
454     object,
455     uuid(79eac9d8-bafa-11ce-8c82-00aa004ba90b),
456     pointer_default(unique)
457 ]
458 interface IWinInetHttpInfo : IWinInetInfo
459 {
460     typedef [unique] IWinInetHttpInfo *LPWININETHTTPINFO;
461
462     [local]
463     HRESULT QueryInfo(
464         [in] DWORD dwOption,
465         [in, out,size_is(*pcbBuf)] LPVOID pBuffer,
466         [in, out] DWORD *pcbBuf,
467         [in, out] DWORD *pdwFlags,
468         [in, out] DWORD *pdwReserved);
469
470     [call_as(QueryInfo)]
471     HRESULT RemoteQueryInfo(
472         [in] DWORD dwOption,
473         [in,out,size_is(*pcbBuf)] BYTE *pBuffer,
474         [in, out] DWORD *pcbBuf,
475         [in, out] DWORD *pdwFlags,
476         [in, out] DWORD *pdwReserved);
477 }
478
479 /*****************************************************************************
480  * IWindowForBindingUI interface
481  */
482 [
483     local,
484     object,
485     uuid(79eac9d5-bafa-11ce-8c82-00aa004ba90b),
486     pointer_default(unique)
487 ]
488 interface IWindowForBindingUI : IUnknown
489 {
490     typedef [unique] IWindowForBindingUI *LPWINDOWFORBINDINGUI;
491
492     HRESULT GetWindow(
493         [in] REFGUID rguidReason,
494         [out] HWND *phwnd);
495 }
496
497 /*****************************************************************************
498  * IHttpSecurity interface
499  */
500 [
501     object,
502     uuid(79eac9d7-bafa-11ce-8c82-00aa004ba90b),
503     pointer_default(unique)
504 ]
505 interface IHttpSecurity : IWindowForBindingUI
506 {
507     typedef [unique] IHttpSecurity *LPHTTPSECURITY;
508
509     HRESULT OnSecurityProblem(
510         [in] DWORD dwProblem);
511 }
512
513
514 /*****************************************************************************
515  * IPersistMoniker interface
516  */
517 [
518     object,
519     uuid(79eac9c9-baf9-11ce-8c82-00aa004ba90b),
520     pointer_default(unique)
521 ]
522 interface IPersistMoniker : IUnknown
523 {
524     typedef [unique] IPersistMoniker *LPPERSISTMONIKER;
525
526     HRESULT GetClassID(
527         [out] CLSID *pClassID);
528
529     HRESULT IsDirty();
530
531     HRESULT Load(
532         [in] BOOL fFullyAvailable,
533         [in] IMoniker *pimkName,
534         [in] LPBC pibc,
535         [in] DWORD grfMode);
536
537     HRESULT Save(
538         [in] IMoniker *pimkName,
539         [in] LPBC pbc,
540         [in] BOOL fRemember);
541
542     HRESULT SaveCompleted(
543         [in] IMoniker *pimkName,
544         [in] LPBC pibc);
545
546     HRESULT GetCurMoniker(
547         [out] IMoniker **ppimkName);
548 }
549
550 /*****************************************************************************
551  * IMonikerProp interface
552  */
553 [
554     object,
555     uuid(A5CA5F7F-1847-4D87-9C5B-918509F7511D),
556     pointer_default(unique)
557 ]
558 interface IMonikerProp : IUnknown
559 {
560     typedef [unique] IMonikerProp *LPMONIKERPROP;
561
562     typedef enum {
563         MIMETYPEPROP        = 0,
564         USE_SRC_URL         = 1,
565         CLASSIDPROP         = 2,
566         TRUSTEDDOWNLOADPROP = 3,
567         POPUPLEVELPROP      = 4
568     } MONIKERPROPERTY;
569
570     HRESULT PutProperty(
571         [in] MONIKERPROPERTY mkp,
572         [in] LPCWSTR val);
573 }
574
575 cpp_quote("#ifndef _LPBINDPROTOCOL_DEFINED")
576 cpp_quote("#define _LPBINDPROTOCOL_DEFINED")
577
578 /*****************************************************************************
579  * IBindProtocol interface
580  */
581 [
582     local,
583     object,
584     uuid(79EAC9CD-BAF9-11CE-8C82-00AA004BA90B),
585     pointer_default(unique)
586 ]
587 interface IBindProtocol : IUnknown
588 {
589     typedef [unique] IBindProtocol *LPBINDPROTOCOL;
590
591     HRESULT CreateBinding(
592         [in] LPCWSTR szUrl,
593         [in] IBindCtx *pbc,
594         [out] IBinding **ppb);
595 }
596
597 cpp_quote("#endif /* !defined _LPBINDPROTOCOL_DEFINED */")
598
599 /*****************************************************************************
600  * IInternetBindInfo interface
601  */
602 [
603     local,
604     object,
605     uuid(79EAC9E1-BAF9-11CE-8C82-00AA004BA90B),
606     pointer_default(unique)
607 ]
608 interface IInternetBindInfo : IUnknown
609 {
610     typedef [unique] IInternetBindInfo *LPIINTERNETBINDINFO;
611
612     typedef enum tagBINDSTRING
613     {
614         BINDSTRING_HEADERS = 1,
615         BINDSTRING_ACCEPT_MIMES,
616         BINDSTRING_EXTRA_URL,
617         BINDSTRING_LANGUAGE,
618         BINDSTRING_USERNAME,
619         BINDSTRING_PASSWORD,
620         BINDSTRING_UA_PIXELS,
621         BINDSTRING_UA_COLOR,
622         BINDSTRING_OS,
623         BINDSTRING_USER_AGENT,
624         BINDSTRING_ACCEPT_ENCODINGS,
625         BINDSTRING_POST_COOKIE,
626         BINDSTRING_POST_DATA_MIME,
627         BINDSTRING_URL,
628         BINDSTRING_IID,
629         BINDSTRING_FLAG_BIND_TO_OBJECT,
630         BINDSTRING_PTR_BIND_CONTEXT
631     } BINDSTRING;
632
633     HRESULT GetBindInfo(
634         [out] DWORD *grfBINDF,
635         [in, out, unique] BINDINFO *pbindinfo);
636
637     HRESULT GetBindString(
638         [in]      ULONG ulStringType,
639         [in, out] LPOLESTR *ppwzStr,
640         [in]      ULONG cEl,
641         [in, out] ULONG *pcElFetched);
642 }
643
644 /*****************************************************************************
645  * IInternetPriority interface
646  */
647 [
648     local,
649     object,
650     uuid(79EAC9EB-BAF9-11CE-8C82-00AA004BA90B),
651     pointer_default(unique)
652 ]
653 interface IInternetPriority : IUnknown
654 {
655     typedef [unique] IInternetPriority *LPIINTERNETPRIORITY;
656
657     HRESULT SetPriority([in] LONG nPriority);
658     HRESULT GetPriority([out] LONG *pnPriority);
659 }
660
661 /*****************************************************************************
662  * IInternetProtocolRoot interface
663  */
664 [
665     local,
666     object,
667     uuid(79EAC9E3-BAF9-11CE-8C82-00AA004BA90B),
668     pointer_default(unique)
669 ]
670 interface IInternetProtocolRoot : IUnknown
671 {
672     typedef [unique] IInternetProtocolRoot *LPIINTERNETPROTOCOLROOT;
673
674     typedef enum _tagPI_FLAGS
675     {
676         PI_PARSE_URL         = 0x00000001,
677         PI_FILTER_MODE       = 0x00000002,
678         PI_FORCE_ASYNC       = 0x00000004,
679         PI_USE_WORKERTHREAD  = 0x00000008,
680         PI_MIMEVERIFICATION  = 0x00000010,
681         PI_CLSIDLOOKUP       = 0x00000020,
682         PI_DATAPROGRESS      = 0x00000040,
683         PI_SYNCHRONOUS       = 0x00000080,
684         PI_APARTMENTTHREADED = 0x00000100,
685         PI_CLASSINSTALL      = 0x00000200,
686         PD_FORCE_SWITCH      = 0x00010000
687     } PI_FLAGS;
688
689     typedef struct _tagPROTOCOLDATA
690     {
691         DWORD grfFlags;
692         DWORD dwState;
693         LPVOID pData;
694         ULONG cbData;
695     } PROTOCOLDATA;
696
697     HRESULT Start(
698         [in] LPCWSTR szUrl,
699         [in] IInternetProtocolSink *pOIProtSink,
700         [in] IInternetBindInfo *pOIBindInfo,
701         [in] DWORD grfPI,
702         [in] DWORD dwReserved);
703
704     HRESULT Continue(
705         [in] PROTOCOLDATA *pProtocolData);
706
707     HRESULT Abort(
708         [in] HRESULT hrReason,
709         [in] DWORD dwOptions);
710
711     HRESULT Terminate(
712         [in] DWORD dwOptions);
713
714     HRESULT Suspend();
715
716     HRESULT Resume();
717 }
718
719 /*****************************************************************************
720  * IInternetProtocolSink interface
721  */
722 [
723     local,
724     object,
725     uuid(79EAC9E5-BAF9-11CE-8C82-00AA004BA90B),
726     pointer_default(unique)
727 ]
728 interface IInternetProtocolSink : IUnknown
729 {
730     typedef [unique] IInternetProtocolSink *LPIINTERNETPROTOCOLSINK;
731
732     HRESULT Switch(
733         [in] PROTOCOLDATA *pProtocolData);
734
735     HRESULT ReportProgress(
736         [in] ULONG ulStatusCode,
737         [in] LPCWSTR szStatusText);
738
739     HRESULT ReportData(
740         [in] DWORD grfBSCF,
741         [in] ULONG ulProgress,
742         [in] ULONG ulProgressMax);
743
744     HRESULT ReportResult(
745         [in] HRESULT hrResult,
746         [in] DWORD dwError,
747         [in] LPCWSTR szResult);
748 }
749
750 /*****************************************************************************
751  * IInternetProtocol interface
752  */
753 [
754     local,
755     object,
756     uuid(79EAC9E4-BAF9-11CE-8C82-00AA004BA90B),
757     pointer_default(unique)
758 ]
759 interface IInternetProtocol : IInternetProtocolRoot
760 {
761     typedef [unique] IInternetProtocol *LPIINTERNETPROTOCOL;
762
763     HRESULT Read(
764         [in,out, size_is(cb), length_is(*pcbRead)] void *pv,
765         [in]  ULONG cb,
766         [out] ULONG *pcbRead);
767
768     HRESULT Seek(
769         [in]  LARGE_INTEGER dlibMove,
770         [in]  DWORD dwOrigin,
771         [out] ULARGE_INTEGER *plibNewPosition);
772
773     HRESULT LockRequest(
774         [in] DWORD dwOptions);
775
776     HRESULT UnlockRequest();
777 }
778
779 /*****************************************************************************
780  * IInternetProtocolInfo interface
781  */
782 [
783     local,
784     object,
785     uuid(79eac9ec-baf9-11ce-8c82-00aa004ba90b),
786     pointer_default(unique)
787 ]
788 interface IInternetProtocolInfo : IUnknown
789 {
790     typedef [unique] IInternetProtocolInfo *LPIINTERNETPROTOCOLINFO;
791
792     typedef enum _tagPARSEACTION
793     {
794         PARSE_CANONICALIZE = 1,
795         PARSE_FRIENDLY,
796         PARSE_SECURITY_URL,
797         PARSE_ROOTDOCUMENT,
798         PARSE_DOCUMENT,
799         PARSE_ANCHOR,
800         PARSE_ENCODE,
801         PARSE_DECODE,
802         PARSE_PATH_FROM_URL,
803         PARSE_URL_FROM_PATH,
804         PARSE_MIME,
805         PARSE_SERVER,
806         PARSE_SCHEMA,
807         PARSE_SITE,
808         PARSE_DOMAIN,
809         PARSE_LOCATION,
810         PARSE_SECURITY_DOMAIN,
811         PARSE_ESCAPE,
812         PARSE_UNESCAPE
813     } PARSEACTION;
814
815     typedef enum _tagPSUACTION
816     {
817         PSU_DEFAULT = 1,
818         PSU_SECURITY_URL_ONLY
819     } PSUACTION;
820
821     typedef enum _tagQUERYOPTION
822     {
823         QUERY_EXPIRATION_DATE = 1,
824         QUERY_TIME_OF_LAST_CHANGE,
825         QUERY_CONTENT_ENCODING,
826         QUERY_CONTENT_TYPE,
827         QUERY_REFRESH,
828         QUERY_RECOMBINE,
829         QUERY_CAN_NAVIGATE,
830         QUERY_USES_NETWORK,
831         QUERY_IS_CACHED,
832         QUERY_IS_INSTALLEDENTRY,
833         QUERY_IS_CACHED_OR_MAPPED,
834         QUERY_USES_CACHE,
835         QUERY_IS_SECURE,
836         QUERY_IS_SAFE
837     } QUERYOPTION;
838
839     HRESULT ParseUrl(
840         [in] LPCWSTR pwzUrl,
841         [in] PARSEACTION ParseAction,
842         [in] DWORD dwParseFlags,
843         [out] LPWSTR pwzResult,
844         [in] DWORD cchResult,
845         [out] DWORD *pcchResult,
846         [in] DWORD dwReserved);
847
848     HRESULT CombineUrl(
849         [in] LPCWSTR pwzBaseUrl,
850         [in] LPCWSTR pwzRelativeUrl,
851         [in] DWORD dwCombineFlags,
852         [out] LPWSTR pwzResult,
853         [in] DWORD cchResult,
854         [out] DWORD *pcchResult,
855         [in] DWORD dwReserved);
856
857     HRESULT CompareUrl(
858         [in] LPCWSTR pwzUrl1,
859         [in] LPCWSTR pwzUrl2,
860         [in] DWORD dwCompareFlags);
861
862     HRESULT QueryInfo(
863         [in] LPCWSTR pwzUrl,
864         [in] QUERYOPTION OueryOption,
865         [in] DWORD dwQueryFlags,
866         [in, out,size_is(*pcbBuf)] LPVOID pBuffer,
867         [in] DWORD cbBuffer,
868         [in, out] DWORD *pcbBuf,
869         [in] DWORD dwReserved);
870 }
871
872 /*****************************************************************************
873  * IInternetSession interface
874  */
875 [
876     local,
877     object,
878     uuid(79eac9e7-baf9-11ce-8c82-00aa004ba90b),
879     pointer_default(unique)
880 ]
881 interface IInternetSession : IUnknown
882 {
883     typedef [unique] IInternetSession *LPIINTERNETSESSION;
884
885     typedef enum _tagOIBDG_FLAGS
886     {
887         OIBDG_APARTMENTTHREADED = 0x0100,
888         OIBDG_DATAONLY          = 0x1000
889     } OIBDG_FLAGS;
890
891     HRESULT RegisterNameSpace(
892         [in] IClassFactory *pCF,
893         [in] REFCLSID rclsid,
894         [in] LPCWSTR pwzProtocol,
895         [in] ULONG cPatterns,
896         [in] const LPCWSTR *ppwzPatterns,
897         [in] DWORD dwReserved);
898
899     HRESULT UnregisterNameSpace(
900         [in] IClassFactory *pCF,
901         [in] LPCWSTR pszProtocol);
902
903     HRESULT RegisterMimeFilter(
904         [in] IClassFactory *pCF,
905         [in] REFCLSID rclsid,
906         [in] LPCWSTR pwzType);
907
908     HRESULT UnregisterMimeFilter(
909         [in] IClassFactory *pCF,
910         [in] LPCWSTR pwzType);
911
912     HRESULT CreateBinding(
913         [in] LPBC pBC,
914         [in] LPCWSTR szUrl,
915         [in] IUnknown *pUnkOuter,
916         [out, unique] IUnknown **ppUnk,
917         [out, unique] IInternetProtocol **ppOInetProt,
918         [in] DWORD dwOption);
919
920     HRESULT SetSessionOption(
921         [in] DWORD dwOption,
922         [in] LPVOID pBuffer,
923         [in] DWORD dwBufferLength,
924         [in] DWORD dwReserved);
925 }
926
927 /*****************************************************************************
928  * IInternetSecurityMgrSite interface
929  */
930 [
931     local,
932     object,
933     uuid(79eac9ed-baf9-11ce-8c82-00aa004ba90b),
934     pointer_default(unique)
935 ]
936 interface IInternetSecurityMgrSite : IUnknown
937 {
938     HRESULT GetWindow(
939         [out] HWND *phwnd);
940
941     HRESULT EnableModeless(
942         [in] BOOL fEnable);
943 }
944
945
946 /*****************************************************************************
947  * IInternetSecurityManager interface
948  */
949 cpp_quote("#define SID_SInternetSecurityManager IID_IInternetSecurityManager")
950
951 [
952     object,
953     uuid(79eac9ee-baf9-11ce-8c82-00aa004ba90b),
954     pointer_default(unique)
955 ]
956 interface IInternetSecurityManager : IUnknown
957 {
958     HRESULT SetSecuritySite(
959         [in, unique] IInternetSecurityMgrSite *pSite);
960
961     HRESULT GetSecuritySite(
962         [out] IInternetSecurityMgrSite **ppSite);
963
964     HRESULT MapUrlToZone(
965         [in] LPCWSTR pwszUrl,
966         [out] DWORD *pdwZone,
967         [in] DWORD dwFlags);
968
969 cpp_quote("#define MAX_SIZE_SECURITY_ID 512")
970
971     HRESULT GetSecurityId(
972         [in] LPCWSTR pwszUrl,
973         [out, size_is(*pcbSecurityId)] BYTE *pbSecurityId,
974         [in, out] DWORD *pcbSecurityId,
975         [in] DWORD_PTR dwReserved);
976
977
978     typedef enum {
979         PUAF_DEFAULT                = 0x00,
980         PUAF_NOUI                   = 0x01,
981         PUAF_ISFILE                 = 0x02,
982         PUAF_WARN_IF_DENIED         = 0x04,
983         PUAF_FORCEUI_FOREGROUND     = 0x08,
984         PUAF_CHECK_TIPS             = 0x10
985     } PUAF;
986
987     HRESULT ProcessUrlAction(
988         [in] LPCWSTR pwszUrl,
989         [in] DWORD dwAction,
990         [out, size_is(cbPolicy)] BYTE *pPolicy,
991         [in] DWORD cbPolicy,
992         [in] BYTE *pContext,
993         [in] DWORD cbContext,
994         [in] DWORD dwFlags,
995         [in] DWORD dwReserved);
996
997     HRESULT QueryCustomPolicy(
998         [in] LPCWSTR pwszUrl,
999         [in] REFGUID guidKey,
1000         [out, size_is(,*pcbPolicy)] BYTE **ppPolicy,
1001         [out] DWORD *pcbPolicy,
1002         [in] BYTE *pContext,
1003         [in] DWORD cbContext,
1004         [in] DWORD dwReserved);
1005
1006     typedef enum {
1007         SZM_CREATE = 0x0,
1008         SZM_DELETE = 0x1
1009     } SZM_FLAGS;
1010
1011     HRESULT SetZoneMapping(
1012         [in] DWORD dwZone,
1013         [in] LPCWSTR lpszPattern,
1014         [in] DWORD dwFlags);
1015
1016     HRESULT GetZoneMappings(
1017         [in] DWORD dwZone,
1018         [out] IEnumString **ppenumString,
1019         [in] DWORD dwFlags);
1020 }
1021
1022 /*****************************************************************************
1023  * IInternetZoneManager interface
1024  */
1025 [
1026     local,
1027     object,
1028     uuid(79EAC9EF-BAf9-11CE-8C82-00AA004BA90B),
1029     pointer_default(unique)
1030 ]
1031 interface IInternetZoneManager : IUnknown
1032 {
1033     typedef [unique] IInternetZoneManager* LPURLZONEMANAGER;
1034
1035     typedef enum tagURLZONE
1036     {
1037         URLZONE_PREDEFINED_MIN  = 0,
1038         URLZONE_LOCAL_MACHINE   = 0,
1039         URLZONE_INTRANET        = 1,
1040         URLZONE_TRUSTED         = 2,
1041         URLZONE_INTERNET        = 3,
1042         URLZONE_UNTRUSTED       = 4,
1043         URLZONE_PREDEFINED_MAX  = 999,
1044         URLZONE_USER_MIN        = 1000,
1045         URLZONE_USER_MAX        = 10000,
1046     }  URLZONE;
1047
1048     typedef enum tagURLTEMPLATE
1049     {
1050         URLTEMPLATE_CUSTOM         = 0x00000,
1051         URLTEMPLATE_PREDEFINED_MIN = 0x10000,
1052         URLTEMPLATE_LOW            = 0x10000,
1053         URLTEMPLATE_MEDIUM         = 0x11000,
1054         URLTEMPLATE_HIGH           = 0x12000,
1055         URLTEMPLATE_PREDEFINED_MAX = 0x20000,
1056     } URLTEMPLATE ;
1057
1058     typedef enum {
1059         ZAFLAGS_CUSTOM_EDIT            = 0x00000001,
1060         ZAFLAGS_ADD_SITES              = 0x00000002,
1061         ZAFLAGS_REQUIRE_VERIFICATION   = 0x00000004,
1062         ZAFLAGS_INCLUDE_PROXY_OVERRIDE = 0x00000008,
1063         ZAFLAGS_INCLUDE_INTRANET_SITES = 0x00000010,
1064         ZAFLAGS_NO_UI                  = 0x00000020,
1065         ZAFLAGS_SUPPORTS_VERIFICATION  = 0x00000040,
1066         ZAFLAGS_UNC_AS_INTRANET        = 0x00000080,
1067     } ZAFLAGS ;
1068
1069     enum {
1070         MAX_ZONE_PATH        = 260,
1071         MAX_ZONE_DESCRIPTION = 200
1072     };
1073
1074     typedef struct _ZONEATTRIBUTES {
1075         ULONG cbSize;
1076         WCHAR szDisplayName[MAX_ZONE_PATH];
1077         WCHAR szDescription[MAX_ZONE_DESCRIPTION];
1078         WCHAR szIconPath[MAX_ZONE_PATH];
1079         DWORD dwTemplateMinLevel;
1080         DWORD dwTemplateRecommended;
1081         DWORD dwTemplateCurrentLevel;
1082         DWORD dwFlags;
1083     } ZONEATTRIBUTES, *LPZONEATTRIBUTES;
1084
1085     typedef enum _URLZONEREG {
1086         URLZONEREG_DEFAULT,
1087         URLZONEREG_HKLM,
1088         URLZONEREG_HKCU
1089     } URLZONEREG;
1090
1091     HRESULT GetZoneAttributes(
1092         [in]              DWORD dwZone,
1093         [in, out, unique] ZONEATTRIBUTES* pZoneAttributes);
1094
1095     HRESULT SetZoneAttributes(
1096         [in] DWORD dwZone,
1097         [in] ZONEATTRIBUTES* pZoneAttributes);
1098
1099     HRESULT GetZoneCustomPolicy(
1100         [in]  DWORD dwZone,
1101         [in]  REFGUID guidKey,
1102         [out] BYTE **ppPolicy,
1103         [out] DWORD* pcbPolicy,
1104         [in]  URLZONEREG ulrZoneReg);
1105
1106     HRESULT SetZoneCustomPolicy(
1107         [in] DWORD dwZone,
1108         [in] REFGUID guidKey,
1109         [in] BYTE *ppPolicy,
1110         [in] DWORD pcbPolicy,
1111         [in] URLZONEREG ulrZoneReg);
1112
1113     HRESULT GetZoneActionPolicy(
1114         [in]  DWORD dwZone,
1115         [in]  DWORD dwAction,
1116         [out] BYTE* pPolicy,
1117         [in]  DWORD cbPolicy,
1118         [in]  URLZONEREG urlZoneReg);
1119
1120     HRESULT SetZoneActionPolicy(
1121         [in] DWORD dwZone,
1122         [in] DWORD dwAction,
1123         [in] BYTE* pPolicy,
1124         [in] DWORD cbPolicy,
1125         [in] URLZONEREG urlZoneReg);
1126
1127     HRESULT PromptAction(
1128         [in] DWORD dwAction,
1129         [in] HWND hwndParent,
1130         [in] LPCWSTR pwszUrl,
1131         [in] LPCWSTR pwszText,
1132         [in] DWORD dwPromptFlags );
1133
1134     HRESULT LogAction(
1135         [in] DWORD dwAction,
1136         [in] LPCWSTR pwszUrl,
1137         [in] LPCWSTR pwszText,
1138         [in] DWORD dwLogFlags);
1139
1140     HRESULT CreateZoneEnumerator(
1141         [out] DWORD* pdwEnum,
1142         [out] DWORD* pdwCount,
1143         [in]  DWORD dwFlags);
1144
1145     HRESULT GetZoneAt(
1146         [in]  DWORD dwEnum,
1147         [in]  DWORD dwIndex,
1148         [out] DWORD* pdwZone);
1149
1150     HRESULT DestroyZoneEnumerator(
1151         [in] DWORD dwEnum);
1152
1153     HRESULT CopyTemplatePoliciesToZone(
1154         [in] DWORD dwTemplate,
1155         [in] DWORD dwZone,
1156         [in] DWORD dwReserved);
1157 }
1158
1159 typedef struct _tagSOFTDISTINFO
1160 {
1161     ULONG cbSize;
1162     DWORD dwFlags;
1163     DWORD dwAdState;
1164     LPWSTR szTitle;
1165     LPWSTR szAbstract;
1166     LPWSTR szHREF;
1167     DWORD dwInstalledVersionMS;
1168     DWORD dwInstalledVersionLS;
1169     DWORD dwUpdateVersionMS;
1170     DWORD dwUpdateVersionLS;
1171     DWORD dwAdvertisedVersionMS;
1172     DWORD dwAdvertisedVersionLS;
1173     DWORD dwReserved;
1174 } SOFTDISTINFO, *LPSOFTDISTINFO;
1175
1176 typedef struct _tagCODEBASEHOLD
1177 {
1178     DWORD cbSize;
1179     LPWSTR szDistUnit;
1180     LPWSTR szCodeBase;
1181     DWORD dwVersionMS;
1182     DWORD dwVersionLS;
1183     DWORD dwStyle;
1184 } CODEBASEHOLD, *LPCODEBASEHOLD;
1185
1186 [
1187     local,
1188     object,
1189     uuid(b15b8dc1-c7e1-11d0-8680-00aa00bdcb71),
1190     pointer_default(unique)
1191 ]
1192 interface ISoftDistExt : IUnknown
1193 {
1194     HRESULT ProcessSoftDist(
1195         [in] LPCWSTR szCDFURL,
1196         [in] IXMLElement *pSoftDistElement,
1197         [in, out] LPSOFTDISTINFO lpsdi );
1198
1199     HRESULT GetFirstCodeBase(
1200         [in] LPWSTR *szCodeBase,
1201         [in] LPDWORD dwMaxSize );
1202
1203     HRESULT GetNextCodeBase(
1204         [in] LPWSTR *szCodeBase,
1205         [in] LPDWORD dwMaxSize );
1206
1207     HRESULT AsyncInstallDistributionUnit(
1208         [in] IBindCtx *pbc,
1209         [in] LPVOID lpReserved,
1210         [in] DWORD flags,
1211         [in] LPCODEBASEHOLD lpcbh);
1212 }
1213
1214 cpp_quote("DEFINE_GUID(CLSID_InternetSecurityManager, 0x7b8a2d94, 0x0ac9, 0x11d1, 0x89, 0x6c, 0x00, 0xc0, 0x4f, 0xB6, 0xbf, 0xc4);")
1215 cpp_quote("DEFINE_GUID(CLSID_InternetZoneManager, 0x7B8A2D95, 0x0AC9, 0x11D1, 0x89, 0x6C, 0x00, 0xC0, 0x4F, 0xB6, 0xBF, 0xC4);")
1216 cpp_quote("DEFINE_GUID(IID_IAsyncMoniker, 0x79EAC9D3, 0xBAF9, 0x11CE, 0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0x0B);")
1217 cpp_quote("DEFINE_GUID(IID_IAsyncBindCtx, 0x79EAC9D4, 0xBAF9, 0x11CE, 0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0x0B);")
1218 cpp_quote("DEFINE_GUID(CLSID_StdURLMoniker, 0x79EAC9E0, 0xBAF9, 0x11CE, 0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0x0B);")
1219
1220 cpp_quote("DEFINE_GUID(CLSID_CdlProtocol, 0x3dd53d40, 0x7b8b, 0x11D0, 0xb0,0x13, 0x00,0xaa,0x00,0x59,0xce,0x02);")
1221 cpp_quote("DEFINE_GUID(CLSID_FileProtocol, 0x79EAC9E7, 0xBAF9, 0x11CE, 0x8C,0x82, 0x00,0xAA,0x00,0x4B,0xA9,0x0B);")
1222 cpp_quote("DEFINE_GUID(CLSID_FtpProtocol, 0x79EAC9E3, 0xBAF9, 0x11CE, 0x8C,0x82, 0x00,0xAA,0x00,0x4B,0xA9,0x0B);")
1223 cpp_quote("DEFINE_GUID(CLSID_GopherProtocol, 0x79EAC9E4, 0xBAF9, 0x11CE, 0x8C,0x82, 0x00,0xAA,0x00,0x4B,0xA9,0x0B);")
1224 cpp_quote("DEFINE_GUID(CLSID_HttpProtocol, 0x79EAC9E2, 0xBAF9, 0x11CE, 0x8C,0x82, 0x00,0xAA,0x00,0x4B,0xA9,0x0B);")
1225 cpp_quote("DEFINE_GUID(CLSID_HttpSProtocol, 0x79EAC9E5, 0xBAF9, 0x11CE, 0x8C,0x82, 0x00,0xAA,0x00,0x4B,0xA9,0x0B);")
1226 cpp_quote("DEFINE_GUID(CLSID_MkProtocol, 0x79EAC9E6, 0xBAF9, 0x11CE, 0x8C,0x82, 0x00,0xAA,0x00,0x4B,0xA9,0x0B);")
1227
1228 cpp_quote("#define URLMON_OPTION_USERAGENT          0x10000001")
1229 cpp_quote("#define URLMON_OPTION_USERAGENT_REFRESH  0x10000002")
1230 cpp_quote("#define URLMON_OPTION_URL_ENCODING       0x10000004")
1231
1232 cpp_quote("#define MK_S_ASYNCHRONOUS                0x000401E8")
1233 cpp_quote("#ifndef S_ASYNCHRONOUS")
1234 cpp_quote("#define S_ASYNCHRONOUS                   MK_S_ASYNCHRONOUS")
1235 cpp_quote("#endif")
1236
1237 cpp_quote("#define INET_E_ERROR_FIRST               0x800C0002")
1238 cpp_quote("#define INET_E_INVALID_URL               0x800C0002")
1239 cpp_quote("#define INET_E_NO_SESSION                0x800C0003")
1240 cpp_quote("#define INET_E_CANNOT_CONNECT            0x800C0004")
1241 cpp_quote("#define INET_E_RESOURCE_NOT_FOUND        0x800C0005")
1242 cpp_quote("#define INET_E_OBJECT_NOT_FOUND          0x800C0006")
1243 cpp_quote("#define INET_E_DATA_NOT_AVAILABLE        0x800C0007")
1244 cpp_quote("#define INET_E_DOWNLOAD_FAILURE          0x800C0008")
1245 cpp_quote("#define INET_E_AUTHENTICATION_REQUIRED   0x800C0009")
1246 cpp_quote("#define INET_E_NO_VALID_MEDIA            0x800C000A")
1247 cpp_quote("#define INET_E_CONNECTION_TIMEOUT        0x800C000B")
1248 cpp_quote("#define INET_E_INVALID_REQUEST           0x800C000C")
1249 cpp_quote("#define INET_E_UNKNOWN_PROTOCOL          0x800C000D")
1250 cpp_quote("#define INET_E_SECURITY_PROBLEM          0x800C000E")
1251 cpp_quote("#define INET_E_CANNOT_LOAD_DATA          0x800C000F")
1252 cpp_quote("#define INET_E_CANNOT_INSTANTIATE_OBJECT 0x800C0010")
1253 cpp_quote("#define INET_E_USE_DEFAULT_PROTOCOLHANDLER 0x800C0011")
1254 cpp_quote("#define INET_E_QUERYOPTION_UNKNOWN       0x800C0013")
1255 cpp_quote("#define INET_E_REDIRECT_FAILED           0x800C0014")
1256 cpp_quote("#define INET_E_REDIRECT_TO_DIR           0x800C0015")
1257 cpp_quote("#define INET_E_CANNOT_LOCK_REQUEST       0x800C0016")
1258 cpp_quote("#define INET_E_ERROR_LAST                INET_E_REDIRECT_TO_DIR")
1259 cpp_quote("#define INET_E_DEFAULT_ACTION            INET_E_USE_DEFAULT_PROTOCOLHANDLER")
1260
1261 cpp_quote("HRESULT WINAPI CoGetClassObjectFromURL(REFCLSID, LPCWSTR, DWORD, DWORD, LPCWSTR, LPBINDCTX, DWORD, LPVOID, REFIID, LPVOID*);")
1262 cpp_quote("HRESULT WINAPI CreateURLMoniker(IMoniker *pmkContext, LPCWSTR szURL, IMoniker **ppmk);")
1263 cpp_quote("HRESULT WINAPI RegisterBindStatusCallback(IBindCtx *pbc, IBindStatusCallback *pbsc, IBindStatusCallback **ppbsc, DWORD dwReserved);")
1264 cpp_quote("HRESULT WINAPI CompareSecurityIds(BYTE*,DWORD,BYTE*,DWORD,DWORD);")
1265 cpp_quote("HRESULT WINAPI URLDownloadToFileA(LPUNKNOWN,LPCSTR,LPCSTR,DWORD,LPBINDSTATUSCALLBACK);")
1266 cpp_quote("HRESULT WINAPI URLDownloadToFileW(LPUNKNOWN,LPCWSTR,LPCWSTR,DWORD,LPBINDSTATUSCALLBACK);")
1267 cpp_quote("HRESULT WINAPI URLDownloadToCacheFileA(LPUNKNOWN,LPCSTR,LPSTR,DWORD,DWORD,LPBINDSTATUSCALLBACK);")
1268 cpp_quote("HRESULT WINAPI URLDownloadToCacheFileW(LPUNKNOWN,LPCWSTR,LPWSTR,DWORD,DWORD,LPBINDSTATUSCALLBACK);")
1269 cpp_quote("HRESULT WINAPI CoInternetGetSession(DWORD,IInternetSession**,DWORD);")
1270 cpp_quote("HRESULT WINAPI MkParseDisplayNameEx(IBindCtx*,LPCWSTR,ULONG*,IMoniker**);")
1271 cpp_quote("HRESULT WINAPI IsAsyncMoniker(IMoniker* pmk);")
1272 cpp_quote("HRESULT WINAPI CreateAsyncBindCtx(DWORD, IBindStatusCallback*, IEnumFORMATETC*, IBindCtx**);")
1273 cpp_quote("HRESULT WINAPI CreateAsyncBindCtxEx(IBindCtx*,DWORD,IBindStatusCallback*,IEnumFORMATETC*,IBindCtx**,DWORD);")
1274 cpp_quote("HRESULT WINAPI CoInternetCreateSecurityManager(IServiceProvider*,IInternetSecurityManager**,DWORD);")
1275 cpp_quote("HRESULT WINAPI CoInternetCombineUrl(LPCWSTR,LPCWSTR,DWORD,LPWSTR,DWORD,DWORD*,DWORD);")
1276 cpp_quote("HRESULT WINAPI CoInternetCompareUrl(LPCWSTR,LPCWSTR,DWORD);")
1277 cpp_quote("HRESULT WINAPI CoInternetCreateZoneManager(IServiceProvider*, IInternetZoneManager**, DWORD);")
1278 cpp_quote("HRESULT WINAPI CoInternetParseUrl(LPCWSTR,PARSEACTION,DWORD,LPWSTR,DWORD,DWORD*,DWORD);")
1279 cpp_quote("HRESULT WINAPI CoInternetQueryInfo(LPCWSTR,QUERYOPTION,DWORD,LPVOID,DWORD,DWORD*,DWORD);")
1280 cpp_quote("HRESULT WINAPI CreateFormatEnumerator(UINT,FORMATETC*,IEnumFORMATETC**);")
1281 cpp_quote("HRESULT WINAPI GetSoftwareUpdateInfo( LPCWSTR szDistUnit, LPSOFTDISTINFO psdi);")
1282 cpp_quote("HRESULT WINAPI FaultInIEFeature(HWND,uCLSSPEC*,QUERYCONTEXT*,DWORD);")
1283 cpp_quote("HRESULT WINAPI FindMimeFromData(LPBC,LPCWSTR,LPVOID,DWORD,LPCWSTR,DWORD,LPWSTR*,DWORD);")
1284 cpp_quote("HRESULT WINAPI GetClassFileOrMime(LPBC,LPCWSTR,LPVOID,DWORD,LPCWSTR,DWORD,CLSID*);")
1285 cpp_quote("HRESULT WINAPI HlinkGoBack(IUnknown*);")
1286 cpp_quote("HRESULT WINAPI HlinkGoForward(IUnknown*);")
1287 cpp_quote("HRESULT WINAPI HlinkNavigateMoniker(IUnknown*,IMoniker*);")
1288 cpp_quote("HRESULT WINAPI HlinkNavigateString(IUnknown*,LPCWSTR);")
1289 cpp_quote("HRESULT WINAPI HlinkSimpleNavigateToMoniker(IMoniker*,LPCWSTR,LPCWSTR,IUnknown*,IBindCtx*,IBindStatusCallback*,DWORD,DWORD);")
1290 cpp_quote("HRESULT WINAPI HlinkSimpleNavigateToString(LPCWSTR,LPCWSTR,LPCWSTR,IUnknown*,IBindCtx*,IBindStatusCallback*,DWORD,DWORD);")
1291 cpp_quote("HRESULT WINAPI IsValidURL(LPBC,LPCWSTR,DWORD);")
1292 cpp_quote("HRESULT WINAPI ObtainUserAgentString(DWORD,LPSTR,DWORD*);")
1293 cpp_quote("HRESULT WINAPI RegisterFormatEnumerator(LPBC,IEnumFORMATETC*,DWORD);")
1294 cpp_quote("HRESULT WINAPI RevokeFormatEnumerator(LPBC,IEnumFORMATETC*);")
1295 cpp_quote("HRESULT WINAPI RevokeBindStatusCallback(LPBC,IBindStatusCallback*);")
1296 cpp_quote("HRESULT WINAPI CopyStgMedium(const STGMEDIUM*,STGMEDIUM*);")
1297 cpp_quote("void WINAPI ReleaseBindInfo(BINDINFO*);")
1298 cpp_quote("HRESULT WINAPI UrlMkGetSessionOption(DWORD,LPVOID,DWORD,DWORD*,DWORD);")
1299 cpp_quote("HRESULT WINAPI UrlMkSetSessionOption(DWORD,LPVOID,DWORD,DWORD);")
1300 cpp_quote("HRESULT WINAPI URLOpenStreamA(LPUNKNOWN,LPCSTR,DWORD,LPBINDSTATUSCALLBACK);")
1301 cpp_quote("HRESULT WINAPI URLOpenStreamW(LPUNKNOWN,LPCWSTR,DWORD,LPBINDSTATUSCALLBACK);")
1302 cpp_quote("HRESULT WINAPI URLOpenPullStreamA(LPUNKNOWN,LPCSTR,DWORD,LPBINDSTATUSCALLBACK);")
1303 cpp_quote("HRESULT WINAPI URLOpenPullStreamW(LPUNKNOWN,LPCWSTR,DWORD,LPBINDSTATUSCALLBACK);")
1304 cpp_quote("HRESULT WINAPI URLOpenBlockingStreamA(LPUNKNOWN,LPCSTR,LPSTREAM*,DWORD,LPBINDSTATUSCALLBACK);")
1305 cpp_quote("HRESULT WINAPI URLOpenBlockingStreamW(LPUNKNOWN,LPCWSTR,LPSTREAM*,DWORD,LPBINDSTATUSCALLBACK);")
1306
1307 cpp_quote("#define OInetCombineUrl CoInternetCombineUrl")
1308 cpp_quote("#define OInetCompareUrl CoInternetCompareUrl")
1309 cpp_quote("#define OInetGetSession CoInternetGetSession")
1310
1311 cpp_quote("#define MKSYS_URLMONIKER 6")
1312 cpp_quote("#define URL_MK_LEGACY            0")
1313 cpp_quote("#define URL_MK_UNIFORM           1")