oaidl.idl 37 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015
  1. cpp_quote("/**")
  2. cpp_quote(" * This file is part of the mingw-w64 runtime package.")
  3. cpp_quote(" * No warranty is given; refer to the file DISCLAIMER within this package.")
  4. cpp_quote(" */")
  5. cpp_quote("")
  6. cpp_quote("#include <winapifamily.h>")
  7. #ifndef DO_NO_IMPORTS
  8. import "objidl.idl";
  9. #endif
  10. cpp_quote("")
  11. cpp_quote("#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)")
  12. interface ICreateTypeInfo;
  13. interface ICreateTypeInfo2;
  14. interface ICreateTypeLib;
  15. interface ICreateTypeLib2;
  16. cpp_quote("#endif")
  17. cpp_quote("")
  18. cpp_quote("#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP)")
  19. interface IDispatch;
  20. interface IEnumVARIANT;
  21. interface ITypeComp;
  22. cpp_quote("#endif")
  23. cpp_quote("")
  24. cpp_quote("#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)")
  25. interface ITypeInfo;
  26. interface ITypeInfo2;
  27. interface ITypeLib;
  28. interface ITypeLib2;
  29. interface ITypeChangeEvents;
  30. interface IErrorInfo;
  31. interface ICreateErrorInfo;
  32. interface ISupportErrorInfo;
  33. interface ITypeFactory;
  34. interface ITypeMarshal;
  35. interface IRecordInfo;
  36. cpp_quote("#endif")
  37. cpp_quote("")
  38. cpp_quote("#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP)")
  39. [version (1.0), pointer_default (unique)]
  40. interface IOleAutomationTypes {
  41. typedef CY CURRENCY;
  42. typedef struct tagSAFEARRAYBOUND {
  43. ULONG cElements;
  44. LONG lLbound;
  45. } SAFEARRAYBOUND,*LPSAFEARRAYBOUND;
  46. cpp_quote("")
  47. typedef [unique] struct _wireVARIANT *wireVARIANT;
  48. typedef [unique] struct _wireBRECORD *wireBRECORD;
  49. cpp_quote("")
  50. typedef struct _wireSAFEARR_BSTR {
  51. ULONG Size;
  52. [size_is (Size), ref] wireBSTR *aBstr;
  53. } SAFEARR_BSTR;
  54. cpp_quote("")
  55. typedef struct _wireSAFEARR_UNKNOWN {
  56. ULONG Size;
  57. [size_is (Size), ref] IUnknown **apUnknown;
  58. } SAFEARR_UNKNOWN;
  59. cpp_quote("")
  60. typedef struct _wireSAFEARR_DISPATCH {
  61. ULONG Size;
  62. [size_is (Size), ref] IDispatch **apDispatch;
  63. } SAFEARR_DISPATCH;
  64. cpp_quote("")
  65. typedef struct _wireSAFEARR_VARIANT {
  66. ULONG Size;
  67. [size_is (Size), ref] wireVARIANT *aVariant;
  68. } SAFEARR_VARIANT;
  69. cpp_quote("")
  70. typedef struct _wireSAFEARR_BRECORD {
  71. ULONG Size;
  72. [size_is (Size), ref] wireBRECORD *aRecord;
  73. } SAFEARR_BRECORD;
  74. cpp_quote("")
  75. typedef struct _wireSAFEARR_HAVEIID {
  76. ULONG Size;
  77. [size_is (Size), ref] IUnknown **apUnknown;
  78. IID iid;
  79. } SAFEARR_HAVEIID;
  80. cpp_quote("")
  81. typedef [v1_enum] enum tagSF_TYPE {
  82. SF_ERROR = VT_ERROR,
  83. SF_I1 = VT_I1,
  84. SF_I2 = VT_I2,
  85. SF_I4 = VT_I4,
  86. SF_I8 = VT_I8,
  87. SF_BSTR = VT_BSTR,
  88. SF_UNKNOWN = VT_UNKNOWN,
  89. SF_DISPATCH = VT_DISPATCH,
  90. SF_VARIANT = VT_VARIANT,
  91. SF_RECORD = VT_RECORD,
  92. SF_HAVEIID = VT_UNKNOWN | VT_RESERVED
  93. } SF_TYPE;
  94. cpp_quote("")
  95. typedef union _wireSAFEARRAY_UNION switch (ULONG sfType) u {
  96. case SF_BSTR: SAFEARR_BSTR BstrStr;
  97. case SF_UNKNOWN: SAFEARR_UNKNOWN UnknownStr;
  98. case SF_DISPATCH: SAFEARR_DISPATCH DispatchStr;
  99. case SF_VARIANT: SAFEARR_VARIANT VariantStr;
  100. case SF_RECORD: SAFEARR_BRECORD RecordStr;
  101. case SF_HAVEIID: SAFEARR_HAVEIID HaveIidStr;
  102. case SF_I1: BYTE_SIZEDARR ByteStr;
  103. case SF_I2: WORD_SIZEDARR WordStr;
  104. case SF_I4: DWORD_SIZEDARR LongStr;
  105. case SF_I8: HYPER_SIZEDARR HyperStr;
  106. } SAFEARRAYUNION;
  107. cpp_quote("")
  108. typedef [unique] struct _wireSAFEARRAY {
  109. USHORT cDims;
  110. USHORT fFeatures;
  111. ULONG cbElements;
  112. ULONG cLocks;
  113. SAFEARRAYUNION uArrayStructs;
  114. [size_is (cDims)] SAFEARRAYBOUND rgsabound[];
  115. } *wireSAFEARRAY;
  116. typedef [unique] wireSAFEARRAY *wirePSAFEARRAY;
  117. cpp_quote("")
  118. typedef struct tagSAFEARRAY {
  119. USHORT cDims;
  120. USHORT fFeatures;
  121. ULONG cbElements;
  122. ULONG cLocks;
  123. PVOID pvData;
  124. SAFEARRAYBOUND rgsabound[];
  125. } SAFEARRAY;
  126. typedef [wire_marshal (wirePSAFEARRAY)] SAFEARRAY *LPSAFEARRAY;
  127. cpp_quote("")
  128. const USHORT FADF_AUTO = 0x0001;
  129. const USHORT FADF_STATIC = 0x0002;
  130. const USHORT FADF_EMBEDDED = 0x0004;
  131. const USHORT FADF_FIXEDSIZE = 0x0010;
  132. const USHORT FADF_RECORD = 0x0020;
  133. const USHORT FADF_HAVEIID = 0x0040;
  134. const USHORT FADF_HAVEVARTYPE= 0x0080;
  135. const USHORT FADF_BSTR = 0x0100;
  136. const USHORT FADF_UNKNOWN = 0x0200;
  137. const USHORT FADF_DISPATCH = 0x0400;
  138. const USHORT FADF_VARIANT = 0x0800;
  139. const USHORT FADF_RESERVED = 0xf008;
  140. cpp_quote("")
  141. cpp_quote("/* Kludge for 3.0 release to disable new default-behavior.")
  142. cpp_quote(" * For now we define _FORCENAMELESSUNION. For 4.0 this define")
  143. cpp_quote(" * will be removed. */")
  144. cpp_quote("#ifndef _FORCENAMELESSUNION")
  145. cpp_quote("#define _FORCENAMELESSUNION 1")
  146. cpp_quote("#endif")
  147. cpp_quote("")
  148. cpp_quote("#if (__STDC__ && !defined(__cplusplus) && !defined(_FORCENAMELESSUNION)) || defined(NONAMELESSUNION) || (defined (_MSC_VER) && !defined(_MSC_EXTENSIONS) && !defined(_FORCENAMELESSUNION))")
  149. cpp_quote("#define __VARIANT_NAME_1 n1")
  150. cpp_quote("#define __VARIANT_NAME_2 n2")
  151. cpp_quote("#define __VARIANT_NAME_3 n3")
  152. cpp_quote("#define __VARIANT_NAME_4 brecVal")
  153. cpp_quote("#else")
  154. cpp_quote("#define __tagVARIANT")
  155. cpp_quote("#define __VARIANT_NAME_1")
  156. cpp_quote("#define __VARIANT_NAME_2")
  157. cpp_quote("#define __VARIANT_NAME_3")
  158. cpp_quote("#define __tagBRECORD")
  159. cpp_quote("#define __VARIANT_NAME_4")
  160. cpp_quote("#endif")
  161. cpp_quote("")
  162. typedef [wire_marshal (wireVARIANT)] struct tagVARIANT VARIANT;
  163. cpp_quote("")
  164. struct tagVARIANT {
  165. union {
  166. struct __tagVARIANT {
  167. VARTYPE vt;
  168. WORD wReserved1;
  169. WORD wReserved2;
  170. WORD wReserved3;
  171. union {
  172. LONGLONG llVal;
  173. LONG lVal;
  174. BYTE bVal;
  175. SHORT iVal;
  176. FLOAT fltVal;
  177. DOUBLE dblVal;
  178. VARIANT_BOOL boolVal;
  179. /* Removed due conflict with bool and gcc's inablity to express a macro expanding to a comment.
  180. _VARIANT_BOOL bool; */
  181. SCODE scode;
  182. CY cyVal;
  183. DATE date;
  184. BSTR bstrVal;
  185. IUnknown *punkVal;
  186. IDispatch *pdispVal;
  187. SAFEARRAY *parray;
  188. BYTE *pbVal;
  189. SHORT *piVal;
  190. LONG *plVal;
  191. LONGLONG *pllVal;
  192. FLOAT *pfltVal;
  193. DOUBLE *pdblVal;
  194. VARIANT_BOOL *pboolVal;
  195. /* Removed due conflict with bool and gcc's inablity to express a macro expanding to a comment.
  196. _VARIANT_BOOL *pbool; */
  197. SCODE *pscode;
  198. CY *pcyVal;
  199. DATE *pdate;
  200. BSTR *pbstrVal;
  201. IUnknown **ppunkVal;
  202. IDispatch **ppdispVal;
  203. SAFEARRAY **pparray;
  204. VARIANT *pvarVal;
  205. PVOID byref;
  206. CHAR cVal;
  207. USHORT uiVal;
  208. ULONG ulVal;
  209. ULONGLONG ullVal;
  210. INT intVal;
  211. UINT uintVal;
  212. DECIMAL *pdecVal;
  213. CHAR *pcVal;
  214. USHORT *puiVal;
  215. ULONG *pulVal;
  216. ULONGLONG *pullVal;
  217. INT *pintVal;
  218. UINT *puintVal;
  219. struct __tagBRECORD {
  220. PVOID pvRecord;
  221. IRecordInfo *pRecInfo;
  222. } __VARIANT_NAME_4;
  223. } __VARIANT_NAME_3;
  224. } __VARIANT_NAME_2;
  225. DECIMAL decVal;
  226. } __VARIANT_NAME_1;
  227. };
  228. cpp_quote("")
  229. typedef VARIANT *LPVARIANT;
  230. typedef VARIANT VARIANTARG;
  231. typedef VARIANT *LPVARIANTARG;
  232. cpp_quote("#if 0")
  233. typedef const VARIANT *REFVARIANT;
  234. cpp_quote("#else")
  235. cpp_quote("")
  236. cpp_quote("#ifndef _REFVARIANT_DEFINED")
  237. cpp_quote("#define _REFVARIANT_DEFINED")
  238. cpp_quote("#ifdef __cplusplus")
  239. cpp_quote("#define REFVARIANT const VARIANT &")
  240. cpp_quote("#else")
  241. cpp_quote("#define REFVARIANT const VARIANT * __MIDL_CONST")
  242. cpp_quote("#endif")
  243. cpp_quote("#endif")
  244. cpp_quote("#endif")
  245. cpp_quote("")
  246. struct _wireBRECORD {
  247. ULONG fFlags;
  248. ULONG clSize;
  249. IRecordInfo *pRecInfo;
  250. [size_is (clSize)] byte *pRecord;
  251. };
  252. cpp_quote("")
  253. struct _wireVARIANT {
  254. DWORD clSize;
  255. DWORD rpcReserved;
  256. USHORT vt;
  257. USHORT wReserved1;
  258. USHORT wReserved2;
  259. USHORT wReserved3;
  260. [switch_type (ULONG), switch_is (vt)] union {
  261. [case (VT_I8)] LONGLONG llVal;
  262. [case (VT_I4)] LONG lVal;
  263. [case (VT_UI1)] BYTE bVal;
  264. [case (VT_I2)] SHORT iVal;
  265. [case (VT_R4)] FLOAT fltVal;
  266. [case (VT_R8)] DOUBLE dblVal;
  267. [case (VT_BOOL)] VARIANT_BOOL boolVal;
  268. [case (VT_ERROR)] SCODE scode;
  269. [case (VT_CY)] CY cyVal;
  270. [case (VT_DATE)] DATE date;
  271. [case (VT_BSTR)] wireBSTR bstrVal;
  272. [case (VT_UNKNOWN)] IUnknown *punkVal;
  273. [case (VT_DISPATCH)] IDispatch *pdispVal;
  274. [case (VT_ARRAY)] wirePSAFEARRAY parray;
  275. [case (VT_RECORD, VT_RECORD|VT_BYREF)]
  276. wireBRECORD brecVal;
  277. [case (VT_UI1|VT_BYREF)]
  278. BYTE *pbVal;
  279. [case (VT_I2|VT_BYREF)]
  280. SHORT *piVal;
  281. [case (VT_I4|VT_BYREF)]
  282. LONG *plVal;
  283. [case (VT_I8|VT_BYREF)]
  284. LONGLONG *pllVal;
  285. [case (VT_R4|VT_BYREF)]
  286. FLOAT *pfltVal;
  287. [case (VT_R8|VT_BYREF)]
  288. DOUBLE *pdblVal;
  289. [case (VT_BOOL|VT_BYREF)]
  290. VARIANT_BOOL *pboolVal;
  291. [case (VT_ERROR|VT_BYREF)]
  292. SCODE *pscode;
  293. [case (VT_CY|VT_BYREF)]
  294. CY *pcyVal;
  295. [case (VT_DATE|VT_BYREF)]
  296. DATE *pdate;
  297. [case (VT_BSTR|VT_BYREF)]
  298. wireBSTR *pbstrVal;
  299. [case (VT_UNKNOWN|VT_BYREF)]
  300. IUnknown **ppunkVal;
  301. [case (VT_DISPATCH|VT_BYREF)]
  302. IDispatch **ppdispVal;
  303. [case (VT_ARRAY|VT_BYREF)]
  304. wirePSAFEARRAY *pparray;
  305. [case (VT_VARIANT|VT_BYREF)]
  306. wireVARIANT *pvarVal;
  307. [case (VT_I1)] CHAR cVal;
  308. [case (VT_UI2)] USHORT uiVal;
  309. [case (VT_UI4)] ULONG ulVal;
  310. [case (VT_UI8)] ULONGLONG ullVal;
  311. [case (VT_INT)] INT intVal;
  312. [case (VT_UINT)] UINT uintVal;
  313. [case (VT_DECIMAL)] DECIMAL decVal;
  314. [case (VT_BYREF|VT_DECIMAL)]
  315. DECIMAL *pdecVal;
  316. [case (VT_BYREF|VT_I1)]
  317. CHAR *pcVal;
  318. [case (VT_BYREF|VT_UI2)]
  319. USHORT *puiVal;
  320. [case (VT_BYREF|VT_UI4)]
  321. ULONG *pulVal;
  322. [case (VT_BYREF|VT_UI8)]
  323. ULONGLONG *pullVal;
  324. [case (VT_BYREF|VT_INT)]
  325. INT *pintVal;
  326. [case (VT_BYREF|VT_UINT)]
  327. UINT *puintVal;
  328. [case (VT_EMPTY)];
  329. [case (VT_NULL)];
  330. };
  331. };
  332. cpp_quote("")
  333. typedef LONG DISPID;
  334. typedef DISPID MEMBERID;
  335. typedef DWORD HREFTYPE;
  336. typedef [v1_enum] enum tagTYPEKIND {
  337. TKIND_ENUM = 0,
  338. TKIND_RECORD,
  339. TKIND_MODULE,
  340. TKIND_INTERFACE,
  341. TKIND_DISPATCH,
  342. TKIND_COCLASS,
  343. TKIND_ALIAS,
  344. TKIND_UNION,
  345. TKIND_MAX
  346. } TYPEKIND;
  347. cpp_quote("")
  348. typedef struct tagTYPEDESC {
  349. [switch_type (VARTYPE), switch_is (vt)] union {
  350. [case (VT_PTR, VT_SAFEARRAY)] struct tagTYPEDESC *lptdesc;
  351. [case (VT_CARRAY)] struct tagARRAYDESC *lpadesc;
  352. [case (VT_USERDEFINED)] HREFTYPE hreftype;
  353. [default];
  354. };
  355. VARTYPE vt;
  356. } TYPEDESC;
  357. cpp_quote("")
  358. typedef struct tagARRAYDESC {
  359. TYPEDESC tdescElem;
  360. USHORT cDims;
  361. [size_is (cDims)] SAFEARRAYBOUND rgbounds[];
  362. } ARRAYDESC;
  363. cpp_quote("")
  364. typedef struct tagPARAMDESCEX {
  365. ULONG cBytes;
  366. VARIANTARG varDefaultValue;
  367. } PARAMDESCEX,*LPPARAMDESCEX;
  368. cpp_quote("")
  369. typedef struct tagPARAMDESC {
  370. LPPARAMDESCEX pparamdescex;
  371. USHORT wParamFlags;
  372. } PARAMDESC,*LPPARAMDESC;
  373. cpp_quote("")
  374. const USHORT PARAMFLAG_NONE = 0x00;
  375. const USHORT PARAMFLAG_FIN = 0x01;
  376. const USHORT PARAMFLAG_FOUT = 0x02;
  377. const USHORT PARAMFLAG_FLCID = 0x04;
  378. const USHORT PARAMFLAG_FRETVAL = 0x08;
  379. const USHORT PARAMFLAG_FOPT = 0x10;
  380. const USHORT PARAMFLAG_FHASDEFAULT = 0x20;
  381. const USHORT PARAMFLAG_FHASCUSTDATA = 0x40;
  382. cpp_quote("")
  383. typedef struct tagIDLDESC {
  384. ULONG_PTR dwReserved;
  385. USHORT wIDLFlags;
  386. } IDLDESC,*LPIDLDESC;
  387. cpp_quote("")
  388. const USHORT IDLFLAG_NONE = PARAMFLAG_NONE;
  389. const USHORT IDLFLAG_FIN = PARAMFLAG_FIN;
  390. const USHORT IDLFLAG_FOUT = PARAMFLAG_FOUT;
  391. const USHORT IDLFLAG_FLCID = PARAMFLAG_FLCID;
  392. const USHORT IDLFLAG_FRETVAL = PARAMFLAG_FRETVAL;
  393. cpp_quote("")
  394. cpp_quote("#if 0")
  395. typedef struct tagELEMDESC {
  396. TYPEDESC tdesc;
  397. PARAMDESC paramdesc;
  398. } ELEMDESC;
  399. cpp_quote("#else")
  400. cpp_quote("")
  401. cpp_quote(" typedef struct tagELEMDESC {")
  402. cpp_quote(" TYPEDESC tdesc;")
  403. cpp_quote(" __C89_NAMELESS union {")
  404. cpp_quote(" IDLDESC idldesc;")
  405. cpp_quote(" PARAMDESC paramdesc;")
  406. cpp_quote(" } DUMMYUNIONNAME;")
  407. cpp_quote(" } ELEMDESC,*LPELEMDESC;")
  408. cpp_quote("#endif")
  409. cpp_quote("")
  410. typedef struct tagTYPEATTR {
  411. GUID guid;
  412. LCID lcid;
  413. DWORD dwReserved;
  414. MEMBERID memidConstructor;
  415. MEMBERID memidDestructor;
  416. LPOLESTR lpstrSchema;
  417. ULONG cbSizeInstance;
  418. TYPEKIND typekind;
  419. WORD cFuncs;
  420. WORD cVars;
  421. WORD cImplTypes;
  422. WORD cbSizeVft;
  423. WORD cbAlignment;
  424. WORD wTypeFlags;
  425. WORD wMajorVerNum;
  426. WORD wMinorVerNum;
  427. TYPEDESC tdescAlias;
  428. IDLDESC idldescType;
  429. } TYPEATTR,*LPTYPEATTR;
  430. cpp_quote("")
  431. typedef struct tagDISPPARAMS {
  432. [size_is (cArgs)] VARIANTARG *rgvarg;
  433. [size_is (cNamedArgs)] DISPID *rgdispidNamedArgs;
  434. UINT cArgs;
  435. UINT cNamedArgs;
  436. } DISPPARAMS;
  437. cpp_quote("")
  438. cpp_quote("#if 0")
  439. typedef struct tagEXCEPINFO {
  440. WORD wCode;
  441. WORD wReserved;
  442. BSTR bstrSource;
  443. BSTR bstrDescription;
  444. BSTR bstrHelpFile;
  445. DWORD dwHelpContext;
  446. ULONG_PTR pvReserved;
  447. ULONG_PTR pfnDeferredFillIn;
  448. SCODE scode;
  449. } EXCEPINFO;
  450. cpp_quote("#else")
  451. cpp_quote(" typedef struct tagEXCEPINFO {")
  452. cpp_quote(" WORD wCode;")
  453. cpp_quote(" WORD wReserved;")
  454. cpp_quote(" BSTR bstrSource;")
  455. cpp_quote(" BSTR bstrDescription;")
  456. cpp_quote(" BSTR bstrHelpFile;")
  457. cpp_quote(" DWORD dwHelpContext;")
  458. cpp_quote(" PVOID pvReserved;")
  459. cpp_quote(" HRESULT (__stdcall *pfnDeferredFillIn)(struct tagEXCEPINFO *);")
  460. cpp_quote(" SCODE scode;")
  461. cpp_quote(" } EXCEPINFO, *LPEXCEPINFO;")
  462. cpp_quote("#endif")
  463. cpp_quote("")
  464. typedef [v1_enum] enum tagCALLCONV {
  465. CC_FASTCALL = 0,
  466. CC_CDECL = 1,
  467. CC_MSCPASCAL,
  468. CC_PASCAL = CC_MSCPASCAL,
  469. CC_MACPASCAL,
  470. CC_STDCALL,
  471. CC_FPFASTCALL,
  472. CC_SYSCALL,
  473. CC_MPWCDECL,
  474. CC_MPWPASCAL,
  475. CC_MAX
  476. } CALLCONV;
  477. cpp_quote("")
  478. typedef [v1_enum] enum tagFUNCKIND {
  479. FUNC_VIRTUAL,
  480. FUNC_PUREVIRTUAL,
  481. FUNC_NONVIRTUAL,
  482. FUNC_STATIC,
  483. FUNC_DISPATCH
  484. } FUNCKIND;
  485. cpp_quote("")
  486. typedef [v1_enum] enum tagINVOKEKIND {
  487. INVOKE_FUNC = 1,
  488. INVOKE_PROPERTYGET = 2,
  489. INVOKE_PROPERTYPUT = 4,
  490. INVOKE_PROPERTYPUTREF = 8
  491. } INVOKEKIND;
  492. cpp_quote("")
  493. typedef struct tagFUNCDESC {
  494. MEMBERID memid;
  495. [size_is (cScodes)] SCODE *lprgscode;
  496. [size_is (cParams)] ELEMDESC *lprgelemdescParam;
  497. FUNCKIND funckind;
  498. INVOKEKIND invkind;
  499. CALLCONV callconv;
  500. SHORT cParams;
  501. SHORT cParamsOpt;
  502. SHORT oVft;
  503. SHORT cScodes;
  504. ELEMDESC elemdescFunc;
  505. WORD wFuncFlags;
  506. } FUNCDESC,*LPFUNCDESC;
  507. cpp_quote("")
  508. typedef [v1_enum] enum tagVARKIND {
  509. VAR_PERINSTANCE,
  510. VAR_STATIC,
  511. VAR_CONST,
  512. VAR_DISPATCH
  513. } VARKIND;
  514. cpp_quote("")
  515. const USHORT IMPLTYPEFLAG_FDEFAULT = 0x1;
  516. const USHORT IMPLTYPEFLAG_FSOURCE = 0x2;
  517. const USHORT IMPLTYPEFLAG_FRESTRICTED = 0x4;
  518. const USHORT IMPLTYPEFLAG_FDEFAULTVTABLE= 0x8;
  519. cpp_quote("")
  520. typedef struct tagVARDESC {
  521. MEMBERID memid;
  522. LPOLESTR lpstrSchema;
  523. [switch_type (VARKIND), switch_is (varkind)] union {
  524. [case (VAR_PERINSTANCE, VAR_DISPATCH, VAR_STATIC)] ULONG oInst;
  525. [case (VAR_CONST)] VARIANT *lpvarValue;
  526. };
  527. ELEMDESC elemdescVar;
  528. WORD wVarFlags;
  529. VARKIND varkind;
  530. } VARDESC,*LPVARDESC;
  531. cpp_quote("")
  532. typedef enum tagTYPEFLAGS {
  533. TYPEFLAG_FAPPOBJECT = 0x01,
  534. TYPEFLAG_FCANCREATE = 0x02,
  535. TYPEFLAG_FLICENSED = 0x04,
  536. TYPEFLAG_FPREDECLID = 0x08,
  537. TYPEFLAG_FHIDDEN = 0x10,
  538. TYPEFLAG_FCONTROL = 0x20,
  539. TYPEFLAG_FDUAL = 0x40,
  540. TYPEFLAG_FNONEXTENSIBLE = 0x80,
  541. TYPEFLAG_FOLEAUTOMATION = 0x100,
  542. TYPEFLAG_FRESTRICTED = 0x200,
  543. TYPEFLAG_FAGGREGATABLE = 0x400,
  544. TYPEFLAG_FREPLACEABLE = 0x800,
  545. TYPEFLAG_FDISPATCHABLE = 0x1000,
  546. TYPEFLAG_FREVERSEBIND = 0x2000,
  547. TYPEFLAG_FPROXY = 0x4000
  548. } TYPEFLAGS;
  549. cpp_quote("")
  550. typedef enum tagFUNCFLAGS {
  551. FUNCFLAG_FRESTRICTED = 0x1,
  552. FUNCFLAG_FSOURCE = 0x2,
  553. FUNCFLAG_FBINDABLE = 0x4,
  554. FUNCFLAG_FREQUESTEDIT = 0x8,
  555. FUNCFLAG_FDISPLAYBIND = 0x10,
  556. FUNCFLAG_FDEFAULTBIND = 0x20,
  557. FUNCFLAG_FHIDDEN = 0x40,
  558. FUNCFLAG_FUSESGETLASTERROR = 0x80,
  559. FUNCFLAG_FDEFAULTCOLLELEM = 0x100,
  560. FUNCFLAG_FUIDEFAULT = 0x200,
  561. FUNCFLAG_FNONBROWSABLE = 0x400,
  562. FUNCFLAG_FREPLACEABLE = 0x800,
  563. FUNCFLAG_FIMMEDIATEBIND = 0x1000
  564. } FUNCFLAGS;
  565. cpp_quote("")
  566. typedef enum tagVARFLAGS {
  567. VARFLAG_FREADONLY = 0x1,
  568. VARFLAG_FSOURCE = 0x2,
  569. VARFLAG_FBINDABLE = 0x4,
  570. VARFLAG_FREQUESTEDIT = 0x8,
  571. VARFLAG_FDISPLAYBIND = 0x10,
  572. VARFLAG_FDEFAULTBIND = 0x20,
  573. VARFLAG_FHIDDEN = 0x40,
  574. VARFLAG_FRESTRICTED = 0x80,
  575. VARFLAG_FDEFAULTCOLLELEM = 0x100,
  576. VARFLAG_FUIDEFAULT = 0x200,
  577. VARFLAG_FNONBROWSABLE = 0x400,
  578. VARFLAG_FREPLACEABLE = 0x800,
  579. VARFLAG_FIMMEDIATEBIND = 0x1000
  580. } VARFLAGS;
  581. cpp_quote("")
  582. typedef [wire_marshal (DWORD)] struct tagCLEANLOCALSTORAGE {
  583. IUnknown *pInterface;
  584. PVOID pStorage;
  585. DWORD flags;
  586. } CLEANLOCALSTORAGE;
  587. cpp_quote("")
  588. typedef struct tagCUSTDATAITEM {
  589. GUID guid;
  590. VARIANTARG varValue;
  591. } CUSTDATAITEM,*LPCUSTDATAITEM;
  592. cpp_quote("")
  593. typedef struct tagCUSTDATA {
  594. DWORD cCustData;
  595. [size_is (cCustData)] LPCUSTDATAITEM prgCustData;
  596. } CUSTDATA,*LPCUSTDATA;
  597. }
  598. cpp_quote("#endif")
  599. cpp_quote("")
  600. cpp_quote("#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)")
  601. [object, uuid (00020405-0000-0000-C000-000000000046), pointer_default (unique), local]
  602. interface ICreateTypeInfo: IUnknown {
  603. typedef [unique] ICreateTypeInfo *LPCREATETYPEINFO;
  604. cpp_quote("")
  605. HRESULT SetGuid ([in] REFGUID guid);
  606. HRESULT SetTypeFlags ([in] UINT uTypeFlags);
  607. HRESULT SetDocString ([in] LPOLESTR pStrDoc);
  608. HRESULT SetHelpContext ([in] DWORD dwHelpContext);
  609. HRESULT SetVersion ([in] WORD wMajorVerNum,[in] WORD wMinorVerNum);
  610. HRESULT AddRefTypeInfo ([in] ITypeInfo *pTInfo,[in] HREFTYPE *phRefType);
  611. HRESULT AddFuncDesc ([in] UINT index,[in] FUNCDESC *pFuncDesc);
  612. HRESULT AddImplType ([in] UINT index,[in] HREFTYPE hRefType);
  613. HRESULT SetImplTypeFlags ([in] UINT index,[in] INT implTypeFlags);
  614. HRESULT SetAlignment ([in] WORD cbAlignment);
  615. HRESULT SetSchema ([in] LPOLESTR pStrSchema);
  616. HRESULT AddVarDesc ([in] UINT index,[in] VARDESC *pVarDesc);
  617. HRESULT SetFuncAndParamNames ([in] UINT index,[in, size_is ((UINT) cNames)] LPOLESTR *rgszNames,[in] UINT cNames);
  618. HRESULT SetVarName ([in] UINT index,[in] LPOLESTR szName);
  619. HRESULT SetTypeDescAlias ([in] TYPEDESC *pTDescAlias);
  620. HRESULT DefineFuncAsDllEntry ([in] UINT index,[in] LPOLESTR szDllName,[in] LPOLESTR szProcName);
  621. HRESULT SetFuncDocString ([in] UINT index,[in] LPOLESTR szDocString);
  622. HRESULT SetVarDocString ([in] UINT index,[in] LPOLESTR szDocString);
  623. HRESULT SetFuncHelpContext ([in] UINT index,[in] DWORD dwHelpContext);
  624. HRESULT SetVarHelpContext ([in] UINT index,[in] DWORD dwHelpContext);
  625. HRESULT SetMops ([in] UINT index,[in] BSTR bstrMops);
  626. HRESULT SetTypeIdldesc ([in] IDLDESC *pIdlDesc);
  627. HRESULT LayOut (void);
  628. }
  629. cpp_quote("")
  630. [object, uuid (0002040e-0000-0000-C000-000000000046), pointer_default (unique), local]
  631. interface ICreateTypeInfo2: ICreateTypeInfo {
  632. typedef [unique] ICreateTypeInfo2 *LPCREATETYPEINFO2;
  633. cpp_quote("")
  634. HRESULT DeleteFuncDesc ([in] UINT index);
  635. HRESULT DeleteFuncDescByMemId ([in] MEMBERID memid,[in] INVOKEKIND invKind);
  636. HRESULT DeleteVarDesc ([in] UINT index);
  637. HRESULT DeleteVarDescByMemId ([in] MEMBERID memid);
  638. HRESULT DeleteImplType ([in] UINT index);
  639. HRESULT SetCustData ([in] REFGUID guid,[in] VARIANT *pVarVal);
  640. HRESULT SetFuncCustData ([in] UINT index,[in] REFGUID guid,[in] VARIANT *pVarVal);
  641. HRESULT SetParamCustData ([in] UINT indexFunc,[in] UINT indexParam,[in] REFGUID guid,[in] VARIANT *pVarVal);
  642. HRESULT SetVarCustData ([in] UINT index,[in] REFGUID guid,[in] VARIANT *pVarVal);
  643. HRESULT SetImplTypeCustData ([in] UINT index,[in] REFGUID guid,[in] VARIANT *pVarVal);
  644. HRESULT SetHelpStringContext ([in] ULONG dwHelpStringContext);
  645. HRESULT SetFuncHelpStringContext ([in] UINT index,[in] ULONG dwHelpStringContext);
  646. HRESULT SetVarHelpStringContext ([in] UINT index,[in] ULONG dwHelpStringContext);
  647. HRESULT Invalidate (void);
  648. HRESULT SetName ([in] LPOLESTR szName);
  649. }
  650. cpp_quote("")
  651. [object, uuid (00020406-0000-0000-C000-000000000046), pointer_default (unique), local]
  652. interface ICreateTypeLib : IUnknown {
  653. typedef [unique] ICreateTypeLib *LPCREATETYPELIB;
  654. cpp_quote("")
  655. HRESULT CreateTypeInfo ([in] LPOLESTR szName,[in] TYPEKIND tkind,[out] ICreateTypeInfo **ppCTInfo);
  656. HRESULT SetName ([in] LPOLESTR szName);
  657. HRESULT SetVersion ([in] WORD wMajorVerNum,[in] WORD wMinorVerNum);
  658. HRESULT SetGuid ([in] REFGUID guid);
  659. HRESULT SetDocString ([in] LPOLESTR szDoc);
  660. HRESULT SetHelpFileName ([in] LPOLESTR szHelpFileName);
  661. HRESULT SetHelpContext ([in] DWORD dwHelpContext);
  662. HRESULT SetLcid ([in] LCID lcid);
  663. HRESULT SetLibFlags ([in] UINT uLibFlags);
  664. HRESULT SaveAllChanges (void);
  665. }
  666. cpp_quote("")
  667. [object, uuid (0002040f-0000-0000-C000-000000000046), pointer_default (unique), local]
  668. interface ICreateTypeLib2 : ICreateTypeLib {
  669. typedef [unique] ICreateTypeLib2 *LPCREATETYPELIB2;
  670. HRESULT DeleteTypeInfo ([in] LPOLESTR szName);
  671. HRESULT SetCustData ([in] REFGUID guid,[in] VARIANT *pVarVal);
  672. HRESULT SetHelpStringContext ([in] ULONG dwHelpStringContext);
  673. HRESULT SetHelpStringDll ([in] LPOLESTR szFileName);
  674. }
  675. cpp_quote("#endif")
  676. cpp_quote("")
  677. cpp_quote("#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP)")
  678. [object, uuid (00020400-0000-0000-C000-000000000046), pointer_default (unique)]
  679. interface IDispatch : IUnknown {
  680. typedef [unique] IDispatch *LPDISPATCH;
  681. cpp_quote("")
  682. HRESULT GetTypeInfoCount ([out] UINT *pctinfo);
  683. HRESULT GetTypeInfo ([in] UINT iTInfo,[in] LCID lcid,[out] ITypeInfo **ppTInfo);
  684. HRESULT GetIDsOfNames ([in] REFIID riid,[in, size_is (cNames)] LPOLESTR *rgszNames,[in, range (0, 16384)] UINT cNames,[in] LCID lcid,[out, size_is (cNames)] DISPID *rgDispId);
  685. [local] HRESULT Invoke ([in] DISPID dispIdMember,[in] REFIID riid,[in] LCID lcid,[in] WORD wFlags,[in, out] DISPPARAMS *pDispParams,[out] VARIANT *pVarResult,[out] EXCEPINFO *pExcepInfo,[out] UINT *puArgErr);
  686. [call_as (Invoke)] HRESULT RemoteInvoke ([in] DISPID dispIdMember,[in] REFIID riid,[in] LCID lcid,[in] DWORD dwFlags,[in] DISPPARAMS *pDispParams,[out] VARIANT *pVarResult,[out] EXCEPINFO *pExcepInfo,[out] UINT *pArgErr,[in] UINT cVarRef,[in, size_is (cVarRef)] UINT *rgVarRefIdx,[in, out, size_is (cVarRef)] VARIANTARG *rgVarRef);
  687. cpp_quote("")
  688. const DISPID DISPID_UNKNOWN = -1;
  689. const DISPID DISPID_VALUE = 0;
  690. const DISPID DISPID_PROPERTYPUT = -3;
  691. const DISPID DISPID_NEWENUM = -4;
  692. const DISPID DISPID_EVALUATE = -5;
  693. const DISPID DISPID_CONSTRUCTOR = -6;
  694. const DISPID DISPID_DESTRUCTOR = -7;
  695. const DISPID DISPID_COLLECT = -8;
  696. cpp_quote("")
  697. }
  698. cpp_quote("")
  699. [object, uuid (00020404-0000-0000-C000-000000000046), pointer_default (unique)]
  700. interface IEnumVARIANT : IUnknown {
  701. typedef [unique] IEnumVARIANT *LPENUMVARIANT;
  702. cpp_quote("")
  703. [local] HRESULT Next ([in] ULONG celt,[out, size_is (celt), length_is (*pCeltFetched)] VARIANT *rgVar,[out] ULONG *pCeltFetched);
  704. [call_as (Next)] HRESULT RemoteNext ([in] ULONG celt,[out, size_is (celt), length_is (*pCeltFetched)] VARIANT *rgVar,[out] ULONG *pCeltFetched);
  705. HRESULT Skip ([in] ULONG celt);
  706. HRESULT Reset ();
  707. HRESULT Clone ([out] IEnumVARIANT **ppEnum);
  708. }
  709. cpp_quote("")
  710. [object, uuid (00020403-0000-0000-C000-000000000046), pointer_default (unique)]
  711. interface ITypeComp : IUnknown {
  712. typedef [unique] ITypeComp *LPTYPECOMP;
  713. cpp_quote("")
  714. typedef [v1_enum] enum tagDESCKIND {
  715. DESCKIND_NONE = 0,
  716. DESCKIND_FUNCDESC,
  717. DESCKIND_VARDESC,
  718. DESCKIND_TYPECOMP,
  719. DESCKIND_IMPLICITAPPOBJ,
  720. DESCKIND_MAX
  721. } DESCKIND;
  722. cpp_quote("")
  723. typedef union tagBINDPTR {
  724. FUNCDESC *lpfuncdesc;
  725. VARDESC *lpvardesc;
  726. ITypeComp *lptcomp;
  727. } BINDPTR,*LPBINDPTR;
  728. cpp_quote("")
  729. [local] HRESULT Bind ([in] LPOLESTR szName,[in] ULONG lHashVal,[in] WORD wFlags,[out] ITypeInfo **ppTInfo,[out] DESCKIND *pDescKind,[out] BINDPTR *pBindPtr);
  730. [call_as (Bind)] HRESULT RemoteBind ([in] LPOLESTR szName,[in] ULONG lHashVal,[in] WORD wFlags,[out] ITypeInfo **ppTInfo,[out] DESCKIND *pDescKind,[out] LPFUNCDESC *ppFuncDesc,[out] LPVARDESC *ppVarDesc,[out] ITypeComp **ppTypeComp,[out] CLEANLOCALSTORAGE *pDummy);
  731. [local] HRESULT BindType ([in] LPOLESTR szName,[in] ULONG lHashVal,[out] ITypeInfo **ppTInfo,[out] ITypeComp **ppTComp);
  732. [call_as (BindType)] HRESULT RemoteBindType ([in] LPOLESTR szName,[in] ULONG lHashVal,[out] ITypeInfo **ppTInfo);
  733. }
  734. cpp_quote("#endif")
  735. cpp_quote("")
  736. cpp_quote("#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)")
  737. [object, uuid (00020401-0000-0000-C000-000000000046), pointer_default (unique)]
  738. interface ITypeInfo : IUnknown {
  739. typedef [unique] ITypeInfo *LPTYPEINFO;
  740. cpp_quote("")
  741. [local] HRESULT GetTypeAttr ([out] TYPEATTR **ppTypeAttr);
  742. [call_as (GetTypeAttr)] HRESULT RemoteGetTypeAttr ([out] LPTYPEATTR *ppTypeAttr,[out] CLEANLOCALSTORAGE *pDummy);
  743. HRESULT GetTypeComp ([out] ITypeComp **ppTComp);
  744. [local] HRESULT GetFuncDesc ([in] UINT index,[out] FUNCDESC **ppFuncDesc);
  745. [call_as (GetFuncDesc)] HRESULT RemoteGetFuncDesc ([in] UINT index,[out] LPFUNCDESC *ppFuncDesc,[out] CLEANLOCALSTORAGE *pDummy);
  746. [local] HRESULT GetVarDesc ([in] UINT index,[out] VARDESC **ppVarDesc);
  747. [call_as (GetVarDesc)] HRESULT RemoteGetVarDesc ([in] UINT index,[out] LPVARDESC *ppVarDesc,[out] CLEANLOCALSTORAGE *pDummy);
  748. [local] HRESULT GetNames ([in] MEMBERID memid,[out, size_is (cMaxNames), length_is (*pcNames)] BSTR *rgBstrNames,[in] UINT cMaxNames,[out] UINT *pcNames);
  749. [call_as (GetNames)] HRESULT RemoteGetNames ([in] MEMBERID memid,[out, size_is (cMaxNames), length_is (*pcNames)] BSTR *rgBstrNames,[in] UINT cMaxNames,[out] UINT *pcNames);
  750. HRESULT GetRefTypeOfImplType ([in] UINT index,[out] HREFTYPE *pRefType);
  751. HRESULT GetImplTypeFlags ([in] UINT index,[out] INT *pImplTypeFlags);
  752. [local] HRESULT GetIDsOfNames ([in, size_is (cNames)] LPOLESTR *rgszNames,[in] UINT cNames,[out, size_is (cNames)] MEMBERID *pMemId);
  753. [call_as (GetIDsOfNames)] HRESULT LocalGetIDsOfNames (void);
  754. [local] HRESULT Invoke ([in] PVOID pvInstance,[in] MEMBERID memid,[in] WORD wFlags,[in, out] DISPPARAMS *pDispParams,[out] VARIANT *pVarResult,[out] EXCEPINFO *pExcepInfo,[out] UINT *puArgErr);
  755. [call_as (Invoke)] HRESULT LocalInvoke (void);
  756. [local] HRESULT GetDocumentation ([in] MEMBERID memid,[out] BSTR *pBstrName,[out] BSTR *pBstrDocString,[out] DWORD *pdwHelpContext,[out] BSTR *pBstrHelpFile);
  757. [call_as (GetDocumentation)] HRESULT RemoteGetDocumentation ([in] MEMBERID memid,[in] DWORD refPtrFlags,[out] BSTR *pBstrName,[out] BSTR *pBstrDocString,[out] DWORD *pdwHelpContext,[out] BSTR *pBstrHelpFile);
  758. [local]
  759. HRESULT GetDllEntry ([in] MEMBERID memid,[in] INVOKEKIND invKind,[out] BSTR *pBstrDllName,[out] BSTR *pBstrName,[out] WORD *pwOrdinal);
  760. [call_as (GetDllEntry)]
  761. HRESULT RemoteGetDllEntry ([in] MEMBERID memid,[in] INVOKEKIND invKind,[in] DWORD refPtrFlags,[out] BSTR *pBstrDllName,[out] BSTR *pBstrName,[out] WORD *pwOrdinal);
  762. HRESULT GetRefTypeInfo ([in] HREFTYPE hRefType,[out] ITypeInfo **ppTInfo);
  763. [local] HRESULT AddressOfMember ([in] MEMBERID memid,[in] INVOKEKIND invKind,[out] PVOID *ppv);
  764. [call_as (AddressOfMember)] HRESULT LocalAddressOfMember (void);
  765. [local] HRESULT CreateInstance ([in] IUnknown *pUnkOuter,[in] REFIID riid,[out, iid_is (riid)] PVOID *ppvObj);
  766. [call_as (CreateInstance)] HRESULT RemoteCreateInstance ([in] REFIID riid,[out, iid_is (riid)] IUnknown **ppvObj);
  767. HRESULT GetMops ([in] MEMBERID memid,[out] BSTR *pBstrMops);
  768. [local] HRESULT GetContainingTypeLib ([out] ITypeLib **ppTLib,[out] UINT *pIndex);
  769. [call_as (GetContainingTypeLib)] HRESULT RemoteGetContainingTypeLib ([out] ITypeLib **ppTLib,[out] UINT *pIndex);
  770. [local] void ReleaseTypeAttr ([in] TYPEATTR *pTypeAttr);
  771. [call_as (ReleaseTypeAttr)] HRESULT LocalReleaseTypeAttr (void);
  772. [local] void ReleaseFuncDesc ([in] FUNCDESC *pFuncDesc);
  773. [call_as (ReleaseFuncDesc)] HRESULT LocalReleaseFuncDesc (void);
  774. [local] void ReleaseVarDesc ([in] VARDESC *pVarDesc);
  775. [call_as (ReleaseVarDesc)] HRESULT LocalReleaseVarDesc (void);
  776. }
  777. cpp_quote("")
  778. [object, uuid (00020412-0000-0000-C000-000000000046), pointer_default (unique)]
  779. interface ITypeInfo2 : ITypeInfo {
  780. typedef [unique] ITypeInfo2 *LPTYPEINFO2;
  781. cpp_quote("")
  782. HRESULT GetTypeKind ([out] TYPEKIND *pTypeKind);
  783. HRESULT GetTypeFlags ([out] ULONG *pTypeFlags);
  784. HRESULT GetFuncIndexOfMemId ([in] MEMBERID memid,[in] INVOKEKIND invKind,[out] UINT *pFuncIndex);
  785. HRESULT GetVarIndexOfMemId ([in] MEMBERID memid,[out] UINT *pVarIndex);
  786. HRESULT GetCustData ([in] REFGUID guid,[out] VARIANT *pVarVal);
  787. HRESULT GetFuncCustData ([in] UINT index,[in] REFGUID guid,[out] VARIANT *pVarVal);
  788. HRESULT GetParamCustData ([in] UINT indexFunc,[in] UINT indexParam,[in] REFGUID guid,[out] VARIANT *pVarVal);
  789. HRESULT GetVarCustData ([in] UINT index,[in] REFGUID guid,[out] VARIANT *pVarVal);
  790. HRESULT GetImplTypeCustData ([in] UINT index,[in] REFGUID guid,[out] VARIANT *pVarVal);
  791. [local] HRESULT GetDocumentation2 ([in] MEMBERID memid,[in] LCID lcid,[out] BSTR *pbstrHelpString,[out] DWORD *pdwHelpStringContext,[out] BSTR *pbstrHelpStringDll);
  792. [call_as (GetDocumentation2)] HRESULT RemoteGetDocumentation2 ([in] MEMBERID memid,[in] LCID lcid,[in] DWORD refPtrFlags,[out] BSTR *pbstrHelpString,[out] DWORD *pdwHelpStringContext,[out] BSTR *pbstrHelpStringDll);
  793. HRESULT GetAllCustData ([out] CUSTDATA *pCustData);
  794. HRESULT GetAllFuncCustData ([in] UINT index,[out] CUSTDATA *pCustData);
  795. HRESULT GetAllParamCustData ([in] UINT indexFunc,[in] UINT indexParam,[out] CUSTDATA *pCustData);
  796. HRESULT GetAllVarCustData ([in] UINT index,[out] CUSTDATA *pCustData);
  797. HRESULT GetAllImplTypeCustData ([in] UINT index,[out] CUSTDATA *pCustData);
  798. }
  799. cpp_quote("#endif")
  800. cpp_quote("")
  801. cpp_quote("#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP)")
  802. [object, uuid (00020402-0000-0000-C000-000000000046), pointer_default (unique)]
  803. interface ITypeLib : IUnknown {
  804. typedef [v1_enum] enum tagSYSKIND {
  805. SYS_WIN16 = 0,
  806. SYS_WIN32,
  807. SYS_MAC,
  808. SYS_WIN64
  809. } SYSKIND;
  810. cpp_quote("")
  811. typedef [v1_enum] enum tagLIBFLAGS {
  812. LIBFLAG_FRESTRICTED = 0x01,
  813. LIBFLAG_FCONTROL = 0x02,
  814. LIBFLAG_FHIDDEN = 0x04,
  815. LIBFLAG_FHASDISKIMAGE = 0x08
  816. } LIBFLAGS;
  817. cpp_quote("")
  818. typedef [unique] ITypeLib *LPTYPELIB;
  819. cpp_quote("")
  820. typedef struct tagTLIBATTR {
  821. GUID guid;
  822. LCID lcid;
  823. SYSKIND syskind;
  824. WORD wMajorVerNum;
  825. WORD wMinorVerNum;
  826. WORD wLibFlags;
  827. } TLIBATTR,*LPTLIBATTR;
  828. cpp_quote("")
  829. [local] UINT GetTypeInfoCount (void);
  830. [call_as (GetTypeInfoCount)] HRESULT RemoteGetTypeInfoCount ([out] UINT *pcTInfo);
  831. HRESULT GetTypeInfo ([in] UINT index,[out] ITypeInfo **ppTInfo);
  832. HRESULT GetTypeInfoType ([in] UINT index,[out] TYPEKIND *pTKind);
  833. HRESULT GetTypeInfoOfGuid ([in] REFGUID guid,[out] ITypeInfo **ppTinfo);
  834. [local] HRESULT GetLibAttr ([out] TLIBATTR **ppTLibAttr);
  835. [call_as (GetLibAttr)] HRESULT RemoteGetLibAttr ([out] LPTLIBATTR *ppTLibAttr,[out] CLEANLOCALSTORAGE *pDummy);
  836. HRESULT GetTypeComp ([out] ITypeComp **ppTComp);
  837. [local] HRESULT GetDocumentation ([in] INT index,[out] BSTR *pBstrName,[out] BSTR *pBstrDocString,[out] DWORD *pdwHelpContext,[out] BSTR *pBstrHelpFile);
  838. [call_as (GetDocumentation)] HRESULT RemoteGetDocumentation ([in] INT index,[in] DWORD refPtrFlags,[out] BSTR *pBstrName,[out] BSTR *pBstrDocString,[out] DWORD *pdwHelpContext,[out] BSTR *pBstrHelpFile);
  839. [local] HRESULT IsName ([in, out] LPOLESTR szNameBuf,[in] ULONG lHashVal,[out] BOOL *pfName);
  840. [call_as (IsName)] HRESULT RemoteIsName ([in] LPOLESTR szNameBuf,[in] ULONG lHashVal,[out] BOOL *pfName,[out] BSTR *pBstrLibName);
  841. [local] HRESULT FindName ([in, out] LPOLESTR szNameBuf,[in] ULONG lHashVal,[out, size_is (*pcFound), length_is (*pcFound)] ITypeInfo **ppTInfo,[out, size_is (*pcFound), length_is (*pcFound)] MEMBERID *rgMemId,[in, out] USHORT *pcFound);
  842. [call_as (FindName)] HRESULT RemoteFindName ([in] LPOLESTR szNameBuf,[in] ULONG lHashVal,[out, size_is (*pcFound), length_is (*pcFound)] ITypeInfo **ppTInfo,[out, size_is (*pcFound), length_is (*pcFound)] MEMBERID *rgMemId,[in, out] USHORT *pcFound,[out] BSTR *pBstrLibName);
  843. [local] void ReleaseTLibAttr ([in] TLIBATTR *pTLibAttr);
  844. [call_as (ReleaseTLibAttr)] HRESULT LocalReleaseTLibAttr (void);
  845. }
  846. cpp_quote("#endif")
  847. cpp_quote("")
  848. cpp_quote("#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)")
  849. [object, uuid (00020411-0000-0000-C000-000000000046), pointer_default (unique)]
  850. interface ITypeLib2 : ITypeLib {
  851. typedef [unique] ITypeLib2 *LPTYPELIB2;
  852. cpp_quote("")
  853. HRESULT GetCustData ([in] REFGUID guid,[out] VARIANT *pVarVal);
  854. [local] HRESULT GetLibStatistics ([out] ULONG *pcUniqueNames,[out] ULONG *pcchUniqueNames);
  855. [call_as (GetLibStatistics)] HRESULT RemoteGetLibStatistics ([out] ULONG *pcUniqueNames,[out] ULONG *pcchUniqueNames);
  856. [local] HRESULT GetDocumentation2 ([in] INT index,[in] LCID lcid,[out] BSTR *pbstrHelpString,[out] DWORD *pdwHelpStringContext,[out] BSTR *pbstrHelpStringDll);
  857. [call_as (GetDocumentation2)] HRESULT RemoteGetDocumentation2 ([in] INT index,[in] LCID lcid,[in] DWORD refPtrFlags,[out] BSTR *pbstrHelpString,[out] DWORD *pdwHelpStringContext,[out] BSTR *pbstrHelpStringDll);
  858. HRESULT GetAllCustData ([out] CUSTDATA *pCustData);
  859. }
  860. cpp_quote("")
  861. [object, uuid (00020410-0000-0000-C000-000000000046), pointer_default (unique), local]
  862. interface ITypeChangeEvents: IUnknown {
  863. typedef [unique] ITypeChangeEvents *LPTYPECHANGEEVENTS;
  864. cpp_quote("")
  865. typedef enum tagCHANGEKIND {
  866. CHANGEKIND_ADDMEMBER,
  867. CHANGEKIND_DELETEMEMBER,
  868. CHANGEKIND_SETNAMES,
  869. CHANGEKIND_SETDOCUMENTATION,
  870. CHANGEKIND_GENERAL,
  871. CHANGEKIND_INVALIDATE,
  872. CHANGEKIND_CHANGEFAILED,
  873. CHANGEKIND_MAX
  874. } CHANGEKIND;
  875. cpp_quote("")
  876. HRESULT RequestTypeChange ([in] CHANGEKIND changeKind,[in] ITypeInfo *pTInfoBefore,[in] LPOLESTR pStrName,[out] INT *pfCancel);
  877. HRESULT AfterTypeChange ([in] CHANGEKIND changeKind,[in] ITypeInfo *pTInfoAfter,[in] LPOLESTR pStrName);
  878. }
  879. cpp_quote("")
  880. [object, uuid (1cf2b120-547d-101b-8e65-08002b2bd119), pointer_default (unique)]
  881. interface IErrorInfo: IUnknown {
  882. typedef [unique] IErrorInfo *LPERRORINFO;
  883. cpp_quote("")
  884. HRESULT GetGUID ([out] GUID *pGUID);
  885. HRESULT GetSource ([out] BSTR *pBstrSource);
  886. HRESULT GetDescription ([out] BSTR *pBstrDescription);
  887. HRESULT GetHelpFile ([out] BSTR *pBstrHelpFile);
  888. HRESULT GetHelpContext ([out] DWORD *pdwHelpContext);
  889. }
  890. cpp_quote("")
  891. [object, uuid (22f03340-547d-101b-8e65-08002b2bd119), pointer_default (unique)]
  892. interface ICreateErrorInfo: IUnknown {
  893. typedef [unique] ICreateErrorInfo *LPCREATEERRORINFO;
  894. cpp_quote("")
  895. HRESULT SetGUID ([in] REFGUID rguid);
  896. HRESULT SetSource ([in] LPOLESTR szSource);
  897. HRESULT SetDescription ([in] LPOLESTR szDescription);
  898. HRESULT SetHelpFile ([in] LPOLESTR szHelpFile);
  899. HRESULT SetHelpContext ([in] DWORD dwHelpContext);
  900. }
  901. cpp_quote("")
  902. [object, uuid (DF0B3D60-548f-101b-8e65-08002b2bd119), pointer_default (unique)]
  903. interface ISupportErrorInfo: IUnknown {
  904. typedef [unique] ISupportErrorInfo *LPSUPPORTERRORINFO;
  905. cpp_quote("")
  906. HRESULT InterfaceSupportsErrorInfo ([in] REFIID riid);
  907. }
  908. cpp_quote("")
  909. [object, uuid (0000002e-0000-0000-C000-000000000046)]
  910. interface ITypeFactory : IUnknown {
  911. HRESULT CreateFromTypeInfo ([in] ITypeInfo *pTypeInfo,[in] REFIID riid,[out, iid_is (riid)] IUnknown **ppv);
  912. }
  913. cpp_quote("")
  914. [local, object, uuid (0000002d-0000-0000-C000-000000000046)]
  915. interface ITypeMarshal : IUnknown {
  916. HRESULT Size ([in] PVOID pvType,[in] DWORD dwDestContext,[in] PVOID pvDestContext,[out] ULONG *pSize);
  917. HRESULT Marshal ([in] PVOID pvType,[in] DWORD dwDestContext,[in] PVOID pvDestContext,[in] ULONG cbBufferLength,[out] BYTE *pBuffer,[out] ULONG *pcbWritten);
  918. HRESULT Unmarshal ([out] PVOID pvType,[in] DWORD dwFlags,[in] ULONG cbBufferLength,[in] BYTE *pBuffer,[out] ULONG *pcbRead);
  919. HRESULT Free ([in] PVOID pvType);
  920. }
  921. cpp_quote("")
  922. [local, object, uuid (0000002f-0000-0000-C000-000000000046)]
  923. interface IRecordInfo: IUnknown {
  924. typedef [unique] IRecordInfo *LPRECORDINFO;
  925. cpp_quote("")
  926. HRESULT RecordInit ([out] PVOID pvNew);
  927. HRESULT RecordClear ([in] PVOID pvExisting);
  928. HRESULT RecordCopy ([in] PVOID pvExisting,[out] PVOID pvNew);
  929. HRESULT GetGuid ([out] GUID *pguid);
  930. HRESULT GetName ([out] BSTR *pbstrName);
  931. HRESULT GetSize ([out] ULONG *pcbSize);
  932. HRESULT GetTypeInfo ([out] ITypeInfo **ppTypeInfo);
  933. HRESULT GetField ([in] PVOID pvData,[in] LPCOLESTR szFieldName,[out] VARIANT *pvarField);
  934. HRESULT GetFieldNoCopy ([in] PVOID pvData,[in] LPCOLESTR szFieldName,[out] VARIANT *pvarField,[out] PVOID *ppvDataCArray);
  935. HRESULT PutField ([in] ULONG wFlags,[in, out] PVOID pvData,[in] LPCOLESTR szFieldName,[in] VARIANT *pvarField);
  936. HRESULT PutFieldNoCopy ([in] ULONG wFlags,[in, out] PVOID pvData,[in] LPCOLESTR szFieldName,[in] VARIANT *pvarField);
  937. HRESULT GetFieldNames ([in, out] ULONG *pcNames,[out, size_is (*pcNames), length_is (*pcNames)] BSTR *rgBstrNames);
  938. BOOL IsMatchingType ([in] IRecordInfo *pRecordInfo);
  939. PVOID RecordCreate ();
  940. HRESULT RecordCreateCopy ([in] PVOID pvSource,[out] PVOID *ppvDest);
  941. HRESULT RecordDestroy ([in] PVOID pvRecord);
  942. }
  943. cpp_quote("")
  944. [object, uuid (3127ca40-446e-11ce-8135-00aa004bb851), pointer_default (unique)]
  945. interface IErrorLog : IUnknown {
  946. typedef IErrorLog *LPERRORLOG;
  947. cpp_quote("")
  948. HRESULT AddError ([in] LPCOLESTR pszPropName,[in] EXCEPINFO *pExcepInfo);
  949. }
  950. cpp_quote("")
  951. [object, uuid (55272a00-42cb-11ce-8135-00aa004bb851), pointer_default (unique)]
  952. interface IPropertyBag : IUnknown {
  953. typedef IPropertyBag *LPPROPERTYBAG;
  954. cpp_quote("")
  955. [local] HRESULT Read ([in] LPCOLESTR pszPropName,[in, out] VARIANT *pVar,[in, unique] IErrorLog *pErrorLog);
  956. [call_as (Read)] HRESULT RemoteRead ([in] LPCOLESTR pszPropName,[out] VARIANT *pVar,[in, unique] IErrorLog *pErrorLog,[in] DWORD varType,[in] IUnknown *pUnkObj);
  957. HRESULT Write ([in] LPCOLESTR pszPropName,[in] VARIANT *pVar);
  958. }
  959. cpp_quote("#endif")