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