urlmon.idl 29 KB

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