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