Get rid of the ICOM_CALL macros.
[wine] / include / oaidl.h
1 /*** Autogenerated by WIDL 0.1 from oaidl.idl - Do not edit ***/
2 #include "rpc.h"
3 #include "rpcndr.h"
4
5 #ifndef __WIDL_OAIDL_H
6 #define __WIDL_OAIDL_H
7 #ifdef __cplusplus
8 extern "C" {
9 #endif
10 #include "objidl.h"
11 typedef struct IDispatch IDispatch;
12 typedef struct ITypeInfo ITypeInfo;
13 typedef struct ITypeLib ITypeLib;
14 typedef struct IRecordInfo IRecordInfo;
15 typedef CY CURRENCY;
16
17 typedef struct tagSAFEARRAYBOUND {
18     ULONG cElements;
19     LONG lLbound;
20 } SAFEARRAYBOUND, *LPSAFEARRAYBOUND;
21
22 typedef struct _wireVARIANT *wireVARIANT;
23
24 typedef struct _wireBRECORD *wireBRECORD;
25
26 typedef struct _wireSAFEARR_BSTR {
27     ULONG Size;
28     wireBSTR *aBstr;
29 } SAFEARR_BSTR;
30
31 typedef struct _wireSAFEARR_UNKNOWN {
32     ULONG Size;
33     IUnknown **apUnknown;
34 } SAFEARR_UNKNOWN;
35
36 typedef struct _wireSAFEARR_DISPATCH {
37     ULONG Size;
38     IDispatch **apDispatch;
39 } SAFEARR_DISPATCH;
40
41 typedef struct _wireSAFEARR_VARIANT {
42     ULONG Size;
43     wireVARIANT *aVariant;
44 } SAFEARR_VARIANT;
45
46 typedef struct _wireSAFEARR_BRECORD {
47     ULONG Size;
48     wireBRECORD *aRecord;
49 } SAFEARR_BRECORD;
50
51 typedef struct _wireSAFEARR_HAVEIID {
52     ULONG Size;
53     IUnknown **apUnknown;
54     IID iid;
55 } SAFEARR_HAVEIID;
56
57 typedef enum tagSF_TYPE {
58     SF_ERROR = VT_ERROR,
59     SF_I1 = VT_I1,
60     SF_I2 = VT_I2,
61     SF_I4 = VT_I4,
62     SF_I8 = VT_I8,
63     SF_BSTR = VT_BSTR,
64     SF_UNKNOWN = VT_UNKNOWN,
65     SF_DISPATCH = VT_DISPATCH,
66     SF_VARIANT = VT_VARIANT,
67     SF_RECORD = VT_RECORD,
68     SF_HAVEIID = VT_UNKNOWN | VT_RESERVED
69 } SF_TYPE;
70
71 typedef struct _wireSAFEARRAY_UNION {
72     ULONG sfType;
73     union {
74         SAFEARR_BSTR BstrStr;
75         SAFEARR_UNKNOWN UnknownStr;
76         SAFEARR_DISPATCH DispatchStr;
77         SAFEARR_VARIANT VariantStr;
78         SAFEARR_BRECORD RecordStr;
79         SAFEARR_HAVEIID HaveIidStr;
80         BYTE_SIZEDARR ByteStr;
81         WORD_SIZEDARR WordStr;
82         DWORD_SIZEDARR LongStr;
83         HYPER_SIZEDARR HyperStr;
84     } u;
85 } SAFEARRAYUNION;
86
87 typedef struct _wireSAFEARRAY {
88     USHORT cDims;
89     USHORT fFeatures;
90     ULONG cbElements;
91     ULONG cLocks;
92     SAFEARRAYUNION uArrayStructs;
93     SAFEARRAYBOUND rgsabound[1];
94 } *wireSAFEARRAY;
95
96 typedef wireSAFEARRAY *wirePSAFEARRAY;
97
98 typedef struct tagSAFEARRAY {
99     USHORT cDims;
100     USHORT fFeatures;
101     ULONG cbElements;
102     ULONG cLocks;
103     PVOID pvData;
104     SAFEARRAYBOUND rgsabound[1];
105 } SAFEARRAY;
106
107 typedef SAFEARRAY *LPSAFEARRAY;
108 unsigned long   __RPC_USER LPSAFEARRAY_UserSize     (unsigned long *, unsigned long,   LPSAFEARRAY *);
109 unsigned char * __RPC_USER LPSAFEARRAY_UserMarshal  (unsigned long *, unsigned char *, LPSAFEARRAY *);
110 unsigned char * __RPC_USER LPSAFEARRAY_UserUnmarshal(unsigned long *, unsigned char *, LPSAFEARRAY *);
111 void            __RPC_USER LPSAFEARRAY_UserFree     (unsigned long *, LPSAFEARRAY *);
112
113 #define FADF_AUTO (0x1)
114
115 #define FADF_STATIC (0x2)
116
117 #define FADF_EMBEDDED (0x4)
118
119 #define FADF_FIXEDSIZE (0x10)
120
121 #define FADF_RECORD (0x20)
122
123 #define FADF_HAVEIID (0x40)
124
125 #define FADF_HAVEVARTYPE (0x80)
126
127 #define FADF_BSTR (0x100)
128
129 #define FADF_UNKNOWN (0x200)
130
131 #define FADF_DISPATCH (0x400)
132
133 #define FADF_VARIANT (0x800)
134
135 #define FADF_RESERVED (0xf008)
136
137 #define FADF_CREATEVECTOR (0x2000)
138
139 #if (__STDC__ && !defined(_FORCENAMELESSUNION)) || defined(NONAMELESSUNION)
140 #define __VARIANT_NAME_1 n1
141 #define __VARIANT_NAME_2 n2
142 #define __VARIANT_NAME_3 n3
143 #define __VARIANT_NAME_4 brecVal
144 #else
145 #define __tagVARIANT
146 #define __VARIANT_NAME_1
147 #define __VARIANT_NAME_2
148 #define __VARIANT_NAME_3
149 #define __tagBRECORD
150 #define __VARIANT_NAME_4
151 #endif
152 typedef struct tagVARIANT VARIANT;
153 unsigned long   __RPC_USER VARIANT_UserSize     (unsigned long *, unsigned long,   VARIANT *);
154 unsigned char * __RPC_USER VARIANT_UserMarshal  (unsigned long *, unsigned char *, VARIANT *);
155 unsigned char * __RPC_USER VARIANT_UserUnmarshal(unsigned long *, unsigned char *, VARIANT *);
156 void            __RPC_USER VARIANT_UserFree     (unsigned long *, VARIANT *);
157
158 struct tagVARIANT {
159     union {
160         struct __tagVARIANT {
161             VARTYPE vt;
162             WORD wReserved1;
163             WORD wReserved2;
164             WORD wReserved3;
165             union {
166                 CHAR cVal;
167                 USHORT uiVal;
168                 ULONG ulVal;
169                 INT intVal;
170                 UINT uintVal;
171                 BYTE bVal;
172                 SHORT iVal;
173                 LONG lVal;
174                 FLOAT fltVal;
175                 DOUBLE dblVal;
176                 VARIANT_BOOL boolVal;
177                 SCODE scode;
178                 DATE date;
179                 BSTR bstrVal;
180                 CY cyVal;
181                 IUnknown *punkVal;
182                 IDispatch *pdispVal;
183                 SAFEARRAY *parray;
184                 CHAR *pcVal;
185                 USHORT *puiVal;
186                 ULONG *pulVal;
187                 INT *pintVal;
188                 UINT *puintVal;
189                 BYTE *pbVal;
190                 SHORT *piVal;
191                 LONG *plVal;
192                 FLOAT *pfltVal;
193                 DOUBLE *pdblVal;
194                 VARIANT_BOOL *pboolVal;
195                 SCODE *pscode;
196                 DATE *pdate;
197                 BSTR *pbstrVal;
198                 VARIANT *pvarVal;
199                 PVOID byref;
200                 CY *pcyVal;
201                 DECIMAL *pdecVal;
202                 IUnknown **ppunkVal;
203                 IDispatch **ppdispVal;
204                 SAFEARRAY **pparray;
205                 struct __tagBRECORD {
206                     PVOID pvRecord;
207                     IRecordInfo *pRecInfo;
208                 } __VARIANT_NAME_4;
209             } __VARIANT_NAME_3;
210         } __VARIANT_NAME_2;
211         DECIMAL decVal;
212     } __VARIANT_NAME_1;
213 };
214
215 typedef VARIANT *LPVARIANT;
216
217 typedef VARIANT VARIANTARG;
218
219 typedef VARIANTARG *LPVARIANTARG;
220
221 struct _wireBRECORD {
222     ULONG fFlags;
223     ULONG clSize;
224     IRecordInfo *pRecInfo;
225     byte *pRecord;
226 };
227
228 struct _wireVARIANT {
229     DWORD clSize;
230     DWORD rpcReserved;
231     USHORT vt;
232     USHORT wReserved1;
233     USHORT wReserved2;
234     USHORT wReserved3;
235     union {
236         CHAR cVal;
237         USHORT uiVal;
238         ULONG ulVal;
239         INT intVal;
240         UINT uintVal;
241         BYTE bVal;
242         SHORT iVal;
243         LONG lVal;
244         FLOAT fltVal;
245         DOUBLE dblVal;
246         VARIANT_BOOL boolVal;
247         SCODE scode;
248         DATE date;
249         wireBSTR bstrVal;
250         CY cyVal;
251         DECIMAL decVal;
252         IUnknown *punkVal;
253         IDispatch *pdispVal;
254         wireSAFEARRAY parray;
255         CHAR *pcVal;
256         USHORT *puiVal;
257         ULONG *pulVal;
258         INT *pintVal;
259         UINT *puintVal;
260         BYTE *pbVal;
261         SHORT *piVal;
262         LONG *plVal;
263         FLOAT *pfltVal;
264         DOUBLE *pdblVal;
265         VARIANT_BOOL *pboolVal;
266         SCODE *pscode;
267         DATE *pdate;
268         wireBSTR *pbstrVal;
269         wireVARIANT *pvarVal;
270         CY *pcyVal;
271         DECIMAL *pdecVal;
272         IUnknown **ppunkVal;
273         IDispatch **ppdispVal;
274         wireSAFEARRAY *pparray;
275         wireBRECORD brecVal;
276     } DUMMYUNIONNAME;
277 };
278
279 typedef LONG DISPID;
280
281 typedef DWORD HREFTYPE;
282
283 typedef DISPID MEMBERID;
284
285 typedef enum tagTYPEKIND {
286     TKIND_ENUM = 0,
287     TKIND_RECORD,
288     TKIND_MODULE,
289     TKIND_INTERFACE,
290     TKIND_DISPATCH,
291     TKIND_COCLASS,
292     TKIND_ALIAS,
293     TKIND_UNION,
294     TKIND_MAX
295 } TYPEKIND;
296
297 typedef struct tagTYPEDESC {
298     union {
299         struct tagTYPEDESC *lptdesc;
300         struct tagARRAYDESC *lpadesc;
301         HREFTYPE hreftype;
302     } DUMMYUNIONNAME;
303     VARTYPE vt;
304 } TYPEDESC;
305
306 typedef struct tagARRAYDESC {
307     TYPEDESC tdescElem;
308     USHORT cDims;
309     SAFEARRAYBOUND rgbounds[1];
310 } ARRAYDESC;
311
312 typedef struct tagPARAMDESCEX {
313     ULONG cBytes;
314     VARIANTARG varDefaultValue;
315 } PARAMDESCEX, *LPPARAMDESCEX;
316
317 typedef struct tagPARAMDESC {
318     LPPARAMDESCEX pparamdescex;
319     USHORT wParamFlags;
320 } PARAMDESC, *LPPARAMDESC;
321
322 #define PARAMFLAG_NONE (0x0)
323
324 #define PARAMFLAG_FIN (0x1)
325
326 #define PARAMFLAG_FOUT (0x2)
327
328 #define PARAMFLAG_FLCID (0x4)
329
330 #define PARAMFLAG_FRETVAL (0x8)
331
332 #define PARAMFLAG_FOPT (0x10)
333
334 #define PARAMFLAG_FHASDEFAULT (0x20)
335
336 #define PARAMFLAG_FHASCUSTDATA (0x40)
337
338 typedef struct tagIDLDESC {
339     ULONG dwReserved;
340     USHORT wIDLFlags;
341 } IDLDESC, *LPIDLDESC;
342
343 #define IDLFLAG_NONE (PARAMFLAG_NONE)
344
345 #define IDLFLAG_FIN (PARAMFLAG_FIN)
346
347 #define IDLFLAG_FOUT (PARAMFLAG_FOUT)
348
349 #define IDLFLAG_FLCID (PARAMFLAG_FLCID)
350
351 #define IDLFLAG_FRETVAL (PARAMFLAG_FRETVAL)
352
353 #if 0
354 typedef struct tagELEMDESC {
355     TYPEDESC tdesc;
356     PARAMDESC paramdesc;
357 } ELEMDESC;
358
359 #else
360 typedef struct tagELEMDESC {
361   TYPEDESC tdesc;
362   union {
363     IDLDESC idldesc;
364     PARAMDESC paramdesc;
365   } DUMMYUNIONNAME;
366 } ELEMDESC, *LPELEMDESC;
367 #endif
368 typedef struct tagTYPEATTR {
369     GUID guid;
370     LCID lcid;
371     DWORD dwReserved;
372     MEMBERID memidConstructor;
373     MEMBERID memidDestructor;
374     LPOLESTR lpstrSchema;
375     ULONG cbSizeInstance;
376     TYPEKIND typekind;
377     WORD cFuncs;
378     WORD cVars;
379     WORD cImplTypes;
380     WORD cbSizeVft;
381     WORD cbAlignment;
382     WORD wTypeFlags;
383     WORD wMajorVerNum;
384     WORD wMinorVerNum;
385     TYPEDESC tdescAlias;
386     IDLDESC idldescType;
387 } TYPEATTR, *LPTYPEATTR;
388
389 typedef struct tagDISPPARAMS {
390     VARIANTARG *rgvarg;
391     DISPID *rgdispidNamedArgs;
392     UINT cArgs;
393     UINT cNamedArgs;
394 } DISPPARAMS;
395
396 #if 0
397 typedef struct tagEXCEPINFO {
398     WORD wCode;
399     WORD wReserved;
400     BSTR bstrSource;
401     BSTR bstrDescription;
402     BSTR bstrHelpFile;
403     DWORD dwHelpContext;
404     ULONG pvReserved;
405     ULONG pfnDeferredFillIn;
406     SCODE scode;
407 } EXCEPINFO;
408
409 #else
410 typedef struct tagEXCEPINFO {
411   WORD wCode;
412   WORD wReserved;
413   BSTR bstrSource;
414   BSTR bstrDescription;
415   BSTR bstrHelpFile;
416   DWORD dwHelpContext;
417   PVOID pvReserved;
418   HRESULT (__stdcall *pfnDeferredFillIn)(struct tagEXCEPINFO *);
419   SCODE scode;
420 } EXCEPINFO, *LPEXCEPINFO;
421 #endif
422 typedef enum tagCALLCONV {
423     CC_FASTCALL = 0,
424     CC_CDECL = 1,
425     CC_MSCPASCAL,
426     CC_PASCAL = CC_MSCPASCAL,
427     CC_MACPASCAL,
428     CC_STDCALL,
429     CC_FPFASTCALL,
430     CC_SYSCALL,
431     CC_MPWCDECL,
432     CC_MPWPASCAL,
433     CC_MAX
434 } CALLCONV;
435
436 typedef enum tagFUNCKIND {
437     FUNC_VIRTUAL,
438     FUNC_PUREVIRTUAL,
439     FUNC_NONVIRTUAL,
440     FUNC_STATIC,
441     FUNC_DISPATCH
442 } FUNCKIND;
443
444 typedef enum tagINVOKEKIND {
445     INVOKE_FUNC = 1,
446     INVOKE_PROPERTYGET = 2,
447     INVOKE_PROPERTYPUT = 4,
448     INVOKE_PROPERTYPUTREF = 8
449 } INVOKEKIND;
450
451 typedef struct tagFUNCDESC {
452     MEMBERID memid;
453     SCODE *lprgscode;
454     ELEMDESC *lprgelemdescParam;
455     FUNCKIND funckind;
456     INVOKEKIND invkind;
457     CALLCONV callconv;
458     SHORT cParams;
459     SHORT cParamsOpt;
460     SHORT oVft;
461     SHORT cScodes;
462     ELEMDESC elemdescFunc;
463     WORD wFuncFlags;
464 } FUNCDESC, *LPFUNCDESC;
465
466 typedef enum tagVARKIND {
467     VAR_PERINSTANCE,
468     VAR_STATIC,
469     VAR_CONST,
470     VAR_DISPATCH
471 } VARKIND;
472
473 #define IMPLTYPEFLAG_FDEFAULT (0x1)
474
475 #define IMPLTYPEFLAG_FSOURCE (0x2)
476
477 #define IMPLTYPEFLAG_FRESTRICTED (0x4)
478
479 #define IMPLTYPEFLAG_FDEFAULTVTABLE (0x8)
480
481 typedef struct tagVARDESC {
482     MEMBERID memid;
483     LPOLESTR lpstrSchema;
484     union {
485         ULONG oInst;
486         VARIANT *lpvarValue;
487     } DUMMYUNIONNAME;
488     ELEMDESC elemdescVar;
489     WORD wVarFlags;
490     VARKIND varkind;
491 } VARDESC, *LPVARDESC;
492
493 typedef enum tagTYPEFLAGS {
494     TYPEFLAG_FAPPOBJECT = 0x1,
495     TYPEFLAG_FCANCREATE = 0x2,
496     TYPEFLAG_FLICENSED = 0x4,
497     TYPEFLAG_FPREDECLID = 0x8,
498     TYPEFLAG_FHIDDEN = 0x10,
499     TYPEFLAG_FCONTROL = 0x20,
500     TYPEFLAG_FDUAL = 0x40,
501     TYPEFLAG_FNONEXTENSIBLE = 0x80,
502     TYPEFLAG_FOLEAUTOMATION = 0x100,
503     TYPEFLAG_FRESTRICTED = 0x200,
504     TYPEFLAG_FAGGREGATABLE = 0x400,
505     TYPEFLAG_FREPLACEABLE = 0x800,
506     TYPEFLAG_FDISPATCHABLE = 0x1000,
507     TYPEFLAG_FREVERSEBIND = 0x2000,
508     TYPEFLAG_FPROXY = 0x4000
509 } TYPEFLAGS;
510
511 typedef enum tagFUNCFLAGS {
512     FUNCFLAG_FRESTRICTED = 0x1,
513     FUNCFLAG_FSOURCE = 0x2,
514     FUNCFLAG_FBINDABLE = 0x4,
515     FUNCFLAG_FREQUESTEDIT = 0x8,
516     FUNCFLAG_FDISPLAYBIND = 0x10,
517     FUNCFLAG_FDEFAULTBIND = 0x20,
518     FUNCFLAG_FHIDDEN = 0x40,
519     FUNCFLAG_FUSESGETLASTERROR = 0x80,
520     FUNCFLAG_FDEFAULTCOLLELEM = 0x100,
521     FUNCFLAG_FUIDEFAULT = 0x200,
522     FUNCFLAG_FNONBROWSABLE = 0x400,
523     FUNCFLAG_FREPLACEABLE = 0x800,
524     FUNCFLAG_FIMMEDIATEBIND = 0x1000
525 } FUNCFLAGS;
526
527 typedef enum tagVARFLAGS {
528     VARFLAG_FREADONLY = 0x1,
529     VARFLAG_FSOURCE = 0x2,
530     VARFLAG_FBINDABLE = 0x4,
531     VARFLAG_FREQUESTEDIT = 0x8,
532     VARFLAG_FDISPLAYBIND = 0x10,
533     VARFLAG_FDEFAULTBIND = 0x20,
534     VARFLAG_FHIDDEN = 0x40,
535     VARFLAG_FRESTRICTED = 0x80,
536     VARFLAG_FDEFAULTCOLLELEM = 0x100,
537     VARFLAG_FUIDEFAULT = 0x200,
538     VARFLAG_FNONBROWSABLE = 0x400,
539     VARFLAG_FREPLACEABLE = 0x800,
540     VARFLAG_FIMMEDIATEBIND = 0x1000
541 } VARFLAGS;
542
543 typedef struct tagCLEANLOCALSTORAGE {
544     IUnknown *pInterface;
545     PVOID pStorage;
546     DWORD flags;
547 } CLEANLOCALSTORAGE;
548 unsigned long   __RPC_USER CLEANLOCALSTORAGE_UserSize     (unsigned long *, unsigned long,   CLEANLOCALSTORAGE *);
549 unsigned char * __RPC_USER CLEANLOCALSTORAGE_UserMarshal  (unsigned long *, unsigned char *, CLEANLOCALSTORAGE *);
550 unsigned char * __RPC_USER CLEANLOCALSTORAGE_UserUnmarshal(unsigned long *, unsigned char *, CLEANLOCALSTORAGE *);
551 void            __RPC_USER CLEANLOCALSTORAGE_UserFree     (unsigned long *, CLEANLOCALSTORAGE *);
552
553 typedef struct tagCUSTDATAITEM {
554     GUID guid;
555     VARIANTARG varValue;
556 } CUSTDATAITEM, *LPCUSTDATAITEM;
557
558 typedef struct tagCUSTDATA {
559     DWORD cCustData;
560     LPCUSTDATAITEM prgCustData;
561 } CUSTDATA, *LPCUSTDATA;
562
563 typedef IDispatch *LPDISPATCH;
564
565 #define DISPID_UNKNOWN (-1)
566
567 #define DISPID_VALUE (0)
568
569 #define DISPID_PROPERTYPUT (-3)
570
571 #define DISPID_NEWENUM (-4)
572
573 #define DISPID_EVALUATE (-5)
574
575 #define DISPID_CONSTRUCTOR (-6)
576
577 #define DISPID_DESTRUCTOR (-7)
578
579 #define DISPID_COLLECT (-8)
580
581 /*****************************************************************************
582  * IDispatch interface
583  */
584 DEFINE_GUID(IID_IDispatch, 0x00020400, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46);
585 #if defined(__cplusplus) && !defined(CINTERFACE)
586 struct IDispatch: IUnknown {
587
588     virtual HRESULT STDMETHODCALLTYPE GetTypeInfoCount(
589         UINT* pctinfo) = 0;
590
591     virtual HRESULT STDMETHODCALLTYPE GetTypeInfo(
592         UINT iTInfo,
593         LCID lcid,
594         ITypeInfo** ppTInfo) = 0;
595
596     virtual HRESULT STDMETHODCALLTYPE GetIDsOfNames(
597         REFIID riid,
598         LPOLESTR* rgszNames,
599         UINT cNames,
600         LCID lcid,
601         DISPID* rgDispId) = 0;
602
603     virtual HRESULT STDMETHODCALLTYPE Invoke(
604         DISPID dispIdMember,
605         REFIID riid,
606         LCID lcid,
607         WORD wFlags,
608         DISPPARAMS* pDispParams,
609         VARIANT* pVarResult,
610         EXCEPINFO* pExcepInfo,
611         UINT* puArgErr) = 0;
612
613 } ICOM_COM_INTERFACE_ATTRIBUTE;
614 #else
615 typedef struct IDispatchVtbl IDispatchVtbl;
616 struct IDispatch {
617     const IDispatchVtbl* lpVtbl;
618 };
619 struct IDispatchVtbl {
620     ICOM_MSVTABLE_COMPAT_FIELDS
621
622     /*** IUnknown methods ***/
623     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
624         IDispatch* This,
625         REFIID riid,
626         void** ppvObject);
627
628     ULONG (STDMETHODCALLTYPE *AddRef)(
629         IDispatch* This);
630
631     ULONG (STDMETHODCALLTYPE *Release)(
632         IDispatch* This);
633
634     /*** IDispatch methods ***/
635     HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
636         IDispatch* This,
637         UINT* pctinfo);
638
639     HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
640         IDispatch* This,
641         UINT iTInfo,
642         LCID lcid,
643         ITypeInfo** ppTInfo);
644
645     HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
646         IDispatch* This,
647         REFIID riid,
648         LPOLESTR* rgszNames,
649         UINT cNames,
650         LCID lcid,
651         DISPID* rgDispId);
652
653     HRESULT (STDMETHODCALLTYPE *Invoke)(
654         IDispatch* This,
655         DISPID dispIdMember,
656         REFIID riid,
657         LCID lcid,
658         WORD wFlags,
659         DISPPARAMS* pDispParams,
660         VARIANT* pVarResult,
661         EXCEPINFO* pExcepInfo,
662         UINT* puArgErr);
663
664 };
665
666 #define IDispatch_IMETHODS \
667     /*** IUnknown methods ***/ \
668     HRESULT (STDMETHODCALLTYPE *QueryInterface)(INTERFACE *This, REFIID riid, void** ppvObject); \
669     ULONG (STDMETHODCALLTYPE *AddRef)(INTERFACE *This); \
670     ULONG (STDMETHODCALLTYPE *Release)(INTERFACE *This); \
671     /*** IDispatch methods ***/ \
672     HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(INTERFACE *This, UINT* pctinfo); \
673     HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(INTERFACE *This, UINT iTInfo, LCID lcid, ITypeInfo** ppTInfo); \
674     HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(INTERFACE *This, REFIID riid, LPOLESTR* rgszNames, UINT cNames, LCID lcid, DISPID* rgDispId); \
675     HRESULT (STDMETHODCALLTYPE *Invoke)(INTERFACE *This, DISPID dispIdMember, REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS* pDispParams, VARIANT* pVarResult, EXCEPINFO* pExcepInfo, UINT* puArgErr);
676
677 /*** IUnknown methods ***/
678 #define IDispatch_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
679 #define IDispatch_AddRef(p) (p)->lpVtbl->AddRef(p)
680 #define IDispatch_Release(p) (p)->lpVtbl->Release(p)
681 /*** IDispatch methods ***/
682 #define IDispatch_GetTypeInfoCount(p,a) (p)->lpVtbl->GetTypeInfoCount(p,a)
683 #define IDispatch_GetTypeInfo(p,a,b,c) (p)->lpVtbl->GetTypeInfo(p,a,b,c)
684 #define IDispatch_GetIDsOfNames(p,a,b,c,d,e) (p)->lpVtbl->GetIDsOfNames(p,a,b,c,d,e)
685 #define IDispatch_Invoke(p,a,b,c,d,e,f,g,h) (p)->lpVtbl->Invoke(p,a,b,c,d,e,f,g,h)
686
687 #endif
688
689 HRESULT CALLBACK IDispatch_GetTypeInfoCount_Proxy(
690     IDispatch* This,
691     UINT* pctinfo);
692 void __RPC_STUB IDispatch_GetTypeInfoCount_Stub(
693     struct IRpcStubBuffer* This,
694     struct IRpcChannelBuffer* pRpcChannelBuffer,
695     PRPC_MESSAGE pRpcMessage,
696     DWORD* pdwStubPhase);
697 HRESULT CALLBACK IDispatch_GetTypeInfo_Proxy(
698     IDispatch* This,
699     UINT iTInfo,
700     LCID lcid,
701     ITypeInfo** ppTInfo);
702 void __RPC_STUB IDispatch_GetTypeInfo_Stub(
703     struct IRpcStubBuffer* This,
704     struct IRpcChannelBuffer* pRpcChannelBuffer,
705     PRPC_MESSAGE pRpcMessage,
706     DWORD* pdwStubPhase);
707 HRESULT CALLBACK IDispatch_GetIDsOfNames_Proxy(
708     IDispatch* This,
709     REFIID riid,
710     LPOLESTR* rgszNames,
711     UINT cNames,
712     LCID lcid,
713     DISPID* rgDispId);
714 void __RPC_STUB IDispatch_GetIDsOfNames_Stub(
715     struct IRpcStubBuffer* This,
716     struct IRpcChannelBuffer* pRpcChannelBuffer,
717     PRPC_MESSAGE pRpcMessage,
718     DWORD* pdwStubPhase);
719 HRESULT CALLBACK IDispatch_RemoteInvoke_Proxy(
720     IDispatch* This,
721     DISPID dispIdMember,
722     REFIID riid,
723     LCID lcid,
724     DWORD dwFlags,
725     DISPPARAMS* pDispParams,
726     VARIANT* pVarResult,
727     EXCEPINFO* pExcepInfo,
728     UINT* pArgErr,
729     UINT cVarRef,
730     UINT* rgVarRefIdx,
731     VARIANTARG* rgVarRef);
732 void __RPC_STUB IDispatch_RemoteInvoke_Stub(
733     struct IRpcStubBuffer* This,
734     struct IRpcChannelBuffer* pRpcChannelBuffer,
735     PRPC_MESSAGE pRpcMessage,
736     DWORD* pdwStubPhase);
737 HRESULT CALLBACK IDispatch_Invoke_Proxy(
738     IDispatch* This,
739     DISPID dispIdMember,
740     REFIID riid,
741     LCID lcid,
742     WORD wFlags,
743     DISPPARAMS* pDispParams,
744     VARIANT* pVarResult,
745     EXCEPINFO* pExcepInfo,
746     UINT* puArgErr);
747 HRESULT __RPC_STUB IDispatch_Invoke_Stub(
748     IDispatch* This,
749     DISPID dispIdMember,
750     REFIID riid,
751     LCID lcid,
752     DWORD dwFlags,
753     DISPPARAMS* pDispParams,
754     VARIANT* pVarResult,
755     EXCEPINFO* pExcepInfo,
756     UINT* pArgErr,
757     UINT cVarRef,
758     UINT* rgVarRefIdx,
759     VARIANTARG* rgVarRef);
760
761 typedef struct IEnumVARIANT IEnumVARIANT;
762 typedef IEnumVARIANT *LPENUMVARIANT;
763
764 /*****************************************************************************
765  * IEnumVARIANT interface
766  */
767 DEFINE_GUID(IID_IEnumVARIANT, 0x00020404, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46);
768 #if defined(__cplusplus) && !defined(CINTERFACE)
769 struct IEnumVARIANT: IUnknown {
770
771     virtual HRESULT STDMETHODCALLTYPE Next(
772         ULONG celt,
773         VARIANT* rgVar,
774         ULONG* pCeltFetched) = 0;
775
776     virtual HRESULT STDMETHODCALLTYPE Skip(
777         ULONG celt) = 0;
778
779     virtual HRESULT STDMETHODCALLTYPE Reset(
780         ) = 0;
781
782     virtual HRESULT STDMETHODCALLTYPE Clone(
783         IEnumVARIANT** ppEnum) = 0;
784
785 } ICOM_COM_INTERFACE_ATTRIBUTE;
786 #else
787 typedef struct IEnumVARIANTVtbl IEnumVARIANTVtbl;
788 struct IEnumVARIANT {
789     const IEnumVARIANTVtbl* lpVtbl;
790 };
791 struct IEnumVARIANTVtbl {
792     ICOM_MSVTABLE_COMPAT_FIELDS
793
794     /*** IUnknown methods ***/
795     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
796         IEnumVARIANT* This,
797         REFIID riid,
798         void** ppvObject);
799
800     ULONG (STDMETHODCALLTYPE *AddRef)(
801         IEnumVARIANT* This);
802
803     ULONG (STDMETHODCALLTYPE *Release)(
804         IEnumVARIANT* This);
805
806     /*** IEnumVARIANT methods ***/
807     HRESULT (STDMETHODCALLTYPE *Next)(
808         IEnumVARIANT* This,
809         ULONG celt,
810         VARIANT* rgVar,
811         ULONG* pCeltFetched);
812
813     HRESULT (STDMETHODCALLTYPE *Skip)(
814         IEnumVARIANT* This,
815         ULONG celt);
816
817     HRESULT (STDMETHODCALLTYPE *Reset)(
818         IEnumVARIANT* This);
819
820     HRESULT (STDMETHODCALLTYPE *Clone)(
821         IEnumVARIANT* This,
822         IEnumVARIANT** ppEnum);
823
824 };
825
826 #define IEnumVARIANT_IMETHODS \
827     /*** IUnknown methods ***/ \
828     HRESULT (STDMETHODCALLTYPE *QueryInterface)(INTERFACE *This, REFIID riid, void** ppvObject); \
829     ULONG (STDMETHODCALLTYPE *AddRef)(INTERFACE *This); \
830     ULONG (STDMETHODCALLTYPE *Release)(INTERFACE *This); \
831     /*** IEnumVARIANT methods ***/ \
832     HRESULT (STDMETHODCALLTYPE *Next)(INTERFACE *This, ULONG celt, VARIANT* rgVar, ULONG* pCeltFetched); \
833     HRESULT (STDMETHODCALLTYPE *Skip)(INTERFACE *This, ULONG celt); \
834     HRESULT (STDMETHODCALLTYPE *Reset)(INTERFACE *This); \
835     HRESULT (STDMETHODCALLTYPE *Clone)(INTERFACE *This, IEnumVARIANT** ppEnum);
836
837 /*** IUnknown methods ***/
838 #define IEnumVARIANT_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
839 #define IEnumVARIANT_AddRef(p) (p)->lpVtbl->AddRef(p)
840 #define IEnumVARIANT_Release(p) (p)->lpVtbl->Release(p)
841 /*** IEnumVARIANT methods ***/
842 #define IEnumVARIANT_Next(p,a,b,c) (p)->lpVtbl->Next(p,a,b,c)
843 #define IEnumVARIANT_Skip(p,a) (p)->lpVtbl->Skip(p,a)
844 #define IEnumVARIANT_Reset(p) (p)->lpVtbl->Reset(p)
845 #define IEnumVARIANT_Clone(p,a) (p)->lpVtbl->Clone(p,a)
846
847 #endif
848
849 HRESULT CALLBACK IEnumVARIANT_RemoteNext_Proxy(
850     IEnumVARIANT* This,
851     ULONG celt,
852     VARIANT* rgVar,
853     ULONG* pCeltFetched);
854 void __RPC_STUB IEnumVARIANT_RemoteNext_Stub(
855     struct IRpcStubBuffer* This,
856     struct IRpcChannelBuffer* pRpcChannelBuffer,
857     PRPC_MESSAGE pRpcMessage,
858     DWORD* pdwStubPhase);
859 HRESULT CALLBACK IEnumVARIANT_Next_Proxy(
860     IEnumVARIANT* This,
861     ULONG celt,
862     VARIANT* rgVar,
863     ULONG* pCeltFetched);
864 HRESULT __RPC_STUB IEnumVARIANT_Next_Stub(
865     IEnumVARIANT* This,
866     ULONG celt,
867     VARIANT* rgVar,
868     ULONG* pCeltFetched);
869 HRESULT CALLBACK IEnumVARIANT_Skip_Proxy(
870     IEnumVARIANT* This,
871     ULONG celt);
872 void __RPC_STUB IEnumVARIANT_Skip_Stub(
873     struct IRpcStubBuffer* This,
874     struct IRpcChannelBuffer* pRpcChannelBuffer,
875     PRPC_MESSAGE pRpcMessage,
876     DWORD* pdwStubPhase);
877 HRESULT CALLBACK IEnumVARIANT_Reset_Proxy(
878     IEnumVARIANT* This);
879 void __RPC_STUB IEnumVARIANT_Reset_Stub(
880     struct IRpcStubBuffer* This,
881     struct IRpcChannelBuffer* pRpcChannelBuffer,
882     PRPC_MESSAGE pRpcMessage,
883     DWORD* pdwStubPhase);
884 HRESULT CALLBACK IEnumVARIANT_Clone_Proxy(
885     IEnumVARIANT* This,
886     IEnumVARIANT** ppEnum);
887 void __RPC_STUB IEnumVARIANT_Clone_Stub(
888     struct IRpcStubBuffer* This,
889     struct IRpcChannelBuffer* pRpcChannelBuffer,
890     PRPC_MESSAGE pRpcMessage,
891     DWORD* pdwStubPhase);
892
893 typedef struct ITypeComp ITypeComp;
894 typedef ITypeComp *LPTYPECOMP;
895
896 typedef enum tagDESCKIND {
897     DESCKIND_NONE = 0,
898     DESCKIND_FUNCDESC,
899     DESCKIND_VARDESC,
900     DESCKIND_TYPECOMP,
901     DESCKIND_IMPLICITAPPOBJ,
902     DESCKIND_MAX
903 } DESCKIND;
904
905 typedef union tagBINDPTR {
906     FUNCDESC *lpfuncdesc;
907     VARDESC *lpvardesc;
908     ITypeComp *lptcomp;
909 } BINDPTR, *LPBINDPTR;
910
911 /*****************************************************************************
912  * ITypeComp interface
913  */
914 DEFINE_GUID(IID_ITypeComp, 0x00020403, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46);
915 #if defined(__cplusplus) && !defined(CINTERFACE)
916 struct ITypeComp: IUnknown {
917
918     virtual HRESULT STDMETHODCALLTYPE Bind(
919         LPOLESTR szName,
920         ULONG lHashVal,
921         WORD wFlags,
922         ITypeInfo** ppTInfo,
923         DESCKIND* pDescKind,
924         BINDPTR* pBindPtr) = 0;
925
926     virtual HRESULT STDMETHODCALLTYPE BindType(
927         LPOLESTR szName,
928         ULONG lHashVal,
929         ITypeInfo** ppTInfo,
930         ITypeComp** ppTComp) = 0;
931
932 } ICOM_COM_INTERFACE_ATTRIBUTE;
933 #else
934 typedef struct ITypeCompVtbl ITypeCompVtbl;
935 struct ITypeComp {
936     const ITypeCompVtbl* lpVtbl;
937 };
938 struct ITypeCompVtbl {
939     ICOM_MSVTABLE_COMPAT_FIELDS
940
941     /*** IUnknown methods ***/
942     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
943         ITypeComp* This,
944         REFIID riid,
945         void** ppvObject);
946
947     ULONG (STDMETHODCALLTYPE *AddRef)(
948         ITypeComp* This);
949
950     ULONG (STDMETHODCALLTYPE *Release)(
951         ITypeComp* This);
952
953     /*** ITypeComp methods ***/
954     HRESULT (STDMETHODCALLTYPE *Bind)(
955         ITypeComp* This,
956         LPOLESTR szName,
957         ULONG lHashVal,
958         WORD wFlags,
959         ITypeInfo** ppTInfo,
960         DESCKIND* pDescKind,
961         BINDPTR* pBindPtr);
962
963     HRESULT (STDMETHODCALLTYPE *BindType)(
964         ITypeComp* This,
965         LPOLESTR szName,
966         ULONG lHashVal,
967         ITypeInfo** ppTInfo,
968         ITypeComp** ppTComp);
969
970 };
971
972 #define ITypeComp_IMETHODS \
973     /*** IUnknown methods ***/ \
974     HRESULT (STDMETHODCALLTYPE *QueryInterface)(INTERFACE *This, REFIID riid, void** ppvObject); \
975     ULONG (STDMETHODCALLTYPE *AddRef)(INTERFACE *This); \
976     ULONG (STDMETHODCALLTYPE *Release)(INTERFACE *This); \
977     /*** ITypeComp methods ***/ \
978     HRESULT (STDMETHODCALLTYPE *Bind)(INTERFACE *This, LPOLESTR szName, ULONG lHashVal, WORD wFlags, ITypeInfo** ppTInfo, DESCKIND* pDescKind, BINDPTR* pBindPtr); \
979     HRESULT (STDMETHODCALLTYPE *BindType)(INTERFACE *This, LPOLESTR szName, ULONG lHashVal, ITypeInfo** ppTInfo, ITypeComp** ppTComp);
980
981 /*** IUnknown methods ***/
982 #define ITypeComp_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
983 #define ITypeComp_AddRef(p) (p)->lpVtbl->AddRef(p)
984 #define ITypeComp_Release(p) (p)->lpVtbl->Release(p)
985 /*** ITypeComp methods ***/
986 #define ITypeComp_Bind(p,a,b,c,d,e,f) (p)->lpVtbl->Bind(p,a,b,c,d,e,f)
987 #define ITypeComp_BindType(p,a,b,c,d) (p)->lpVtbl->BindType(p,a,b,c,d)
988
989 #endif
990
991 HRESULT CALLBACK ITypeComp_RemoteBind_Proxy(
992     ITypeComp* This,
993     LPOLESTR szName,
994     ULONG lHashVal,
995     WORD wFlags,
996     ITypeInfo** ppTInfo,
997     DESCKIND* pDescKind,
998     LPFUNCDESC* ppFuncDesc,
999     LPVARDESC* ppVarDesc,
1000     ITypeComp** ppTypeComp,
1001     CLEANLOCALSTORAGE* pDummy);
1002 void __RPC_STUB ITypeComp_RemoteBind_Stub(
1003     struct IRpcStubBuffer* This,
1004     struct IRpcChannelBuffer* pRpcChannelBuffer,
1005     PRPC_MESSAGE pRpcMessage,
1006     DWORD* pdwStubPhase);
1007 HRESULT CALLBACK ITypeComp_Bind_Proxy(
1008     ITypeComp* This,
1009     LPOLESTR szName,
1010     ULONG lHashVal,
1011     WORD wFlags,
1012     ITypeInfo** ppTInfo,
1013     DESCKIND* pDescKind,
1014     BINDPTR* pBindPtr);
1015 HRESULT __RPC_STUB ITypeComp_Bind_Stub(
1016     ITypeComp* This,
1017     LPOLESTR szName,
1018     ULONG lHashVal,
1019     WORD wFlags,
1020     ITypeInfo** ppTInfo,
1021     DESCKIND* pDescKind,
1022     LPFUNCDESC* ppFuncDesc,
1023     LPVARDESC* ppVarDesc,
1024     ITypeComp** ppTypeComp,
1025     CLEANLOCALSTORAGE* pDummy);
1026 HRESULT CALLBACK ITypeComp_RemoteBindType_Proxy(
1027     ITypeComp* This,
1028     LPOLESTR szName,
1029     ULONG lHashVal,
1030     ITypeInfo** ppTInfo);
1031 void __RPC_STUB ITypeComp_RemoteBindType_Stub(
1032     struct IRpcStubBuffer* This,
1033     struct IRpcChannelBuffer* pRpcChannelBuffer,
1034     PRPC_MESSAGE pRpcMessage,
1035     DWORD* pdwStubPhase);
1036 HRESULT CALLBACK ITypeComp_BindType_Proxy(
1037     ITypeComp* This,
1038     LPOLESTR szName,
1039     ULONG lHashVal,
1040     ITypeInfo** ppTInfo,
1041     ITypeComp** ppTComp);
1042 HRESULT __RPC_STUB ITypeComp_BindType_Stub(
1043     ITypeComp* This,
1044     LPOLESTR szName,
1045     ULONG lHashVal,
1046     ITypeInfo** ppTInfo);
1047
1048 typedef ITypeInfo *LPTYPEINFO;
1049
1050 /*****************************************************************************
1051  * ITypeInfo interface
1052  */
1053 DEFINE_GUID(IID_ITypeInfo, 0x00020401, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46);
1054 #if defined(__cplusplus) && !defined(CINTERFACE)
1055 struct ITypeInfo: IUnknown {
1056
1057     virtual HRESULT STDMETHODCALLTYPE GetTypeAttr(
1058         TYPEATTR** ppTypeAttr) = 0;
1059
1060     virtual HRESULT STDMETHODCALLTYPE GetTypeComp(
1061         ITypeComp** ppTComp) = 0;
1062
1063     virtual HRESULT STDMETHODCALLTYPE GetFuncDesc(
1064         UINT index,
1065         FUNCDESC** ppFuncDesc) = 0;
1066
1067     virtual HRESULT STDMETHODCALLTYPE GetVarDesc(
1068         UINT index,
1069         VARDESC** ppVarDesc) = 0;
1070
1071     virtual HRESULT STDMETHODCALLTYPE GetNames(
1072         MEMBERID memid,
1073         BSTR* rgBstrNames,
1074         UINT cMaxNames,
1075         UINT* pcNames) = 0;
1076
1077     virtual HRESULT STDMETHODCALLTYPE GetRefTypeOfImplType(
1078         UINT index,
1079         HREFTYPE* pRefType) = 0;
1080
1081     virtual HRESULT STDMETHODCALLTYPE GetImplTypeFlags(
1082         UINT index,
1083         INT* pImplTypeFlags) = 0;
1084
1085     virtual HRESULT STDMETHODCALLTYPE GetIDsOfNames(
1086         LPOLESTR* rgszNames,
1087         UINT cNames,
1088         MEMBERID* pMemId) = 0;
1089
1090     virtual HRESULT STDMETHODCALLTYPE Invoke(
1091         PVOID pvInstance,
1092         MEMBERID memid,
1093         WORD wFlags,
1094         DISPPARAMS* pDispParams,
1095         VARIANT* pVarResult,
1096         EXCEPINFO* pExcepInfo,
1097         UINT* puArgErr) = 0;
1098
1099     virtual HRESULT STDMETHODCALLTYPE GetDocumentation(
1100         MEMBERID memid,
1101         BSTR* pBstrName,
1102         BSTR* pBstrDocString,
1103         DWORD* pdwHelpContext,
1104         BSTR* pBstrHelpFile) = 0;
1105
1106     virtual HRESULT STDMETHODCALLTYPE GetDllEntry(
1107         MEMBERID memid,
1108         INVOKEKIND invKind,
1109         BSTR* pBstrDllName,
1110         BSTR* pBstrName,
1111         WORD* pwOrdinal) = 0;
1112
1113     virtual HRESULT STDMETHODCALLTYPE GetRefTypeInfo(
1114         HREFTYPE hRefType,
1115         ITypeInfo** ppTInfo) = 0;
1116
1117     virtual HRESULT STDMETHODCALLTYPE AddressOfMember(
1118         MEMBERID memid,
1119         INVOKEKIND invKind,
1120         PVOID* ppv) = 0;
1121
1122     virtual HRESULT STDMETHODCALLTYPE CreateInstance(
1123         IUnknown* pUnkOuter,
1124         REFIID riid,
1125         PVOID* ppvObj) = 0;
1126
1127     virtual HRESULT STDMETHODCALLTYPE GetMops(
1128         MEMBERID memid,
1129         BSTR* pBstrMops) = 0;
1130
1131     virtual HRESULT STDMETHODCALLTYPE GetContainingTypeLib(
1132         ITypeLib** ppTLib,
1133         UINT* pIndex) = 0;
1134
1135     virtual void STDMETHODCALLTYPE ReleaseTypeAttr(
1136         TYPEATTR* pTypeAttr) = 0;
1137
1138     virtual void STDMETHODCALLTYPE ReleaseFuncDesc(
1139         FUNCDESC* pFuncDesc) = 0;
1140
1141     virtual void STDMETHODCALLTYPE ReleaseVarDesc(
1142         VARDESC* pVarDesc) = 0;
1143
1144 } ICOM_COM_INTERFACE_ATTRIBUTE;
1145 #else
1146 typedef struct ITypeInfoVtbl ITypeInfoVtbl;
1147 struct ITypeInfo {
1148     const ITypeInfoVtbl* lpVtbl;
1149 };
1150 struct ITypeInfoVtbl {
1151     ICOM_MSVTABLE_COMPAT_FIELDS
1152
1153     /*** IUnknown methods ***/
1154     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
1155         ITypeInfo* This,
1156         REFIID riid,
1157         void** ppvObject);
1158
1159     ULONG (STDMETHODCALLTYPE *AddRef)(
1160         ITypeInfo* This);
1161
1162     ULONG (STDMETHODCALLTYPE *Release)(
1163         ITypeInfo* This);
1164
1165     /*** ITypeInfo methods ***/
1166     HRESULT (STDMETHODCALLTYPE *GetTypeAttr)(
1167         ITypeInfo* This,
1168         TYPEATTR** ppTypeAttr);
1169
1170     HRESULT (STDMETHODCALLTYPE *GetTypeComp)(
1171         ITypeInfo* This,
1172         ITypeComp** ppTComp);
1173
1174     HRESULT (STDMETHODCALLTYPE *GetFuncDesc)(
1175         ITypeInfo* This,
1176         UINT index,
1177         FUNCDESC** ppFuncDesc);
1178
1179     HRESULT (STDMETHODCALLTYPE *GetVarDesc)(
1180         ITypeInfo* This,
1181         UINT index,
1182         VARDESC** ppVarDesc);
1183
1184     HRESULT (STDMETHODCALLTYPE *GetNames)(
1185         ITypeInfo* This,
1186         MEMBERID memid,
1187         BSTR* rgBstrNames,
1188         UINT cMaxNames,
1189         UINT* pcNames);
1190
1191     HRESULT (STDMETHODCALLTYPE *GetRefTypeOfImplType)(
1192         ITypeInfo* This,
1193         UINT index,
1194         HREFTYPE* pRefType);
1195
1196     HRESULT (STDMETHODCALLTYPE *GetImplTypeFlags)(
1197         ITypeInfo* This,
1198         UINT index,
1199         INT* pImplTypeFlags);
1200
1201     HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
1202         ITypeInfo* This,
1203         LPOLESTR* rgszNames,
1204         UINT cNames,
1205         MEMBERID* pMemId);
1206
1207     HRESULT (STDMETHODCALLTYPE *Invoke)(
1208         ITypeInfo* This,
1209         PVOID pvInstance,
1210         MEMBERID memid,
1211         WORD wFlags,
1212         DISPPARAMS* pDispParams,
1213         VARIANT* pVarResult,
1214         EXCEPINFO* pExcepInfo,
1215         UINT* puArgErr);
1216
1217     HRESULT (STDMETHODCALLTYPE *GetDocumentation)(
1218         ITypeInfo* This,
1219         MEMBERID memid,
1220         BSTR* pBstrName,
1221         BSTR* pBstrDocString,
1222         DWORD* pdwHelpContext,
1223         BSTR* pBstrHelpFile);
1224
1225     HRESULT (STDMETHODCALLTYPE *GetDllEntry)(
1226         ITypeInfo* This,
1227         MEMBERID memid,
1228         INVOKEKIND invKind,
1229         BSTR* pBstrDllName,
1230         BSTR* pBstrName,
1231         WORD* pwOrdinal);
1232
1233     HRESULT (STDMETHODCALLTYPE *GetRefTypeInfo)(
1234         ITypeInfo* This,
1235         HREFTYPE hRefType,
1236         ITypeInfo** ppTInfo);
1237
1238     HRESULT (STDMETHODCALLTYPE *AddressOfMember)(
1239         ITypeInfo* This,
1240         MEMBERID memid,
1241         INVOKEKIND invKind,
1242         PVOID* ppv);
1243
1244     HRESULT (STDMETHODCALLTYPE *CreateInstance)(
1245         ITypeInfo* This,
1246         IUnknown* pUnkOuter,
1247         REFIID riid,
1248         PVOID* ppvObj);
1249
1250     HRESULT (STDMETHODCALLTYPE *GetMops)(
1251         ITypeInfo* This,
1252         MEMBERID memid,
1253         BSTR* pBstrMops);
1254
1255     HRESULT (STDMETHODCALLTYPE *GetContainingTypeLib)(
1256         ITypeInfo* This,
1257         ITypeLib** ppTLib,
1258         UINT* pIndex);
1259
1260     void (STDMETHODCALLTYPE *ReleaseTypeAttr)(
1261         ITypeInfo* This,
1262         TYPEATTR* pTypeAttr);
1263
1264     void (STDMETHODCALLTYPE *ReleaseFuncDesc)(
1265         ITypeInfo* This,
1266         FUNCDESC* pFuncDesc);
1267
1268     void (STDMETHODCALLTYPE *ReleaseVarDesc)(
1269         ITypeInfo* This,
1270         VARDESC* pVarDesc);
1271
1272 };
1273
1274 #define ITypeInfo_IMETHODS \
1275     /*** IUnknown methods ***/ \
1276     HRESULT (STDMETHODCALLTYPE *QueryInterface)(INTERFACE *This, REFIID riid, void** ppvObject); \
1277     ULONG (STDMETHODCALLTYPE *AddRef)(INTERFACE *This); \
1278     ULONG (STDMETHODCALLTYPE *Release)(INTERFACE *This); \
1279     /*** ITypeInfo methods ***/ \
1280     HRESULT (STDMETHODCALLTYPE *GetTypeAttr)(INTERFACE *This, TYPEATTR** ppTypeAttr); \
1281     HRESULT (STDMETHODCALLTYPE *GetTypeComp)(INTERFACE *This, ITypeComp** ppTComp); \
1282     HRESULT (STDMETHODCALLTYPE *GetFuncDesc)(INTERFACE *This, UINT index, FUNCDESC** ppFuncDesc); \
1283     HRESULT (STDMETHODCALLTYPE *GetVarDesc)(INTERFACE *This, UINT index, VARDESC** ppVarDesc); \
1284     HRESULT (STDMETHODCALLTYPE *GetNames)(INTERFACE *This, MEMBERID memid, BSTR* rgBstrNames, UINT cMaxNames, UINT* pcNames); \
1285     HRESULT (STDMETHODCALLTYPE *GetRefTypeOfImplType)(INTERFACE *This, UINT index, HREFTYPE* pRefType); \
1286     HRESULT (STDMETHODCALLTYPE *GetImplTypeFlags)(INTERFACE *This, UINT index, INT* pImplTypeFlags); \
1287     HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(INTERFACE *This, LPOLESTR* rgszNames, UINT cNames, MEMBERID* pMemId); \
1288     HRESULT (STDMETHODCALLTYPE *Invoke)(INTERFACE *This, PVOID pvInstance, MEMBERID memid, WORD wFlags, DISPPARAMS* pDispParams, VARIANT* pVarResult, EXCEPINFO* pExcepInfo, UINT* puArgErr); \
1289     HRESULT (STDMETHODCALLTYPE *GetDocumentation)(INTERFACE *This, MEMBERID memid, BSTR* pBstrName, BSTR* pBstrDocString, DWORD* pdwHelpContext, BSTR* pBstrHelpFile); \
1290     HRESULT (STDMETHODCALLTYPE *GetDllEntry)(INTERFACE *This, MEMBERID memid, INVOKEKIND invKind, BSTR* pBstrDllName, BSTR* pBstrName, WORD* pwOrdinal); \
1291     HRESULT (STDMETHODCALLTYPE *GetRefTypeInfo)(INTERFACE *This, HREFTYPE hRefType, ITypeInfo** ppTInfo); \
1292     HRESULT (STDMETHODCALLTYPE *AddressOfMember)(INTERFACE *This, MEMBERID memid, INVOKEKIND invKind, PVOID* ppv); \
1293     HRESULT (STDMETHODCALLTYPE *CreateInstance)(INTERFACE *This, IUnknown* pUnkOuter, REFIID riid, PVOID* ppvObj); \
1294     HRESULT (STDMETHODCALLTYPE *GetMops)(INTERFACE *This, MEMBERID memid, BSTR* pBstrMops); \
1295     HRESULT (STDMETHODCALLTYPE *GetContainingTypeLib)(INTERFACE *This, ITypeLib** ppTLib, UINT* pIndex); \
1296     void (STDMETHODCALLTYPE *ReleaseTypeAttr)(INTERFACE *This, TYPEATTR* pTypeAttr); \
1297     void (STDMETHODCALLTYPE *ReleaseFuncDesc)(INTERFACE *This, FUNCDESC* pFuncDesc); \
1298     void (STDMETHODCALLTYPE *ReleaseVarDesc)(INTERFACE *This, VARDESC* pVarDesc);
1299
1300 /*** IUnknown methods ***/
1301 #define ITypeInfo_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
1302 #define ITypeInfo_AddRef(p) (p)->lpVtbl->AddRef(p)
1303 #define ITypeInfo_Release(p) (p)->lpVtbl->Release(p)
1304 /*** ITypeInfo methods ***/
1305 #define ITypeInfo_GetTypeAttr(p,a) (p)->lpVtbl->GetTypeAttr(p,a)
1306 #define ITypeInfo_GetTypeComp(p,a) (p)->lpVtbl->GetTypeComp(p,a)
1307 #define ITypeInfo_GetFuncDesc(p,a,b) (p)->lpVtbl->GetFuncDesc(p,a,b)
1308 #define ITypeInfo_GetVarDesc(p,a,b) (p)->lpVtbl->GetVarDesc(p,a,b)
1309 #define ITypeInfo_GetNames(p,a,b,c,d) (p)->lpVtbl->GetNames(p,a,b,c,d)
1310 #define ITypeInfo_GetRefTypeOfImplType(p,a,b) (p)->lpVtbl->GetRefTypeOfImplType(p,a,b)
1311 #define ITypeInfo_GetImplTypeFlags(p,a,b) (p)->lpVtbl->GetImplTypeFlags(p,a,b)
1312 #define ITypeInfo_GetIDsOfNames(p,a,b,c) (p)->lpVtbl->GetIDsOfNames(p,a,b,c)
1313 #define ITypeInfo_Invoke(p,a,b,c,d,e,f,g) (p)->lpVtbl->Invoke(p,a,b,c,d,e,f,g)
1314 #define ITypeInfo_GetDocumentation(p,a,b,c,d,e) (p)->lpVtbl->GetDocumentation(p,a,b,c,d,e)
1315 #define ITypeInfo_GetDllEntry(p,a,b,c,d,e) (p)->lpVtbl->GetDllEntry(p,a,b,c,d,e)
1316 #define ITypeInfo_GetRefTypeInfo(p,a,b) (p)->lpVtbl->GetRefTypeInfo(p,a,b)
1317 #define ITypeInfo_AddressOfMember(p,a,b,c) (p)->lpVtbl->AddressOfMember(p,a,b,c)
1318 #define ITypeInfo_CreateInstance(p,a,b,c) (p)->lpVtbl->CreateInstance(p,a,b,c)
1319 #define ITypeInfo_GetMops(p,a,b) (p)->lpVtbl->GetMops(p,a,b)
1320 #define ITypeInfo_GetContainingTypeLib(p,a,b) (p)->lpVtbl->GetContainingTypeLib(p,a,b)
1321 #define ITypeInfo_ReleaseTypeAttr(p,a) (p)->lpVtbl->ReleaseTypeAttr(p,a)
1322 #define ITypeInfo_ReleaseFuncDesc(p,a) (p)->lpVtbl->ReleaseFuncDesc(p,a)
1323 #define ITypeInfo_ReleaseVarDesc(p,a) (p)->lpVtbl->ReleaseVarDesc(p,a)
1324
1325 #endif
1326
1327 HRESULT CALLBACK ITypeInfo_RemoteGetTypeAttr_Proxy(
1328     ITypeInfo* This,
1329     LPTYPEATTR* ppTypeAttr,
1330     CLEANLOCALSTORAGE* pDummy);
1331 void __RPC_STUB ITypeInfo_RemoteGetTypeAttr_Stub(
1332     struct IRpcStubBuffer* This,
1333     struct IRpcChannelBuffer* pRpcChannelBuffer,
1334     PRPC_MESSAGE pRpcMessage,
1335     DWORD* pdwStubPhase);
1336 HRESULT CALLBACK ITypeInfo_GetTypeAttr_Proxy(
1337     ITypeInfo* This,
1338     TYPEATTR** ppTypeAttr);
1339 HRESULT __RPC_STUB ITypeInfo_GetTypeAttr_Stub(
1340     ITypeInfo* This,
1341     LPTYPEATTR* ppTypeAttr,
1342     CLEANLOCALSTORAGE* pDummy);
1343 HRESULT CALLBACK ITypeInfo_GetTypeComp_Proxy(
1344     ITypeInfo* This,
1345     ITypeComp** ppTComp);
1346 void __RPC_STUB ITypeInfo_GetTypeComp_Stub(
1347     struct IRpcStubBuffer* This,
1348     struct IRpcChannelBuffer* pRpcChannelBuffer,
1349     PRPC_MESSAGE pRpcMessage,
1350     DWORD* pdwStubPhase);
1351 HRESULT CALLBACK ITypeInfo_RemoteGetFuncDesc_Proxy(
1352     ITypeInfo* This,
1353     UINT index,
1354     LPFUNCDESC* ppFuncDesc,
1355     CLEANLOCALSTORAGE* pDummy);
1356 void __RPC_STUB ITypeInfo_RemoteGetFuncDesc_Stub(
1357     struct IRpcStubBuffer* This,
1358     struct IRpcChannelBuffer* pRpcChannelBuffer,
1359     PRPC_MESSAGE pRpcMessage,
1360     DWORD* pdwStubPhase);
1361 HRESULT CALLBACK ITypeInfo_GetFuncDesc_Proxy(
1362     ITypeInfo* This,
1363     UINT index,
1364     FUNCDESC** ppFuncDesc);
1365 HRESULT __RPC_STUB ITypeInfo_GetFuncDesc_Stub(
1366     ITypeInfo* This,
1367     UINT index,
1368     LPFUNCDESC* ppFuncDesc,
1369     CLEANLOCALSTORAGE* pDummy);
1370 HRESULT CALLBACK ITypeInfo_RemoteGetVarDesc_Proxy(
1371     ITypeInfo* This,
1372     UINT index,
1373     LPVARDESC* ppVarDesc,
1374     CLEANLOCALSTORAGE* pDummy);
1375 void __RPC_STUB ITypeInfo_RemoteGetVarDesc_Stub(
1376     struct IRpcStubBuffer* This,
1377     struct IRpcChannelBuffer* pRpcChannelBuffer,
1378     PRPC_MESSAGE pRpcMessage,
1379     DWORD* pdwStubPhase);
1380 HRESULT CALLBACK ITypeInfo_GetVarDesc_Proxy(
1381     ITypeInfo* This,
1382     UINT index,
1383     VARDESC** ppVarDesc);
1384 HRESULT __RPC_STUB ITypeInfo_GetVarDesc_Stub(
1385     ITypeInfo* This,
1386     UINT index,
1387     LPVARDESC* ppVarDesc,
1388     CLEANLOCALSTORAGE* pDummy);
1389 HRESULT CALLBACK ITypeInfo_RemoteGetNames_Proxy(
1390     ITypeInfo* This,
1391     MEMBERID memid,
1392     BSTR* rgBstrNames,
1393     UINT cMaxNames,
1394     UINT* pcNames);
1395 void __RPC_STUB ITypeInfo_RemoteGetNames_Stub(
1396     struct IRpcStubBuffer* This,
1397     struct IRpcChannelBuffer* pRpcChannelBuffer,
1398     PRPC_MESSAGE pRpcMessage,
1399     DWORD* pdwStubPhase);
1400 HRESULT CALLBACK ITypeInfo_GetNames_Proxy(
1401     ITypeInfo* This,
1402     MEMBERID memid,
1403     BSTR* rgBstrNames,
1404     UINT cMaxNames,
1405     UINT* pcNames);
1406 HRESULT __RPC_STUB ITypeInfo_GetNames_Stub(
1407     ITypeInfo* This,
1408     MEMBERID memid,
1409     BSTR* rgBstrNames,
1410     UINT cMaxNames,
1411     UINT* pcNames);
1412 HRESULT CALLBACK ITypeInfo_GetRefTypeOfImplType_Proxy(
1413     ITypeInfo* This,
1414     UINT index,
1415     HREFTYPE* pRefType);
1416 void __RPC_STUB ITypeInfo_GetRefTypeOfImplType_Stub(
1417     struct IRpcStubBuffer* This,
1418     struct IRpcChannelBuffer* pRpcChannelBuffer,
1419     PRPC_MESSAGE pRpcMessage,
1420     DWORD* pdwStubPhase);
1421 HRESULT CALLBACK ITypeInfo_GetImplTypeFlags_Proxy(
1422     ITypeInfo* This,
1423     UINT index,
1424     INT* pImplTypeFlags);
1425 void __RPC_STUB ITypeInfo_GetImplTypeFlags_Stub(
1426     struct IRpcStubBuffer* This,
1427     struct IRpcChannelBuffer* pRpcChannelBuffer,
1428     PRPC_MESSAGE pRpcMessage,
1429     DWORD* pdwStubPhase);
1430 HRESULT CALLBACK ITypeInfo_LocalGetIDsOfNames_Proxy(
1431     ITypeInfo* This);
1432 void __RPC_STUB ITypeInfo_LocalGetIDsOfNames_Stub(
1433     struct IRpcStubBuffer* This,
1434     struct IRpcChannelBuffer* pRpcChannelBuffer,
1435     PRPC_MESSAGE pRpcMessage,
1436     DWORD* pdwStubPhase);
1437 HRESULT CALLBACK ITypeInfo_GetIDsOfNames_Proxy(
1438     ITypeInfo* This,
1439     LPOLESTR* rgszNames,
1440     UINT cNames,
1441     MEMBERID* pMemId);
1442 HRESULT __RPC_STUB ITypeInfo_GetIDsOfNames_Stub(
1443     ITypeInfo* This);
1444 HRESULT CALLBACK ITypeInfo_LocalInvoke_Proxy(
1445     ITypeInfo* This);
1446 void __RPC_STUB ITypeInfo_LocalInvoke_Stub(
1447     struct IRpcStubBuffer* This,
1448     struct IRpcChannelBuffer* pRpcChannelBuffer,
1449     PRPC_MESSAGE pRpcMessage,
1450     DWORD* pdwStubPhase);
1451 HRESULT CALLBACK ITypeInfo_Invoke_Proxy(
1452     ITypeInfo* This,
1453     PVOID pvInstance,
1454     MEMBERID memid,
1455     WORD wFlags,
1456     DISPPARAMS* pDispParams,
1457     VARIANT* pVarResult,
1458     EXCEPINFO* pExcepInfo,
1459     UINT* puArgErr);
1460 HRESULT __RPC_STUB ITypeInfo_Invoke_Stub(
1461     ITypeInfo* This);
1462 HRESULT CALLBACK ITypeInfo_RemoteGetDocumentation_Proxy(
1463     ITypeInfo* This,
1464     MEMBERID memid,
1465     DWORD refPtrFlags,
1466     BSTR* pBstrName,
1467     BSTR* pBstrDocString,
1468     DWORD* pdwHelpContext,
1469     BSTR* pBstrHelpFile);
1470 void __RPC_STUB ITypeInfo_RemoteGetDocumentation_Stub(
1471     struct IRpcStubBuffer* This,
1472     struct IRpcChannelBuffer* pRpcChannelBuffer,
1473     PRPC_MESSAGE pRpcMessage,
1474     DWORD* pdwStubPhase);
1475 HRESULT CALLBACK ITypeInfo_GetDocumentation_Proxy(
1476     ITypeInfo* This,
1477     MEMBERID memid,
1478     BSTR* pBstrName,
1479     BSTR* pBstrDocString,
1480     DWORD* pdwHelpContext,
1481     BSTR* pBstrHelpFile);
1482 HRESULT __RPC_STUB ITypeInfo_GetDocumentation_Stub(
1483     ITypeInfo* This,
1484     MEMBERID memid,
1485     DWORD refPtrFlags,
1486     BSTR* pBstrName,
1487     BSTR* pBstrDocString,
1488     DWORD* pdwHelpContext,
1489     BSTR* pBstrHelpFile);
1490 HRESULT CALLBACK ITypeInfo_RemoteGetDllEntry_Proxy(
1491     ITypeInfo* This,
1492     MEMBERID memid,
1493     INVOKEKIND invKind,
1494     DWORD refPtrFlags,
1495     BSTR* pBstrDllName,
1496     BSTR* pBstrName,
1497     WORD* pwOrdinal);
1498 void __RPC_STUB ITypeInfo_RemoteGetDllEntry_Stub(
1499     struct IRpcStubBuffer* This,
1500     struct IRpcChannelBuffer* pRpcChannelBuffer,
1501     PRPC_MESSAGE pRpcMessage,
1502     DWORD* pdwStubPhase);
1503 HRESULT CALLBACK ITypeInfo_GetDllEntry_Proxy(
1504     ITypeInfo* This,
1505     MEMBERID memid,
1506     INVOKEKIND invKind,
1507     BSTR* pBstrDllName,
1508     BSTR* pBstrName,
1509     WORD* pwOrdinal);
1510 HRESULT __RPC_STUB ITypeInfo_GetDllEntry_Stub(
1511     ITypeInfo* This,
1512     MEMBERID memid,
1513     INVOKEKIND invKind,
1514     DWORD refPtrFlags,
1515     BSTR* pBstrDllName,
1516     BSTR* pBstrName,
1517     WORD* pwOrdinal);
1518 HRESULT CALLBACK ITypeInfo_GetRefTypeInfo_Proxy(
1519     ITypeInfo* This,
1520     HREFTYPE hRefType,
1521     ITypeInfo** ppTInfo);
1522 void __RPC_STUB ITypeInfo_GetRefTypeInfo_Stub(
1523     struct IRpcStubBuffer* This,
1524     struct IRpcChannelBuffer* pRpcChannelBuffer,
1525     PRPC_MESSAGE pRpcMessage,
1526     DWORD* pdwStubPhase);
1527 HRESULT CALLBACK ITypeInfo_LocalAddressOfMember_Proxy(
1528     ITypeInfo* This);
1529 void __RPC_STUB ITypeInfo_LocalAddressOfMember_Stub(
1530     struct IRpcStubBuffer* This,
1531     struct IRpcChannelBuffer* pRpcChannelBuffer,
1532     PRPC_MESSAGE pRpcMessage,
1533     DWORD* pdwStubPhase);
1534 HRESULT CALLBACK ITypeInfo_AddressOfMember_Proxy(
1535     ITypeInfo* This,
1536     MEMBERID memid,
1537     INVOKEKIND invKind,
1538     PVOID* ppv);
1539 HRESULT __RPC_STUB ITypeInfo_AddressOfMember_Stub(
1540     ITypeInfo* This);
1541 HRESULT CALLBACK ITypeInfo_RemoteCreateInstance_Proxy(
1542     ITypeInfo* This,
1543     REFIID riid,
1544     IUnknown** ppvObj);
1545 void __RPC_STUB ITypeInfo_RemoteCreateInstance_Stub(
1546     struct IRpcStubBuffer* This,
1547     struct IRpcChannelBuffer* pRpcChannelBuffer,
1548     PRPC_MESSAGE pRpcMessage,
1549     DWORD* pdwStubPhase);
1550 HRESULT CALLBACK ITypeInfo_CreateInstance_Proxy(
1551     ITypeInfo* This,
1552     IUnknown* pUnkOuter,
1553     REFIID riid,
1554     PVOID* ppvObj);
1555 HRESULT __RPC_STUB ITypeInfo_CreateInstance_Stub(
1556     ITypeInfo* This,
1557     REFIID riid,
1558     IUnknown** ppvObj);
1559 HRESULT CALLBACK ITypeInfo_GetMops_Proxy(
1560     ITypeInfo* This,
1561     MEMBERID memid,
1562     BSTR* pBstrMops);
1563 void __RPC_STUB ITypeInfo_GetMops_Stub(
1564     struct IRpcStubBuffer* This,
1565     struct IRpcChannelBuffer* pRpcChannelBuffer,
1566     PRPC_MESSAGE pRpcMessage,
1567     DWORD* pdwStubPhase);
1568 HRESULT CALLBACK ITypeInfo_RemoteGetContainingTypeLib_Proxy(
1569     ITypeInfo* This,
1570     ITypeLib** ppTLib,
1571     UINT* pIndex);
1572 void __RPC_STUB ITypeInfo_RemoteGetContainingTypeLib_Stub(
1573     struct IRpcStubBuffer* This,
1574     struct IRpcChannelBuffer* pRpcChannelBuffer,
1575     PRPC_MESSAGE pRpcMessage,
1576     DWORD* pdwStubPhase);
1577 HRESULT CALLBACK ITypeInfo_GetContainingTypeLib_Proxy(
1578     ITypeInfo* This,
1579     ITypeLib** ppTLib,
1580     UINT* pIndex);
1581 HRESULT __RPC_STUB ITypeInfo_GetContainingTypeLib_Stub(
1582     ITypeInfo* This,
1583     ITypeLib** ppTLib,
1584     UINT* pIndex);
1585 HRESULT CALLBACK ITypeInfo_LocalReleaseTypeAttr_Proxy(
1586     ITypeInfo* This);
1587 void __RPC_STUB ITypeInfo_LocalReleaseTypeAttr_Stub(
1588     struct IRpcStubBuffer* This,
1589     struct IRpcChannelBuffer* pRpcChannelBuffer,
1590     PRPC_MESSAGE pRpcMessage,
1591     DWORD* pdwStubPhase);
1592 void CALLBACK ITypeInfo_ReleaseTypeAttr_Proxy(
1593     ITypeInfo* This,
1594     TYPEATTR* pTypeAttr);
1595 HRESULT __RPC_STUB ITypeInfo_ReleaseTypeAttr_Stub(
1596     ITypeInfo* This);
1597 HRESULT CALLBACK ITypeInfo_LocalReleaseFuncDesc_Proxy(
1598     ITypeInfo* This);
1599 void __RPC_STUB ITypeInfo_LocalReleaseFuncDesc_Stub(
1600     struct IRpcStubBuffer* This,
1601     struct IRpcChannelBuffer* pRpcChannelBuffer,
1602     PRPC_MESSAGE pRpcMessage,
1603     DWORD* pdwStubPhase);
1604 void CALLBACK ITypeInfo_ReleaseFuncDesc_Proxy(
1605     ITypeInfo* This,
1606     FUNCDESC* pFuncDesc);
1607 HRESULT __RPC_STUB ITypeInfo_ReleaseFuncDesc_Stub(
1608     ITypeInfo* This);
1609 HRESULT CALLBACK ITypeInfo_LocalReleaseVarDesc_Proxy(
1610     ITypeInfo* This);
1611 void __RPC_STUB ITypeInfo_LocalReleaseVarDesc_Stub(
1612     struct IRpcStubBuffer* This,
1613     struct IRpcChannelBuffer* pRpcChannelBuffer,
1614     PRPC_MESSAGE pRpcMessage,
1615     DWORD* pdwStubPhase);
1616 void CALLBACK ITypeInfo_ReleaseVarDesc_Proxy(
1617     ITypeInfo* This,
1618     VARDESC* pVarDesc);
1619 HRESULT __RPC_STUB ITypeInfo_ReleaseVarDesc_Stub(
1620     ITypeInfo* This);
1621
1622 typedef struct ITypeInfo2 ITypeInfo2;
1623 typedef ITypeInfo2 *LPTYPEINFO2;
1624
1625 /*****************************************************************************
1626  * ITypeInfo2 interface
1627  */
1628 DEFINE_GUID(IID_ITypeInfo2, 0x00020412, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46);
1629 #if defined(__cplusplus) && !defined(CINTERFACE)
1630 struct ITypeInfo2: ITypeInfo {
1631
1632     virtual HRESULT STDMETHODCALLTYPE GetTypeKind(
1633         TYPEKIND* pTypeKind) = 0;
1634
1635     virtual HRESULT STDMETHODCALLTYPE GetTypeFlags(
1636         ULONG* pTypeFlags) = 0;
1637
1638     virtual HRESULT STDMETHODCALLTYPE GetFuncIndexOfMemId(
1639         MEMBERID memid,
1640         INVOKEKIND invKind,
1641         UINT* pFuncIndex) = 0;
1642
1643     virtual HRESULT STDMETHODCALLTYPE GetVarIndexOfMemId(
1644         MEMBERID memid,
1645         UINT* pVarIndex) = 0;
1646
1647     virtual HRESULT STDMETHODCALLTYPE GetCustData(
1648         REFGUID guid,
1649         VARIANT* pVarVal) = 0;
1650
1651     virtual HRESULT STDMETHODCALLTYPE GetFuncCustData(
1652         UINT index,
1653         REFGUID guid,
1654         VARIANT* pVarVal) = 0;
1655
1656     virtual HRESULT STDMETHODCALLTYPE GetParamCustData(
1657         UINT indexFunc,
1658         UINT indexParam,
1659         REFGUID guid,
1660         VARIANT* pVarVal) = 0;
1661
1662     virtual HRESULT STDMETHODCALLTYPE GetVarCustData(
1663         UINT index,
1664         REFGUID guid,
1665         VARIANT* pVarVal) = 0;
1666
1667     virtual HRESULT STDMETHODCALLTYPE GetImplTypeCustData(
1668         UINT index,
1669         REFGUID guid,
1670         VARIANT* pVarVal) = 0;
1671
1672     virtual HRESULT STDMETHODCALLTYPE GetDocumentation2(
1673         MEMBERID memid,
1674         LCID lcid,
1675         BSTR* pbstrHelpString,
1676         DWORD* pdwHelpStringContext,
1677         BSTR* pbstrHelpStringDll) = 0;
1678
1679     virtual HRESULT STDMETHODCALLTYPE GetAllCustData(
1680         CUSTDATA* pCustData) = 0;
1681
1682     virtual HRESULT STDMETHODCALLTYPE GetAllFuncCustData(
1683         UINT index,
1684         CUSTDATA* pCustData) = 0;
1685
1686     virtual HRESULT STDMETHODCALLTYPE GetAllParamCustData(
1687         UINT indexFunc,
1688         UINT indexParam,
1689         CUSTDATA* pCustData) = 0;
1690
1691     virtual HRESULT STDMETHODCALLTYPE GetAllVarCustData(
1692         UINT index,
1693         CUSTDATA* pCustData) = 0;
1694
1695     virtual HRESULT STDMETHODCALLTYPE GetAllImplTypeCustData(
1696         UINT index,
1697         CUSTDATA* pCustData) = 0;
1698
1699 } ICOM_COM_INTERFACE_ATTRIBUTE;
1700 #else
1701 typedef struct ITypeInfo2Vtbl ITypeInfo2Vtbl;
1702 struct ITypeInfo2 {
1703     const ITypeInfo2Vtbl* lpVtbl;
1704 };
1705 struct ITypeInfo2Vtbl {
1706     ICOM_MSVTABLE_COMPAT_FIELDS
1707
1708     /*** IUnknown methods ***/
1709     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
1710         ITypeInfo2* This,
1711         REFIID riid,
1712         void** ppvObject);
1713
1714     ULONG (STDMETHODCALLTYPE *AddRef)(
1715         ITypeInfo2* This);
1716
1717     ULONG (STDMETHODCALLTYPE *Release)(
1718         ITypeInfo2* This);
1719
1720     /*** ITypeInfo methods ***/
1721     HRESULT (STDMETHODCALLTYPE *GetTypeAttr)(
1722         ITypeInfo2* This,
1723         TYPEATTR** ppTypeAttr);
1724
1725     HRESULT (STDMETHODCALLTYPE *GetTypeComp)(
1726         ITypeInfo2* This,
1727         ITypeComp** ppTComp);
1728
1729     HRESULT (STDMETHODCALLTYPE *GetFuncDesc)(
1730         ITypeInfo2* This,
1731         UINT index,
1732         FUNCDESC** ppFuncDesc);
1733
1734     HRESULT (STDMETHODCALLTYPE *GetVarDesc)(
1735         ITypeInfo2* This,
1736         UINT index,
1737         VARDESC** ppVarDesc);
1738
1739     HRESULT (STDMETHODCALLTYPE *GetNames)(
1740         ITypeInfo2* This,
1741         MEMBERID memid,
1742         BSTR* rgBstrNames,
1743         UINT cMaxNames,
1744         UINT* pcNames);
1745
1746     HRESULT (STDMETHODCALLTYPE *GetRefTypeOfImplType)(
1747         ITypeInfo2* This,
1748         UINT index,
1749         HREFTYPE* pRefType);
1750
1751     HRESULT (STDMETHODCALLTYPE *GetImplTypeFlags)(
1752         ITypeInfo2* This,
1753         UINT index,
1754         INT* pImplTypeFlags);
1755
1756     HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
1757         ITypeInfo2* This,
1758         LPOLESTR* rgszNames,
1759         UINT cNames,
1760         MEMBERID* pMemId);
1761
1762     HRESULT (STDMETHODCALLTYPE *Invoke)(
1763         ITypeInfo2* This,
1764         PVOID pvInstance,
1765         MEMBERID memid,
1766         WORD wFlags,
1767         DISPPARAMS* pDispParams,
1768         VARIANT* pVarResult,
1769         EXCEPINFO* pExcepInfo,
1770         UINT* puArgErr);
1771
1772     HRESULT (STDMETHODCALLTYPE *GetDocumentation)(
1773         ITypeInfo2* This,
1774         MEMBERID memid,
1775         BSTR* pBstrName,
1776         BSTR* pBstrDocString,
1777         DWORD* pdwHelpContext,
1778         BSTR* pBstrHelpFile);
1779
1780     HRESULT (STDMETHODCALLTYPE *GetDllEntry)(
1781         ITypeInfo2* This,
1782         MEMBERID memid,
1783         INVOKEKIND invKind,
1784         BSTR* pBstrDllName,
1785         BSTR* pBstrName,
1786         WORD* pwOrdinal);
1787
1788     HRESULT (STDMETHODCALLTYPE *GetRefTypeInfo)(
1789         ITypeInfo2* This,
1790         HREFTYPE hRefType,
1791         ITypeInfo** ppTInfo);
1792
1793     HRESULT (STDMETHODCALLTYPE *AddressOfMember)(
1794         ITypeInfo2* This,
1795         MEMBERID memid,
1796         INVOKEKIND invKind,
1797         PVOID* ppv);
1798
1799     HRESULT (STDMETHODCALLTYPE *CreateInstance)(
1800         ITypeInfo2* This,
1801         IUnknown* pUnkOuter,
1802         REFIID riid,
1803         PVOID* ppvObj);
1804
1805     HRESULT (STDMETHODCALLTYPE *GetMops)(
1806         ITypeInfo2* This,
1807         MEMBERID memid,
1808         BSTR* pBstrMops);
1809
1810     HRESULT (STDMETHODCALLTYPE *GetContainingTypeLib)(
1811         ITypeInfo2* This,
1812         ITypeLib** ppTLib,
1813         UINT* pIndex);
1814
1815     void (STDMETHODCALLTYPE *ReleaseTypeAttr)(
1816         ITypeInfo2* This,
1817         TYPEATTR* pTypeAttr);
1818
1819     void (STDMETHODCALLTYPE *ReleaseFuncDesc)(
1820         ITypeInfo2* This,
1821         FUNCDESC* pFuncDesc);
1822
1823     void (STDMETHODCALLTYPE *ReleaseVarDesc)(
1824         ITypeInfo2* This,
1825         VARDESC* pVarDesc);
1826
1827     /*** ITypeInfo2 methods ***/
1828     HRESULT (STDMETHODCALLTYPE *GetTypeKind)(
1829         ITypeInfo2* This,
1830         TYPEKIND* pTypeKind);
1831
1832     HRESULT (STDMETHODCALLTYPE *GetTypeFlags)(
1833         ITypeInfo2* This,
1834         ULONG* pTypeFlags);
1835
1836     HRESULT (STDMETHODCALLTYPE *GetFuncIndexOfMemId)(
1837         ITypeInfo2* This,
1838         MEMBERID memid,
1839         INVOKEKIND invKind,
1840         UINT* pFuncIndex);
1841
1842     HRESULT (STDMETHODCALLTYPE *GetVarIndexOfMemId)(
1843         ITypeInfo2* This,
1844         MEMBERID memid,
1845         UINT* pVarIndex);
1846
1847     HRESULT (STDMETHODCALLTYPE *GetCustData)(
1848         ITypeInfo2* This,
1849         REFGUID guid,
1850         VARIANT* pVarVal);
1851
1852     HRESULT (STDMETHODCALLTYPE *GetFuncCustData)(
1853         ITypeInfo2* This,
1854         UINT index,
1855         REFGUID guid,
1856         VARIANT* pVarVal);
1857
1858     HRESULT (STDMETHODCALLTYPE *GetParamCustData)(
1859         ITypeInfo2* This,
1860         UINT indexFunc,
1861         UINT indexParam,
1862         REFGUID guid,
1863         VARIANT* pVarVal);
1864
1865     HRESULT (STDMETHODCALLTYPE *GetVarCustData)(
1866         ITypeInfo2* This,
1867         UINT index,
1868         REFGUID guid,
1869         VARIANT* pVarVal);
1870
1871     HRESULT (STDMETHODCALLTYPE *GetImplTypeCustData)(
1872         ITypeInfo2* This,
1873         UINT index,
1874         REFGUID guid,
1875         VARIANT* pVarVal);
1876
1877     HRESULT (STDMETHODCALLTYPE *GetDocumentation2)(
1878         ITypeInfo2* This,
1879         MEMBERID memid,
1880         LCID lcid,
1881         BSTR* pbstrHelpString,
1882         DWORD* pdwHelpStringContext,
1883         BSTR* pbstrHelpStringDll);
1884
1885     HRESULT (STDMETHODCALLTYPE *GetAllCustData)(
1886         ITypeInfo2* This,
1887         CUSTDATA* pCustData);
1888
1889     HRESULT (STDMETHODCALLTYPE *GetAllFuncCustData)(
1890         ITypeInfo2* This,
1891         UINT index,
1892         CUSTDATA* pCustData);
1893
1894     HRESULT (STDMETHODCALLTYPE *GetAllParamCustData)(
1895         ITypeInfo2* This,
1896         UINT indexFunc,
1897         UINT indexParam,
1898         CUSTDATA* pCustData);
1899
1900     HRESULT (STDMETHODCALLTYPE *GetAllVarCustData)(
1901         ITypeInfo2* This,
1902         UINT index,
1903         CUSTDATA* pCustData);
1904
1905     HRESULT (STDMETHODCALLTYPE *GetAllImplTypeCustData)(
1906         ITypeInfo2* This,
1907         UINT index,
1908         CUSTDATA* pCustData);
1909
1910 };
1911
1912 #define ITypeInfo2_IMETHODS \
1913     /*** IUnknown methods ***/ \
1914     HRESULT (STDMETHODCALLTYPE *QueryInterface)(INTERFACE *This, REFIID riid, void** ppvObject); \
1915     ULONG (STDMETHODCALLTYPE *AddRef)(INTERFACE *This); \
1916     ULONG (STDMETHODCALLTYPE *Release)(INTERFACE *This); \
1917     /*** ITypeInfo methods ***/ \
1918     HRESULT (STDMETHODCALLTYPE *GetTypeAttr)(INTERFACE *This, TYPEATTR** ppTypeAttr); \
1919     HRESULT (STDMETHODCALLTYPE *GetTypeComp)(INTERFACE *This, ITypeComp** ppTComp); \
1920     HRESULT (STDMETHODCALLTYPE *GetFuncDesc)(INTERFACE *This, UINT index, FUNCDESC** ppFuncDesc); \
1921     HRESULT (STDMETHODCALLTYPE *GetVarDesc)(INTERFACE *This, UINT index, VARDESC** ppVarDesc); \
1922     HRESULT (STDMETHODCALLTYPE *GetNames)(INTERFACE *This, MEMBERID memid, BSTR* rgBstrNames, UINT cMaxNames, UINT* pcNames); \
1923     HRESULT (STDMETHODCALLTYPE *GetRefTypeOfImplType)(INTERFACE *This, UINT index, HREFTYPE* pRefType); \
1924     HRESULT (STDMETHODCALLTYPE *GetImplTypeFlags)(INTERFACE *This, UINT index, INT* pImplTypeFlags); \
1925     HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(INTERFACE *This, LPOLESTR* rgszNames, UINT cNames, MEMBERID* pMemId); \
1926     HRESULT (STDMETHODCALLTYPE *Invoke)(INTERFACE *This, PVOID pvInstance, MEMBERID memid, WORD wFlags, DISPPARAMS* pDispParams, VARIANT* pVarResult, EXCEPINFO* pExcepInfo, UINT* puArgErr); \
1927     HRESULT (STDMETHODCALLTYPE *GetDocumentation)(INTERFACE *This, MEMBERID memid, BSTR* pBstrName, BSTR* pBstrDocString, DWORD* pdwHelpContext, BSTR* pBstrHelpFile); \
1928     HRESULT (STDMETHODCALLTYPE *GetDllEntry)(INTERFACE *This, MEMBERID memid, INVOKEKIND invKind, BSTR* pBstrDllName, BSTR* pBstrName, WORD* pwOrdinal); \
1929     HRESULT (STDMETHODCALLTYPE *GetRefTypeInfo)(INTERFACE *This, HREFTYPE hRefType, ITypeInfo** ppTInfo); \
1930     HRESULT (STDMETHODCALLTYPE *AddressOfMember)(INTERFACE *This, MEMBERID memid, INVOKEKIND invKind, PVOID* ppv); \
1931     HRESULT (STDMETHODCALLTYPE *CreateInstance)(INTERFACE *This, IUnknown* pUnkOuter, REFIID riid, PVOID* ppvObj); \
1932     HRESULT (STDMETHODCALLTYPE *GetMops)(INTERFACE *This, MEMBERID memid, BSTR* pBstrMops); \
1933     HRESULT (STDMETHODCALLTYPE *GetContainingTypeLib)(INTERFACE *This, ITypeLib** ppTLib, UINT* pIndex); \
1934     void (STDMETHODCALLTYPE *ReleaseTypeAttr)(INTERFACE *This, TYPEATTR* pTypeAttr); \
1935     void (STDMETHODCALLTYPE *ReleaseFuncDesc)(INTERFACE *This, FUNCDESC* pFuncDesc); \
1936     void (STDMETHODCALLTYPE *ReleaseVarDesc)(INTERFACE *This, VARDESC* pVarDesc); \
1937     /*** ITypeInfo2 methods ***/ \
1938     HRESULT (STDMETHODCALLTYPE *GetTypeKind)(INTERFACE *This, TYPEKIND* pTypeKind); \
1939     HRESULT (STDMETHODCALLTYPE *GetTypeFlags)(INTERFACE *This, ULONG* pTypeFlags); \
1940     HRESULT (STDMETHODCALLTYPE *GetFuncIndexOfMemId)(INTERFACE *This, MEMBERID memid, INVOKEKIND invKind, UINT* pFuncIndex); \
1941     HRESULT (STDMETHODCALLTYPE *GetVarIndexOfMemId)(INTERFACE *This, MEMBERID memid, UINT* pVarIndex); \
1942     HRESULT (STDMETHODCALLTYPE *GetCustData)(INTERFACE *This, REFGUID guid, VARIANT* pVarVal); \
1943     HRESULT (STDMETHODCALLTYPE *GetFuncCustData)(INTERFACE *This, UINT index, REFGUID guid, VARIANT* pVarVal); \
1944     HRESULT (STDMETHODCALLTYPE *GetParamCustData)(INTERFACE *This, UINT indexFunc, UINT indexParam, REFGUID guid, VARIANT* pVarVal); \
1945     HRESULT (STDMETHODCALLTYPE *GetVarCustData)(INTERFACE *This, UINT index, REFGUID guid, VARIANT* pVarVal); \
1946     HRESULT (STDMETHODCALLTYPE *GetImplTypeCustData)(INTERFACE *This, UINT index, REFGUID guid, VARIANT* pVarVal); \
1947     HRESULT (STDMETHODCALLTYPE *GetDocumentation2)(INTERFACE *This, MEMBERID memid, LCID lcid, BSTR* pbstrHelpString, DWORD* pdwHelpStringContext, BSTR* pbstrHelpStringDll); \
1948     HRESULT (STDMETHODCALLTYPE *GetAllCustData)(INTERFACE *This, CUSTDATA* pCustData); \
1949     HRESULT (STDMETHODCALLTYPE *GetAllFuncCustData)(INTERFACE *This, UINT index, CUSTDATA* pCustData); \
1950     HRESULT (STDMETHODCALLTYPE *GetAllParamCustData)(INTERFACE *This, UINT indexFunc, UINT indexParam, CUSTDATA* pCustData); \
1951     HRESULT (STDMETHODCALLTYPE *GetAllVarCustData)(INTERFACE *This, UINT index, CUSTDATA* pCustData); \
1952     HRESULT (STDMETHODCALLTYPE *GetAllImplTypeCustData)(INTERFACE *This, UINT index, CUSTDATA* pCustData);
1953
1954 /*** IUnknown methods ***/
1955 #define ITypeInfo2_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
1956 #define ITypeInfo2_AddRef(p) (p)->lpVtbl->AddRef(p)
1957 #define ITypeInfo2_Release(p) (p)->lpVtbl->Release(p)
1958 /*** ITypeInfo methods ***/
1959 #define ITypeInfo2_GetTypeAttr(p,a) (p)->lpVtbl->GetTypeAttr(p,a)
1960 #define ITypeInfo2_GetTypeComp(p,a) (p)->lpVtbl->GetTypeComp(p,a)
1961 #define ITypeInfo2_GetFuncDesc(p,a,b) (p)->lpVtbl->GetFuncDesc(p,a,b)
1962 #define ITypeInfo2_GetVarDesc(p,a,b) (p)->lpVtbl->GetVarDesc(p,a,b)
1963 #define ITypeInfo2_GetNames(p,a,b,c,d) (p)->lpVtbl->GetNames(p,a,b,c,d)
1964 #define ITypeInfo2_GetRefTypeOfImplType(p,a,b) (p)->lpVtbl->GetRefTypeOfImplType(p,a,b)
1965 #define ITypeInfo2_GetImplTypeFlags(p,a,b) (p)->lpVtbl->GetImplTypeFlags(p,a,b)
1966 #define ITypeInfo2_GetIDsOfNames(p,a,b,c) (p)->lpVtbl->GetIDsOfNames(p,a,b,c)
1967 #define ITypeInfo2_Invoke(p,a,b,c,d,e,f,g) (p)->lpVtbl->Invoke(p,a,b,c,d,e,f,g)
1968 #define ITypeInfo2_GetDocumentation(p,a,b,c,d,e) (p)->lpVtbl->GetDocumentation(p,a,b,c,d,e)
1969 #define ITypeInfo2_GetDllEntry(p,a,b,c,d,e) (p)->lpVtbl->GetDllEntry(p,a,b,c,d,e)
1970 #define ITypeInfo2_GetRefTypeInfo(p,a,b) (p)->lpVtbl->GetRefTypeInfo(p,a,b)
1971 #define ITypeInfo2_AddressOfMember(p,a,b,c) (p)->lpVtbl->AddressOfMember(p,a,b,c)
1972 #define ITypeInfo2_CreateInstance(p,a,b,c) (p)->lpVtbl->CreateInstance(p,a,b,c)
1973 #define ITypeInfo2_GetMops(p,a,b) (p)->lpVtbl->GetMops(p,a,b)
1974 #define ITypeInfo2_GetContainingTypeLib(p,a,b) (p)->lpVtbl->GetContainingTypeLib(p,a,b)
1975 #define ITypeInfo2_ReleaseTypeAttr(p,a) (p)->lpVtbl->ReleaseTypeAttr(p,a)
1976 #define ITypeInfo2_ReleaseFuncDesc(p,a) (p)->lpVtbl->ReleaseFuncDesc(p,a)
1977 #define ITypeInfo2_ReleaseVarDesc(p,a) (p)->lpVtbl->ReleaseVarDesc(p,a)
1978 /*** ITypeInfo2 methods ***/
1979 #define ITypeInfo2_GetTypeKind(p,a) (p)->lpVtbl->GetTypeKind(p,a)
1980 #define ITypeInfo2_GetTypeFlags(p,a) (p)->lpVtbl->GetTypeFlags(p,a)
1981 #define ITypeInfo2_GetFuncIndexOfMemId(p,a,b,c) (p)->lpVtbl->GetFuncIndexOfMemId(p,a,b,c)
1982 #define ITypeInfo2_GetVarIndexOfMemId(p,a,b) (p)->lpVtbl->GetVarIndexOfMemId(p,a,b)
1983 #define ITypeInfo2_GetCustData(p,a,b) (p)->lpVtbl->GetCustData(p,a,b)
1984 #define ITypeInfo2_GetFuncCustData(p,a,b,c) (p)->lpVtbl->GetFuncCustData(p,a,b,c)
1985 #define ITypeInfo2_GetParamCustData(p,a,b,c,d) (p)->lpVtbl->GetParamCustData(p,a,b,c,d)
1986 #define ITypeInfo2_GetVarCustData(p,a,b,c) (p)->lpVtbl->GetVarCustData(p,a,b,c)
1987 #define ITypeInfo2_GetImplTypeCustData(p,a,b,c) (p)->lpVtbl->GetImplTypeCustData(p,a,b,c)
1988 #define ITypeInfo2_GetDocumentation2(p,a,b,c,d,e) (p)->lpVtbl->GetDocumentation2(p,a,b,c,d,e)
1989 #define ITypeInfo2_GetAllCustData(p,a) (p)->lpVtbl->GetAllCustData(p,a)
1990 #define ITypeInfo2_GetAllFuncCustData(p,a,b) (p)->lpVtbl->GetAllFuncCustData(p,a,b)
1991 #define ITypeInfo2_GetAllParamCustData(p,a,b,c) (p)->lpVtbl->GetAllParamCustData(p,a,b,c)
1992 #define ITypeInfo2_GetAllVarCustData(p,a,b) (p)->lpVtbl->GetAllVarCustData(p,a,b)
1993 #define ITypeInfo2_GetAllImplTypeCustData(p,a,b) (p)->lpVtbl->GetAllImplTypeCustData(p,a,b)
1994
1995 #endif
1996
1997 HRESULT CALLBACK ITypeInfo2_GetTypeKind_Proxy(
1998     ITypeInfo2* This,
1999     TYPEKIND* pTypeKind);
2000 void __RPC_STUB ITypeInfo2_GetTypeKind_Stub(
2001     struct IRpcStubBuffer* This,
2002     struct IRpcChannelBuffer* pRpcChannelBuffer,
2003     PRPC_MESSAGE pRpcMessage,
2004     DWORD* pdwStubPhase);
2005 HRESULT CALLBACK ITypeInfo2_GetTypeFlags_Proxy(
2006     ITypeInfo2* This,
2007     ULONG* pTypeFlags);
2008 void __RPC_STUB ITypeInfo2_GetTypeFlags_Stub(
2009     struct IRpcStubBuffer* This,
2010     struct IRpcChannelBuffer* pRpcChannelBuffer,
2011     PRPC_MESSAGE pRpcMessage,
2012     DWORD* pdwStubPhase);
2013 HRESULT CALLBACK ITypeInfo2_GetFuncIndexOfMemId_Proxy(
2014     ITypeInfo2* This,
2015     MEMBERID memid,
2016     INVOKEKIND invKind,
2017     UINT* pFuncIndex);
2018 void __RPC_STUB ITypeInfo2_GetFuncIndexOfMemId_Stub(
2019     struct IRpcStubBuffer* This,
2020     struct IRpcChannelBuffer* pRpcChannelBuffer,
2021     PRPC_MESSAGE pRpcMessage,
2022     DWORD* pdwStubPhase);
2023 HRESULT CALLBACK ITypeInfo2_GetVarIndexOfMemId_Proxy(
2024     ITypeInfo2* This,
2025     MEMBERID memid,
2026     UINT* pVarIndex);
2027 void __RPC_STUB ITypeInfo2_GetVarIndexOfMemId_Stub(
2028     struct IRpcStubBuffer* This,
2029     struct IRpcChannelBuffer* pRpcChannelBuffer,
2030     PRPC_MESSAGE pRpcMessage,
2031     DWORD* pdwStubPhase);
2032 HRESULT CALLBACK ITypeInfo2_GetCustData_Proxy(
2033     ITypeInfo2* This,
2034     REFGUID guid,
2035     VARIANT* pVarVal);
2036 void __RPC_STUB ITypeInfo2_GetCustData_Stub(
2037     struct IRpcStubBuffer* This,
2038     struct IRpcChannelBuffer* pRpcChannelBuffer,
2039     PRPC_MESSAGE pRpcMessage,
2040     DWORD* pdwStubPhase);
2041 HRESULT CALLBACK ITypeInfo2_GetFuncCustData_Proxy(
2042     ITypeInfo2* This,
2043     UINT index,
2044     REFGUID guid,
2045     VARIANT* pVarVal);
2046 void __RPC_STUB ITypeInfo2_GetFuncCustData_Stub(
2047     struct IRpcStubBuffer* This,
2048     struct IRpcChannelBuffer* pRpcChannelBuffer,
2049     PRPC_MESSAGE pRpcMessage,
2050     DWORD* pdwStubPhase);
2051 HRESULT CALLBACK ITypeInfo2_GetParamCustData_Proxy(
2052     ITypeInfo2* This,
2053     UINT indexFunc,
2054     UINT indexParam,
2055     REFGUID guid,
2056     VARIANT* pVarVal);
2057 void __RPC_STUB ITypeInfo2_GetParamCustData_Stub(
2058     struct IRpcStubBuffer* This,
2059     struct IRpcChannelBuffer* pRpcChannelBuffer,
2060     PRPC_MESSAGE pRpcMessage,
2061     DWORD* pdwStubPhase);
2062 HRESULT CALLBACK ITypeInfo2_GetVarCustData_Proxy(
2063     ITypeInfo2* This,
2064     UINT index,
2065     REFGUID guid,
2066     VARIANT* pVarVal);
2067 void __RPC_STUB ITypeInfo2_GetVarCustData_Stub(
2068     struct IRpcStubBuffer* This,
2069     struct IRpcChannelBuffer* pRpcChannelBuffer,
2070     PRPC_MESSAGE pRpcMessage,
2071     DWORD* pdwStubPhase);
2072 HRESULT CALLBACK ITypeInfo2_GetImplTypeCustData_Proxy(
2073     ITypeInfo2* This,
2074     UINT index,
2075     REFGUID guid,
2076     VARIANT* pVarVal);
2077 void __RPC_STUB ITypeInfo2_GetImplTypeCustData_Stub(
2078     struct IRpcStubBuffer* This,
2079     struct IRpcChannelBuffer* pRpcChannelBuffer,
2080     PRPC_MESSAGE pRpcMessage,
2081     DWORD* pdwStubPhase);
2082 HRESULT CALLBACK ITypeInfo2_RemoteGetDocumentation2_Proxy(
2083     ITypeInfo2* This,
2084     MEMBERID memid,
2085     LCID lcid,
2086     DWORD refPtrFlags,
2087     BSTR* pbstrHelpString,
2088     DWORD* pdwHelpStringContext,
2089     BSTR* pbstrHelpStringDll);
2090 void __RPC_STUB ITypeInfo2_RemoteGetDocumentation2_Stub(
2091     struct IRpcStubBuffer* This,
2092     struct IRpcChannelBuffer* pRpcChannelBuffer,
2093     PRPC_MESSAGE pRpcMessage,
2094     DWORD* pdwStubPhase);
2095 HRESULT CALLBACK ITypeInfo2_GetDocumentation2_Proxy(
2096     ITypeInfo2* This,
2097     MEMBERID memid,
2098     LCID lcid,
2099     BSTR* pbstrHelpString,
2100     DWORD* pdwHelpStringContext,
2101     BSTR* pbstrHelpStringDll);
2102 HRESULT __RPC_STUB ITypeInfo2_GetDocumentation2_Stub(
2103     ITypeInfo2* This,
2104     MEMBERID memid,
2105     LCID lcid,
2106     DWORD refPtrFlags,
2107     BSTR* pbstrHelpString,
2108     DWORD* pdwHelpStringContext,
2109     BSTR* pbstrHelpStringDll);
2110 HRESULT CALLBACK ITypeInfo2_GetAllCustData_Proxy(
2111     ITypeInfo2* This,
2112     CUSTDATA* pCustData);
2113 void __RPC_STUB ITypeInfo2_GetAllCustData_Stub(
2114     struct IRpcStubBuffer* This,
2115     struct IRpcChannelBuffer* pRpcChannelBuffer,
2116     PRPC_MESSAGE pRpcMessage,
2117     DWORD* pdwStubPhase);
2118 HRESULT CALLBACK ITypeInfo2_GetAllFuncCustData_Proxy(
2119     ITypeInfo2* This,
2120     UINT index,
2121     CUSTDATA* pCustData);
2122 void __RPC_STUB ITypeInfo2_GetAllFuncCustData_Stub(
2123     struct IRpcStubBuffer* This,
2124     struct IRpcChannelBuffer* pRpcChannelBuffer,
2125     PRPC_MESSAGE pRpcMessage,
2126     DWORD* pdwStubPhase);
2127 HRESULT CALLBACK ITypeInfo2_GetAllParamCustData_Proxy(
2128     ITypeInfo2* This,
2129     UINT indexFunc,
2130     UINT indexParam,
2131     CUSTDATA* pCustData);
2132 void __RPC_STUB ITypeInfo2_GetAllParamCustData_Stub(
2133     struct IRpcStubBuffer* This,
2134     struct IRpcChannelBuffer* pRpcChannelBuffer,
2135     PRPC_MESSAGE pRpcMessage,
2136     DWORD* pdwStubPhase);
2137 HRESULT CALLBACK ITypeInfo2_GetAllVarCustData_Proxy(
2138     ITypeInfo2* This,
2139     UINT index,
2140     CUSTDATA* pCustData);
2141 void __RPC_STUB ITypeInfo2_GetAllVarCustData_Stub(
2142     struct IRpcStubBuffer* This,
2143     struct IRpcChannelBuffer* pRpcChannelBuffer,
2144     PRPC_MESSAGE pRpcMessage,
2145     DWORD* pdwStubPhase);
2146 HRESULT CALLBACK ITypeInfo2_GetAllImplTypeCustData_Proxy(
2147     ITypeInfo2* This,
2148     UINT index,
2149     CUSTDATA* pCustData);
2150 void __RPC_STUB ITypeInfo2_GetAllImplTypeCustData_Stub(
2151     struct IRpcStubBuffer* This,
2152     struct IRpcChannelBuffer* pRpcChannelBuffer,
2153     PRPC_MESSAGE pRpcMessage,
2154     DWORD* pdwStubPhase);
2155
2156 typedef ITypeLib *LPTYPELIB;
2157
2158 typedef enum tagSYSKIND {
2159     SYS_WIN16 = 0,
2160     SYS_WIN32,
2161     SYS_MAC
2162 } SYSKIND;
2163
2164 typedef enum tagLIBFLAGS {
2165     LIBFLAG_FRESTRICTED = 0x1,
2166     LIBFLAG_FCONTROL = 0x2,
2167     LIBFLAG_FHIDDEN = 0x4,
2168     LIBFLAG_FHASDISKIMAGE = 0x8
2169 } LIBFLAGS;
2170
2171 typedef struct tagTLIBATTR {
2172     GUID guid;
2173     LCID lcid;
2174     SYSKIND syskind;
2175     WORD wMajorVerNum;
2176     WORD wMinorVerNum;
2177     WORD wLibFlags;
2178 } TLIBATTR, *LPTLIBATTR;
2179
2180 /*****************************************************************************
2181  * ITypeLib interface
2182  */
2183 DEFINE_GUID(IID_ITypeLib, 0x00020402, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46);
2184 #if defined(__cplusplus) && !defined(CINTERFACE)
2185 struct ITypeLib: IUnknown {
2186
2187     virtual UINT STDMETHODCALLTYPE GetTypeInfoCount(
2188         ) = 0;
2189
2190     virtual HRESULT STDMETHODCALLTYPE GetTypeInfo(
2191         UINT index,
2192         ITypeInfo** ppTInfo) = 0;
2193
2194     virtual HRESULT STDMETHODCALLTYPE GetTypeInfoType(
2195         UINT index,
2196         TYPEKIND* pTKind) = 0;
2197
2198     virtual HRESULT STDMETHODCALLTYPE GetTypeInfoOfGuid(
2199         REFGUID guid,
2200         ITypeInfo** ppTinfo) = 0;
2201
2202     virtual HRESULT STDMETHODCALLTYPE GetLibAttr(
2203         TLIBATTR** ppTLibAttr) = 0;
2204
2205     virtual HRESULT STDMETHODCALLTYPE GetTypeComp(
2206         ITypeComp** ppTComp) = 0;
2207
2208     virtual HRESULT STDMETHODCALLTYPE GetDocumentation(
2209         INT index,
2210         BSTR* pBstrName,
2211         BSTR* pBstrDocString,
2212         DWORD* pdwHelpContext,
2213         BSTR* pBstrHelpFile) = 0;
2214
2215     virtual HRESULT STDMETHODCALLTYPE IsName(
2216         LPOLESTR szNameBuf,
2217         ULONG lHashVal,
2218         BOOL* pfName) = 0;
2219
2220     virtual HRESULT STDMETHODCALLTYPE FindName(
2221         LPOLESTR szNameBuf,
2222         ULONG lHashVal,
2223         ITypeInfo** ppTInfo,
2224         MEMBERID* rgMemId,
2225         USHORT* pcFound) = 0;
2226
2227     virtual void STDMETHODCALLTYPE ReleaseTLibAttr(
2228         TLIBATTR* pTLibAttr) = 0;
2229
2230 } ICOM_COM_INTERFACE_ATTRIBUTE;
2231 #else
2232 typedef struct ITypeLibVtbl ITypeLibVtbl;
2233 struct ITypeLib {
2234     const ITypeLibVtbl* lpVtbl;
2235 };
2236 struct ITypeLibVtbl {
2237     ICOM_MSVTABLE_COMPAT_FIELDS
2238
2239     /*** IUnknown methods ***/
2240     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
2241         ITypeLib* This,
2242         REFIID riid,
2243         void** ppvObject);
2244
2245     ULONG (STDMETHODCALLTYPE *AddRef)(
2246         ITypeLib* This);
2247
2248     ULONG (STDMETHODCALLTYPE *Release)(
2249         ITypeLib* This);
2250
2251     /*** ITypeLib methods ***/
2252     UINT (STDMETHODCALLTYPE *GetTypeInfoCount)(
2253         ITypeLib* This);
2254
2255     HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
2256         ITypeLib* This,
2257         UINT index,
2258         ITypeInfo** ppTInfo);
2259
2260     HRESULT (STDMETHODCALLTYPE *GetTypeInfoType)(
2261         ITypeLib* This,
2262         UINT index,
2263         TYPEKIND* pTKind);
2264
2265     HRESULT (STDMETHODCALLTYPE *GetTypeInfoOfGuid)(
2266         ITypeLib* This,
2267         REFGUID guid,
2268         ITypeInfo** ppTinfo);
2269
2270     HRESULT (STDMETHODCALLTYPE *GetLibAttr)(
2271         ITypeLib* This,
2272         TLIBATTR** ppTLibAttr);
2273
2274     HRESULT (STDMETHODCALLTYPE *GetTypeComp)(
2275         ITypeLib* This,
2276         ITypeComp** ppTComp);
2277
2278     HRESULT (STDMETHODCALLTYPE *GetDocumentation)(
2279         ITypeLib* This,
2280         INT index,
2281         BSTR* pBstrName,
2282         BSTR* pBstrDocString,
2283         DWORD* pdwHelpContext,
2284         BSTR* pBstrHelpFile);
2285
2286     HRESULT (STDMETHODCALLTYPE *IsName)(
2287         ITypeLib* This,
2288         LPOLESTR szNameBuf,
2289         ULONG lHashVal,
2290         BOOL* pfName);
2291
2292     HRESULT (STDMETHODCALLTYPE *FindName)(
2293         ITypeLib* This,
2294         LPOLESTR szNameBuf,
2295         ULONG lHashVal,
2296         ITypeInfo** ppTInfo,
2297         MEMBERID* rgMemId,
2298         USHORT* pcFound);
2299
2300     void (STDMETHODCALLTYPE *ReleaseTLibAttr)(
2301         ITypeLib* This,
2302         TLIBATTR* pTLibAttr);
2303
2304 };
2305
2306 #define ITypeLib_IMETHODS \
2307     /*** IUnknown methods ***/ \
2308     HRESULT (STDMETHODCALLTYPE *QueryInterface)(INTERFACE *This, REFIID riid, void** ppvObject); \
2309     ULONG (STDMETHODCALLTYPE *AddRef)(INTERFACE *This); \
2310     ULONG (STDMETHODCALLTYPE *Release)(INTERFACE *This); \
2311     /*** ITypeLib methods ***/ \
2312     UINT (STDMETHODCALLTYPE *GetTypeInfoCount)(INTERFACE *This); \
2313     HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(INTERFACE *This, UINT index, ITypeInfo** ppTInfo); \
2314     HRESULT (STDMETHODCALLTYPE *GetTypeInfoType)(INTERFACE *This, UINT index, TYPEKIND* pTKind); \
2315     HRESULT (STDMETHODCALLTYPE *GetTypeInfoOfGuid)(INTERFACE *This, REFGUID guid, ITypeInfo** ppTinfo); \
2316     HRESULT (STDMETHODCALLTYPE *GetLibAttr)(INTERFACE *This, TLIBATTR** ppTLibAttr); \
2317     HRESULT (STDMETHODCALLTYPE *GetTypeComp)(INTERFACE *This, ITypeComp** ppTComp); \
2318     HRESULT (STDMETHODCALLTYPE *GetDocumentation)(INTERFACE *This, INT index, BSTR* pBstrName, BSTR* pBstrDocString, DWORD* pdwHelpContext, BSTR* pBstrHelpFile); \
2319     HRESULT (STDMETHODCALLTYPE *IsName)(INTERFACE *This, LPOLESTR szNameBuf, ULONG lHashVal, BOOL* pfName); \
2320     HRESULT (STDMETHODCALLTYPE *FindName)(INTERFACE *This, LPOLESTR szNameBuf, ULONG lHashVal, ITypeInfo** ppTInfo, MEMBERID* rgMemId, USHORT* pcFound); \
2321     void (STDMETHODCALLTYPE *ReleaseTLibAttr)(INTERFACE *This, TLIBATTR* pTLibAttr);
2322
2323 /*** IUnknown methods ***/
2324 #define ITypeLib_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
2325 #define ITypeLib_AddRef(p) (p)->lpVtbl->AddRef(p)
2326 #define ITypeLib_Release(p) (p)->lpVtbl->Release(p)
2327 /*** ITypeLib methods ***/
2328 #define ITypeLib_GetTypeInfoCount(p) (p)->lpVtbl->GetTypeInfoCount(p)
2329 #define ITypeLib_GetTypeInfo(p,a,b) (p)->lpVtbl->GetTypeInfo(p,a,b)
2330 #define ITypeLib_GetTypeInfoType(p,a,b) (p)->lpVtbl->GetTypeInfoType(p,a,b)
2331 #define ITypeLib_GetTypeInfoOfGuid(p,a,b) (p)->lpVtbl->GetTypeInfoOfGuid(p,a,b)
2332 #define ITypeLib_GetLibAttr(p,a) (p)->lpVtbl->GetLibAttr(p,a)
2333 #define ITypeLib_GetTypeComp(p,a) (p)->lpVtbl->GetTypeComp(p,a)
2334 #define ITypeLib_GetDocumentation(p,a,b,c,d,e) (p)->lpVtbl->GetDocumentation(p,a,b,c,d,e)
2335 #define ITypeLib_IsName(p,a,b,c) (p)->lpVtbl->IsName(p,a,b,c)
2336 #define ITypeLib_FindName(p,a,b,c,d,e) (p)->lpVtbl->FindName(p,a,b,c,d,e)
2337 #define ITypeLib_ReleaseTLibAttr(p,a) (p)->lpVtbl->ReleaseTLibAttr(p,a)
2338
2339 #endif
2340
2341 HRESULT CALLBACK ITypeLib_RemoteGetTypeInfoCount_Proxy(
2342     ITypeLib* This,
2343     UINT* pcTInfo);
2344 void __RPC_STUB ITypeLib_RemoteGetTypeInfoCount_Stub(
2345     struct IRpcStubBuffer* This,
2346     struct IRpcChannelBuffer* pRpcChannelBuffer,
2347     PRPC_MESSAGE pRpcMessage,
2348     DWORD* pdwStubPhase);
2349 UINT CALLBACK ITypeLib_GetTypeInfoCount_Proxy(
2350     ITypeLib* This);
2351 HRESULT __RPC_STUB ITypeLib_GetTypeInfoCount_Stub(
2352     ITypeLib* This,
2353     UINT* pcTInfo);
2354 HRESULT CALLBACK ITypeLib_GetTypeInfo_Proxy(
2355     ITypeLib* This,
2356     UINT index,
2357     ITypeInfo** ppTInfo);
2358 void __RPC_STUB ITypeLib_GetTypeInfo_Stub(
2359     struct IRpcStubBuffer* This,
2360     struct IRpcChannelBuffer* pRpcChannelBuffer,
2361     PRPC_MESSAGE pRpcMessage,
2362     DWORD* pdwStubPhase);
2363 HRESULT CALLBACK ITypeLib_GetTypeInfoType_Proxy(
2364     ITypeLib* This,
2365     UINT index,
2366     TYPEKIND* pTKind);
2367 void __RPC_STUB ITypeLib_GetTypeInfoType_Stub(
2368     struct IRpcStubBuffer* This,
2369     struct IRpcChannelBuffer* pRpcChannelBuffer,
2370     PRPC_MESSAGE pRpcMessage,
2371     DWORD* pdwStubPhase);
2372 HRESULT CALLBACK ITypeLib_GetTypeInfoOfGuid_Proxy(
2373     ITypeLib* This,
2374     REFGUID guid,
2375     ITypeInfo** ppTinfo);
2376 void __RPC_STUB ITypeLib_GetTypeInfoOfGuid_Stub(
2377     struct IRpcStubBuffer* This,
2378     struct IRpcChannelBuffer* pRpcChannelBuffer,
2379     PRPC_MESSAGE pRpcMessage,
2380     DWORD* pdwStubPhase);
2381 HRESULT CALLBACK ITypeLib_RemoteGetLibAttr_Proxy(
2382     ITypeLib* This,
2383     LPTLIBATTR* ppTLibAttr,
2384     CLEANLOCALSTORAGE* pDummy);
2385 void __RPC_STUB ITypeLib_RemoteGetLibAttr_Stub(
2386     struct IRpcStubBuffer* This,
2387     struct IRpcChannelBuffer* pRpcChannelBuffer,
2388     PRPC_MESSAGE pRpcMessage,
2389     DWORD* pdwStubPhase);
2390 HRESULT CALLBACK ITypeLib_GetLibAttr_Proxy(
2391     ITypeLib* This,
2392     TLIBATTR** ppTLibAttr);
2393 HRESULT __RPC_STUB ITypeLib_GetLibAttr_Stub(
2394     ITypeLib* This,
2395     LPTLIBATTR* ppTLibAttr,
2396     CLEANLOCALSTORAGE* pDummy);
2397 HRESULT CALLBACK ITypeLib_GetTypeComp_Proxy(
2398     ITypeLib* This,
2399     ITypeComp** ppTComp);
2400 void __RPC_STUB ITypeLib_GetTypeComp_Stub(
2401     struct IRpcStubBuffer* This,
2402     struct IRpcChannelBuffer* pRpcChannelBuffer,
2403     PRPC_MESSAGE pRpcMessage,
2404     DWORD* pdwStubPhase);
2405 HRESULT CALLBACK ITypeLib_RemoteGetDocumentation_Proxy(
2406     ITypeLib* This,
2407     INT index,
2408     DWORD refPtrFlags,
2409     BSTR* pBstrName,
2410     BSTR* pBstrDocString,
2411     DWORD* pdwHelpContext,
2412     BSTR* pBstrHelpFile);
2413 void __RPC_STUB ITypeLib_RemoteGetDocumentation_Stub(
2414     struct IRpcStubBuffer* This,
2415     struct IRpcChannelBuffer* pRpcChannelBuffer,
2416     PRPC_MESSAGE pRpcMessage,
2417     DWORD* pdwStubPhase);
2418 HRESULT CALLBACK ITypeLib_GetDocumentation_Proxy(
2419     ITypeLib* This,
2420     INT index,
2421     BSTR* pBstrName,
2422     BSTR* pBstrDocString,
2423     DWORD* pdwHelpContext,
2424     BSTR* pBstrHelpFile);
2425 HRESULT __RPC_STUB ITypeLib_GetDocumentation_Stub(
2426     ITypeLib* This,
2427     INT index,
2428     DWORD refPtrFlags,
2429     BSTR* pBstrName,
2430     BSTR* pBstrDocString,
2431     DWORD* pdwHelpContext,
2432     BSTR* pBstrHelpFile);
2433 HRESULT CALLBACK ITypeLib_RemoteIsName_Proxy(
2434     ITypeLib* This,
2435     LPOLESTR szNameBuf,
2436     ULONG lHashVal,
2437     BOOL* pfName,
2438     BSTR* pBstrLibName);
2439 void __RPC_STUB ITypeLib_RemoteIsName_Stub(
2440     struct IRpcStubBuffer* This,
2441     struct IRpcChannelBuffer* pRpcChannelBuffer,
2442     PRPC_MESSAGE pRpcMessage,
2443     DWORD* pdwStubPhase);
2444 HRESULT CALLBACK ITypeLib_IsName_Proxy(
2445     ITypeLib* This,
2446     LPOLESTR szNameBuf,
2447     ULONG lHashVal,
2448     BOOL* pfName);
2449 HRESULT __RPC_STUB ITypeLib_IsName_Stub(
2450     ITypeLib* This,
2451     LPOLESTR szNameBuf,
2452     ULONG lHashVal,
2453     BOOL* pfName,
2454     BSTR* pBstrLibName);
2455 HRESULT CALLBACK ITypeLib_RemoteFindName_Proxy(
2456     ITypeLib* This,
2457     LPOLESTR szNameBuf,
2458     ULONG lHashVal,
2459     ITypeInfo** ppTInfo,
2460     MEMBERID* rgMemId,
2461     USHORT* pcFound,
2462     BSTR* pBstrLibName);
2463 void __RPC_STUB ITypeLib_RemoteFindName_Stub(
2464     struct IRpcStubBuffer* This,
2465     struct IRpcChannelBuffer* pRpcChannelBuffer,
2466     PRPC_MESSAGE pRpcMessage,
2467     DWORD* pdwStubPhase);
2468 HRESULT CALLBACK ITypeLib_FindName_Proxy(
2469     ITypeLib* This,
2470     LPOLESTR szNameBuf,
2471     ULONG lHashVal,
2472     ITypeInfo** ppTInfo,
2473     MEMBERID* rgMemId,
2474     USHORT* pcFound);
2475 HRESULT __RPC_STUB ITypeLib_FindName_Stub(
2476     ITypeLib* This,
2477     LPOLESTR szNameBuf,
2478     ULONG lHashVal,
2479     ITypeInfo** ppTInfo,
2480     MEMBERID* rgMemId,
2481     USHORT* pcFound,
2482     BSTR* pBstrLibName);
2483 HRESULT CALLBACK ITypeLib_LocalReleaseTLibAttr_Proxy(
2484     ITypeLib* This);
2485 void __RPC_STUB ITypeLib_LocalReleaseTLibAttr_Stub(
2486     struct IRpcStubBuffer* This,
2487     struct IRpcChannelBuffer* pRpcChannelBuffer,
2488     PRPC_MESSAGE pRpcMessage,
2489     DWORD* pdwStubPhase);
2490 void CALLBACK ITypeLib_ReleaseTLibAttr_Proxy(
2491     ITypeLib* This,
2492     TLIBATTR* pTLibAttr);
2493 HRESULT __RPC_STUB ITypeLib_ReleaseTLibAttr_Stub(
2494     ITypeLib* This);
2495
2496 typedef struct ITypeLib2 ITypeLib2;
2497 typedef ITypeLib2 *LPTYPELIB2;
2498
2499 /*****************************************************************************
2500  * ITypeLib2 interface
2501  */
2502 DEFINE_GUID(IID_ITypeLib2, 0x00020411, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46);
2503 #if defined(__cplusplus) && !defined(CINTERFACE)
2504 struct ITypeLib2: ITypeLib {
2505
2506     virtual HRESULT STDMETHODCALLTYPE GetCustData(
2507         REFGUID guid,
2508         VARIANT* pVarVal) = 0;
2509
2510     virtual HRESULT STDMETHODCALLTYPE GetLibStatistics(
2511         ULONG* pcUniqueNames,
2512         ULONG* pcchUniqueNames) = 0;
2513
2514     virtual HRESULT STDMETHODCALLTYPE GetDocumentation2(
2515         INT index,
2516         LCID lcid,
2517         BSTR* pbstrHelpString,
2518         DWORD* pdwHelpStringContext,
2519         BSTR* pbstrHelpStringDll) = 0;
2520
2521     virtual HRESULT STDMETHODCALLTYPE GetAllCustData(
2522         CUSTDATA* pCustData) = 0;
2523
2524 } ICOM_COM_INTERFACE_ATTRIBUTE;
2525 #else
2526 typedef struct ITypeLib2Vtbl ITypeLib2Vtbl;
2527 struct ITypeLib2 {
2528     const ITypeLib2Vtbl* lpVtbl;
2529 };
2530 struct ITypeLib2Vtbl {
2531     ICOM_MSVTABLE_COMPAT_FIELDS
2532
2533     /*** IUnknown methods ***/
2534     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
2535         ITypeLib2* This,
2536         REFIID riid,
2537         void** ppvObject);
2538
2539     ULONG (STDMETHODCALLTYPE *AddRef)(
2540         ITypeLib2* This);
2541
2542     ULONG (STDMETHODCALLTYPE *Release)(
2543         ITypeLib2* This);
2544
2545     /*** ITypeLib methods ***/
2546     UINT (STDMETHODCALLTYPE *GetTypeInfoCount)(
2547         ITypeLib2* This);
2548
2549     HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
2550         ITypeLib2* This,
2551         UINT index,
2552         ITypeInfo** ppTInfo);
2553
2554     HRESULT (STDMETHODCALLTYPE *GetTypeInfoType)(
2555         ITypeLib2* This,
2556         UINT index,
2557         TYPEKIND* pTKind);
2558
2559     HRESULT (STDMETHODCALLTYPE *GetTypeInfoOfGuid)(
2560         ITypeLib2* This,
2561         REFGUID guid,
2562         ITypeInfo** ppTinfo);
2563
2564     HRESULT (STDMETHODCALLTYPE *GetLibAttr)(
2565         ITypeLib2* This,
2566         TLIBATTR** ppTLibAttr);
2567
2568     HRESULT (STDMETHODCALLTYPE *GetTypeComp)(
2569         ITypeLib2* This,
2570         ITypeComp** ppTComp);
2571
2572     HRESULT (STDMETHODCALLTYPE *GetDocumentation)(
2573         ITypeLib2* This,
2574         INT index,
2575         BSTR* pBstrName,
2576         BSTR* pBstrDocString,
2577         DWORD* pdwHelpContext,
2578         BSTR* pBstrHelpFile);
2579
2580     HRESULT (STDMETHODCALLTYPE *IsName)(
2581         ITypeLib2* This,
2582         LPOLESTR szNameBuf,
2583         ULONG lHashVal,
2584         BOOL* pfName);
2585
2586     HRESULT (STDMETHODCALLTYPE *FindName)(
2587         ITypeLib2* This,
2588         LPOLESTR szNameBuf,
2589         ULONG lHashVal,
2590         ITypeInfo** ppTInfo,
2591         MEMBERID* rgMemId,
2592         USHORT* pcFound);
2593
2594     void (STDMETHODCALLTYPE *ReleaseTLibAttr)(
2595         ITypeLib2* This,
2596         TLIBATTR* pTLibAttr);
2597
2598     /*** ITypeLib2 methods ***/
2599     HRESULT (STDMETHODCALLTYPE *GetCustData)(
2600         ITypeLib2* This,
2601         REFGUID guid,
2602         VARIANT* pVarVal);
2603
2604     HRESULT (STDMETHODCALLTYPE *GetLibStatistics)(
2605         ITypeLib2* This,
2606         ULONG* pcUniqueNames,
2607         ULONG* pcchUniqueNames);
2608
2609     HRESULT (STDMETHODCALLTYPE *GetDocumentation2)(
2610         ITypeLib2* This,
2611         INT index,
2612         LCID lcid,
2613         BSTR* pbstrHelpString,
2614         DWORD* pdwHelpStringContext,
2615         BSTR* pbstrHelpStringDll);
2616
2617     HRESULT (STDMETHODCALLTYPE *GetAllCustData)(
2618         ITypeLib2* This,
2619         CUSTDATA* pCustData);
2620
2621 };
2622
2623 #define ITypeLib2_IMETHODS \
2624     /*** IUnknown methods ***/ \
2625     HRESULT (STDMETHODCALLTYPE *QueryInterface)(INTERFACE *This, REFIID riid, void** ppvObject); \
2626     ULONG (STDMETHODCALLTYPE *AddRef)(INTERFACE *This); \
2627     ULONG (STDMETHODCALLTYPE *Release)(INTERFACE *This); \
2628     /*** ITypeLib methods ***/ \
2629     UINT (STDMETHODCALLTYPE *GetTypeInfoCount)(INTERFACE *This); \
2630     HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(INTERFACE *This, UINT index, ITypeInfo** ppTInfo); \
2631     HRESULT (STDMETHODCALLTYPE *GetTypeInfoType)(INTERFACE *This, UINT index, TYPEKIND* pTKind); \
2632     HRESULT (STDMETHODCALLTYPE *GetTypeInfoOfGuid)(INTERFACE *This, REFGUID guid, ITypeInfo** ppTinfo); \
2633     HRESULT (STDMETHODCALLTYPE *GetLibAttr)(INTERFACE *This, TLIBATTR** ppTLibAttr); \
2634     HRESULT (STDMETHODCALLTYPE *GetTypeComp)(INTERFACE *This, ITypeComp** ppTComp); \
2635     HRESULT (STDMETHODCALLTYPE *GetDocumentation)(INTERFACE *This, INT index, BSTR* pBstrName, BSTR* pBstrDocString, DWORD* pdwHelpContext, BSTR* pBstrHelpFile); \
2636     HRESULT (STDMETHODCALLTYPE *IsName)(INTERFACE *This, LPOLESTR szNameBuf, ULONG lHashVal, BOOL* pfName); \
2637     HRESULT (STDMETHODCALLTYPE *FindName)(INTERFACE *This, LPOLESTR szNameBuf, ULONG lHashVal, ITypeInfo** ppTInfo, MEMBERID* rgMemId, USHORT* pcFound); \
2638     void (STDMETHODCALLTYPE *ReleaseTLibAttr)(INTERFACE *This, TLIBATTR* pTLibAttr); \
2639     /*** ITypeLib2 methods ***/ \
2640     HRESULT (STDMETHODCALLTYPE *GetCustData)(INTERFACE *This, REFGUID guid, VARIANT* pVarVal); \
2641     HRESULT (STDMETHODCALLTYPE *GetLibStatistics)(INTERFACE *This, ULONG* pcUniqueNames, ULONG* pcchUniqueNames); \
2642     HRESULT (STDMETHODCALLTYPE *GetDocumentation2)(INTERFACE *This, INT index, LCID lcid, BSTR* pbstrHelpString, DWORD* pdwHelpStringContext, BSTR* pbstrHelpStringDll); \
2643     HRESULT (STDMETHODCALLTYPE *GetAllCustData)(INTERFACE *This, CUSTDATA* pCustData);
2644
2645 /*** IUnknown methods ***/
2646 #define ITypeLib2_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
2647 #define ITypeLib2_AddRef(p) (p)->lpVtbl->AddRef(p)
2648 #define ITypeLib2_Release(p) (p)->lpVtbl->Release(p)
2649 /*** ITypeLib methods ***/
2650 #define ITypeLib2_GetTypeInfoCount(p) (p)->lpVtbl->GetTypeInfoCount(p)
2651 #define ITypeLib2_GetTypeInfo(p,a,b) (p)->lpVtbl->GetTypeInfo(p,a,b)
2652 #define ITypeLib2_GetTypeInfoType(p,a,b) (p)->lpVtbl->GetTypeInfoType(p,a,b)
2653 #define ITypeLib2_GetTypeInfoOfGuid(p,a,b) (p)->lpVtbl->GetTypeInfoOfGuid(p,a,b)
2654 #define ITypeLib2_GetLibAttr(p,a) (p)->lpVtbl->GetLibAttr(p,a)
2655 #define ITypeLib2_GetTypeComp(p,a) (p)->lpVtbl->GetTypeComp(p,a)
2656 #define ITypeLib2_GetDocumentation(p,a,b,c,d,e) (p)->lpVtbl->GetDocumentation(p,a,b,c,d,e)
2657 #define ITypeLib2_IsName(p,a,b,c) (p)->lpVtbl->IsName(p,a,b,c)
2658 #define ITypeLib2_FindName(p,a,b,c,d,e) (p)->lpVtbl->FindName(p,a,b,c,d,e)
2659 #define ITypeLib2_ReleaseTLibAttr(p,a) (p)->lpVtbl->ReleaseTLibAttr(p,a)
2660 /*** ITypeLib2 methods ***/
2661 #define ITypeLib2_GetCustData(p,a,b) (p)->lpVtbl->GetCustData(p,a,b)
2662 #define ITypeLib2_GetLibStatistics(p,a,b) (p)->lpVtbl->GetLibStatistics(p,a,b)
2663 #define ITypeLib2_GetDocumentation2(p,a,b,c,d,e) (p)->lpVtbl->GetDocumentation2(p,a,b,c,d,e)
2664 #define ITypeLib2_GetAllCustData(p,a) (p)->lpVtbl->GetAllCustData(p,a)
2665
2666 #endif
2667
2668 HRESULT CALLBACK ITypeLib2_GetCustData_Proxy(
2669     ITypeLib2* This,
2670     REFGUID guid,
2671     VARIANT* pVarVal);
2672 void __RPC_STUB ITypeLib2_GetCustData_Stub(
2673     struct IRpcStubBuffer* This,
2674     struct IRpcChannelBuffer* pRpcChannelBuffer,
2675     PRPC_MESSAGE pRpcMessage,
2676     DWORD* pdwStubPhase);
2677 HRESULT CALLBACK ITypeLib2_RemoteGetLibStatistics_Proxy(
2678     ITypeLib2* This,
2679     ULONG* pcUniqueNames,
2680     ULONG* pcchUniqueNames);
2681 void __RPC_STUB ITypeLib2_RemoteGetLibStatistics_Stub(
2682     struct IRpcStubBuffer* This,
2683     struct IRpcChannelBuffer* pRpcChannelBuffer,
2684     PRPC_MESSAGE pRpcMessage,
2685     DWORD* pdwStubPhase);
2686 HRESULT CALLBACK ITypeLib2_GetLibStatistics_Proxy(
2687     ITypeLib2* This,
2688     ULONG* pcUniqueNames,
2689     ULONG* pcchUniqueNames);
2690 HRESULT __RPC_STUB ITypeLib2_GetLibStatistics_Stub(
2691     ITypeLib2* This,
2692     ULONG* pcUniqueNames,
2693     ULONG* pcchUniqueNames);
2694 HRESULT CALLBACK ITypeLib2_RemoteGetDocumentation2_Proxy(
2695     ITypeLib2* This,
2696     INT index,
2697     LCID lcid,
2698     DWORD refPtrFlags,
2699     BSTR* pbstrHelpString,
2700     DWORD* pdwHelpStringContext,
2701     BSTR* pbstrHelpStringDll);
2702 void __RPC_STUB ITypeLib2_RemoteGetDocumentation2_Stub(
2703     struct IRpcStubBuffer* This,
2704     struct IRpcChannelBuffer* pRpcChannelBuffer,
2705     PRPC_MESSAGE pRpcMessage,
2706     DWORD* pdwStubPhase);
2707 HRESULT CALLBACK ITypeLib2_GetDocumentation2_Proxy(
2708     ITypeLib2* This,
2709     INT index,
2710     LCID lcid,
2711     BSTR* pbstrHelpString,
2712     DWORD* pdwHelpStringContext,
2713     BSTR* pbstrHelpStringDll);
2714 HRESULT __RPC_STUB ITypeLib2_GetDocumentation2_Stub(
2715     ITypeLib2* This,
2716     INT index,
2717     LCID lcid,
2718     DWORD refPtrFlags,
2719     BSTR* pbstrHelpString,
2720     DWORD* pdwHelpStringContext,
2721     BSTR* pbstrHelpStringDll);
2722 HRESULT CALLBACK ITypeLib2_GetAllCustData_Proxy(
2723     ITypeLib2* This,
2724     CUSTDATA* pCustData);
2725 void __RPC_STUB ITypeLib2_GetAllCustData_Stub(
2726     struct IRpcStubBuffer* This,
2727     struct IRpcChannelBuffer* pRpcChannelBuffer,
2728     PRPC_MESSAGE pRpcMessage,
2729     DWORD* pdwStubPhase);
2730
2731 typedef struct ITypeChangeEvents ITypeChangeEvents;
2732 typedef ITypeChangeEvents *LPTYPECHANGEEVENTS;
2733
2734 typedef enum tagCHANGEKIND {
2735     CHANGEKIND_ADDMEMBER,
2736     CHANGEKIND_DELETEMEMBER,
2737     CHANGEKIND_SETNAMES,
2738     CHANGEKIND_SETDOCUMENTATION,
2739     CHANGEKIND_GENERAL,
2740     CHANGEKIND_INVALIDATE,
2741     CHANGEKIND_CHANGEFAILED,
2742     CHANGEKIND_MAX
2743 } CHANGEKIND;
2744
2745 /*****************************************************************************
2746  * ITypeChangeEvents interface
2747  */
2748 DEFINE_GUID(IID_ITypeChangeEvents, 0x00020410, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46);
2749 #if defined(__cplusplus) && !defined(CINTERFACE)
2750 struct ITypeChangeEvents: IUnknown {
2751
2752     virtual HRESULT STDMETHODCALLTYPE RequestTypeChange(
2753         CHANGEKIND changeKind,
2754         ITypeInfo* pTInfoBefore,
2755         LPOLESTR pStrName,
2756         INT* pfCancel) = 0;
2757
2758     virtual HRESULT STDMETHODCALLTYPE AfterTypeChange(
2759         CHANGEKIND changeKind,
2760         ITypeInfo* pTInfoAfter,
2761         LPOLESTR pStrName) = 0;
2762
2763 } ICOM_COM_INTERFACE_ATTRIBUTE;
2764 #else
2765 typedef struct ITypeChangeEventsVtbl ITypeChangeEventsVtbl;
2766 struct ITypeChangeEvents {
2767     const ITypeChangeEventsVtbl* lpVtbl;
2768 };
2769 struct ITypeChangeEventsVtbl {
2770     ICOM_MSVTABLE_COMPAT_FIELDS
2771
2772     /*** IUnknown methods ***/
2773     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
2774         ITypeChangeEvents* This,
2775         REFIID riid,
2776         void** ppvObject);
2777
2778     ULONG (STDMETHODCALLTYPE *AddRef)(
2779         ITypeChangeEvents* This);
2780
2781     ULONG (STDMETHODCALLTYPE *Release)(
2782         ITypeChangeEvents* This);
2783
2784     /*** ITypeChangeEvents methods ***/
2785     HRESULT (STDMETHODCALLTYPE *RequestTypeChange)(
2786         ITypeChangeEvents* This,
2787         CHANGEKIND changeKind,
2788         ITypeInfo* pTInfoBefore,
2789         LPOLESTR pStrName,
2790         INT* pfCancel);
2791
2792     HRESULT (STDMETHODCALLTYPE *AfterTypeChange)(
2793         ITypeChangeEvents* This,
2794         CHANGEKIND changeKind,
2795         ITypeInfo* pTInfoAfter,
2796         LPOLESTR pStrName);
2797
2798 };
2799
2800 #define ITypeChangeEvents_IMETHODS \
2801     /*** IUnknown methods ***/ \
2802     HRESULT (STDMETHODCALLTYPE *QueryInterface)(INTERFACE *This, REFIID riid, void** ppvObject); \
2803     ULONG (STDMETHODCALLTYPE *AddRef)(INTERFACE *This); \
2804     ULONG (STDMETHODCALLTYPE *Release)(INTERFACE *This); \
2805     /*** ITypeChangeEvents methods ***/ \
2806     HRESULT (STDMETHODCALLTYPE *RequestTypeChange)(INTERFACE *This, CHANGEKIND changeKind, ITypeInfo* pTInfoBefore, LPOLESTR pStrName, INT* pfCancel); \
2807     HRESULT (STDMETHODCALLTYPE *AfterTypeChange)(INTERFACE *This, CHANGEKIND changeKind, ITypeInfo* pTInfoAfter, LPOLESTR pStrName);
2808
2809 /*** IUnknown methods ***/
2810 #define ITypeChangeEvents_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
2811 #define ITypeChangeEvents_AddRef(p) (p)->lpVtbl->AddRef(p)
2812 #define ITypeChangeEvents_Release(p) (p)->lpVtbl->Release(p)
2813 /*** ITypeChangeEvents methods ***/
2814 #define ITypeChangeEvents_RequestTypeChange(p,a,b,c,d) (p)->lpVtbl->RequestTypeChange(p,a,b,c,d)
2815 #define ITypeChangeEvents_AfterTypeChange(p,a,b,c) (p)->lpVtbl->AfterTypeChange(p,a,b,c)
2816
2817 #endif
2818
2819 HRESULT CALLBACK ITypeChangeEvents_RequestTypeChange_Proxy(
2820     ITypeChangeEvents* This,
2821     CHANGEKIND changeKind,
2822     ITypeInfo* pTInfoBefore,
2823     LPOLESTR pStrName,
2824     INT* pfCancel);
2825 void __RPC_STUB ITypeChangeEvents_RequestTypeChange_Stub(
2826     struct IRpcStubBuffer* This,
2827     struct IRpcChannelBuffer* pRpcChannelBuffer,
2828     PRPC_MESSAGE pRpcMessage,
2829     DWORD* pdwStubPhase);
2830 HRESULT CALLBACK ITypeChangeEvents_AfterTypeChange_Proxy(
2831     ITypeChangeEvents* This,
2832     CHANGEKIND changeKind,
2833     ITypeInfo* pTInfoAfter,
2834     LPOLESTR pStrName);
2835 void __RPC_STUB ITypeChangeEvents_AfterTypeChange_Stub(
2836     struct IRpcStubBuffer* This,
2837     struct IRpcChannelBuffer* pRpcChannelBuffer,
2838     PRPC_MESSAGE pRpcMessage,
2839     DWORD* pdwStubPhase);
2840
2841 typedef struct IErrorInfo IErrorInfo;
2842 typedef IErrorInfo *LPERRORINFO;
2843
2844 /*****************************************************************************
2845  * IErrorInfo interface
2846  */
2847 DEFINE_GUID(IID_IErrorInfo, 0x1cf2b120, 0x547d, 0x101b, 0x8e,0x65, 0x08,0x00,0x2b,0x2b,0xd1,0x19);
2848 #if defined(__cplusplus) && !defined(CINTERFACE)
2849 struct IErrorInfo: IUnknown {
2850
2851     virtual HRESULT STDMETHODCALLTYPE GetGUID(
2852         GUID* pGUID) = 0;
2853
2854     virtual HRESULT STDMETHODCALLTYPE GetSource(
2855         BSTR* pBstrSource) = 0;
2856
2857     virtual HRESULT STDMETHODCALLTYPE GetDescription(
2858         BSTR* pBstrDescription) = 0;
2859
2860     virtual HRESULT STDMETHODCALLTYPE GetHelpFile(
2861         BSTR* pBstrHelpFile) = 0;
2862
2863     virtual HRESULT STDMETHODCALLTYPE GetHelpContext(
2864         DWORD* pdwHelpContext) = 0;
2865
2866 } ICOM_COM_INTERFACE_ATTRIBUTE;
2867 #else
2868 typedef struct IErrorInfoVtbl IErrorInfoVtbl;
2869 struct IErrorInfo {
2870     const IErrorInfoVtbl* lpVtbl;
2871 };
2872 struct IErrorInfoVtbl {
2873     ICOM_MSVTABLE_COMPAT_FIELDS
2874
2875     /*** IUnknown methods ***/
2876     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
2877         IErrorInfo* This,
2878         REFIID riid,
2879         void** ppvObject);
2880
2881     ULONG (STDMETHODCALLTYPE *AddRef)(
2882         IErrorInfo* This);
2883
2884     ULONG (STDMETHODCALLTYPE *Release)(
2885         IErrorInfo* This);
2886
2887     /*** IErrorInfo methods ***/
2888     HRESULT (STDMETHODCALLTYPE *GetGUID)(
2889         IErrorInfo* This,
2890         GUID* pGUID);
2891
2892     HRESULT (STDMETHODCALLTYPE *GetSource)(
2893         IErrorInfo* This,
2894         BSTR* pBstrSource);
2895
2896     HRESULT (STDMETHODCALLTYPE *GetDescription)(
2897         IErrorInfo* This,
2898         BSTR* pBstrDescription);
2899
2900     HRESULT (STDMETHODCALLTYPE *GetHelpFile)(
2901         IErrorInfo* This,
2902         BSTR* pBstrHelpFile);
2903
2904     HRESULT (STDMETHODCALLTYPE *GetHelpContext)(
2905         IErrorInfo* This,
2906         DWORD* pdwHelpContext);
2907
2908 };
2909
2910 #define IErrorInfo_IMETHODS \
2911     /*** IUnknown methods ***/ \
2912     HRESULT (STDMETHODCALLTYPE *QueryInterface)(INTERFACE *This, REFIID riid, void** ppvObject); \
2913     ULONG (STDMETHODCALLTYPE *AddRef)(INTERFACE *This); \
2914     ULONG (STDMETHODCALLTYPE *Release)(INTERFACE *This); \
2915     /*** IErrorInfo methods ***/ \
2916     HRESULT (STDMETHODCALLTYPE *GetGUID)(INTERFACE *This, GUID* pGUID); \
2917     HRESULT (STDMETHODCALLTYPE *GetSource)(INTERFACE *This, BSTR* pBstrSource); \
2918     HRESULT (STDMETHODCALLTYPE *GetDescription)(INTERFACE *This, BSTR* pBstrDescription); \
2919     HRESULT (STDMETHODCALLTYPE *GetHelpFile)(INTERFACE *This, BSTR* pBstrHelpFile); \
2920     HRESULT (STDMETHODCALLTYPE *GetHelpContext)(INTERFACE *This, DWORD* pdwHelpContext);
2921
2922 /*** IUnknown methods ***/
2923 #define IErrorInfo_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
2924 #define IErrorInfo_AddRef(p) (p)->lpVtbl->AddRef(p)
2925 #define IErrorInfo_Release(p) (p)->lpVtbl->Release(p)
2926 /*** IErrorInfo methods ***/
2927 #define IErrorInfo_GetGUID(p,a) (p)->lpVtbl->GetGUID(p,a)
2928 #define IErrorInfo_GetSource(p,a) (p)->lpVtbl->GetSource(p,a)
2929 #define IErrorInfo_GetDescription(p,a) (p)->lpVtbl->GetDescription(p,a)
2930 #define IErrorInfo_GetHelpFile(p,a) (p)->lpVtbl->GetHelpFile(p,a)
2931 #define IErrorInfo_GetHelpContext(p,a) (p)->lpVtbl->GetHelpContext(p,a)
2932
2933 #endif
2934
2935 HRESULT CALLBACK IErrorInfo_GetGUID_Proxy(
2936     IErrorInfo* This,
2937     GUID* pGUID);
2938 void __RPC_STUB IErrorInfo_GetGUID_Stub(
2939     struct IRpcStubBuffer* This,
2940     struct IRpcChannelBuffer* pRpcChannelBuffer,
2941     PRPC_MESSAGE pRpcMessage,
2942     DWORD* pdwStubPhase);
2943 HRESULT CALLBACK IErrorInfo_GetSource_Proxy(
2944     IErrorInfo* This,
2945     BSTR* pBstrSource);
2946 void __RPC_STUB IErrorInfo_GetSource_Stub(
2947     struct IRpcStubBuffer* This,
2948     struct IRpcChannelBuffer* pRpcChannelBuffer,
2949     PRPC_MESSAGE pRpcMessage,
2950     DWORD* pdwStubPhase);
2951 HRESULT CALLBACK IErrorInfo_GetDescription_Proxy(
2952     IErrorInfo* This,
2953     BSTR* pBstrDescription);
2954 void __RPC_STUB IErrorInfo_GetDescription_Stub(
2955     struct IRpcStubBuffer* This,
2956     struct IRpcChannelBuffer* pRpcChannelBuffer,
2957     PRPC_MESSAGE pRpcMessage,
2958     DWORD* pdwStubPhase);
2959 HRESULT CALLBACK IErrorInfo_GetHelpFile_Proxy(
2960     IErrorInfo* This,
2961     BSTR* pBstrHelpFile);
2962 void __RPC_STUB IErrorInfo_GetHelpFile_Stub(
2963     struct IRpcStubBuffer* This,
2964     struct IRpcChannelBuffer* pRpcChannelBuffer,
2965     PRPC_MESSAGE pRpcMessage,
2966     DWORD* pdwStubPhase);
2967 HRESULT CALLBACK IErrorInfo_GetHelpContext_Proxy(
2968     IErrorInfo* This,
2969     DWORD* pdwHelpContext);
2970 void __RPC_STUB IErrorInfo_GetHelpContext_Stub(
2971     struct IRpcStubBuffer* This,
2972     struct IRpcChannelBuffer* pRpcChannelBuffer,
2973     PRPC_MESSAGE pRpcMessage,
2974     DWORD* pdwStubPhase);
2975
2976 typedef struct ICreateErrorInfo ICreateErrorInfo;
2977 typedef ICreateErrorInfo *LPCREATEERRORINFO;
2978
2979 /*****************************************************************************
2980  * ICreateErrorInfo interface
2981  */
2982 DEFINE_GUID(IID_ICreateErrorInfo, 0x22f03340, 0x547d, 0x101b, 0x8e,0x65, 0x08,0x00,0x2b,0x2b,0xd1,0x19);
2983 #if defined(__cplusplus) && !defined(CINTERFACE)
2984 struct ICreateErrorInfo: IUnknown {
2985
2986     virtual HRESULT STDMETHODCALLTYPE SetGUID(
2987         REFGUID rguid) = 0;
2988
2989     virtual HRESULT STDMETHODCALLTYPE SetSource(
2990         LPOLESTR szSource) = 0;
2991
2992     virtual HRESULT STDMETHODCALLTYPE SetDescription(
2993         LPOLESTR szDescription) = 0;
2994
2995     virtual HRESULT STDMETHODCALLTYPE SetHelpFile(
2996         LPOLESTR szHelpFile) = 0;
2997
2998     virtual HRESULT STDMETHODCALLTYPE SetHelpContext(
2999         DWORD dwHelpContext) = 0;
3000
3001 } ICOM_COM_INTERFACE_ATTRIBUTE;
3002 #else
3003 typedef struct ICreateErrorInfoVtbl ICreateErrorInfoVtbl;
3004 struct ICreateErrorInfo {
3005     const ICreateErrorInfoVtbl* lpVtbl;
3006 };
3007 struct ICreateErrorInfoVtbl {
3008     ICOM_MSVTABLE_COMPAT_FIELDS
3009
3010     /*** IUnknown methods ***/
3011     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
3012         ICreateErrorInfo* This,
3013         REFIID riid,
3014         void** ppvObject);
3015
3016     ULONG (STDMETHODCALLTYPE *AddRef)(
3017         ICreateErrorInfo* This);
3018
3019     ULONG (STDMETHODCALLTYPE *Release)(
3020         ICreateErrorInfo* This);
3021
3022     /*** ICreateErrorInfo methods ***/
3023     HRESULT (STDMETHODCALLTYPE *SetGUID)(
3024         ICreateErrorInfo* This,
3025         REFGUID rguid);
3026
3027     HRESULT (STDMETHODCALLTYPE *SetSource)(
3028         ICreateErrorInfo* This,
3029         LPOLESTR szSource);
3030
3031     HRESULT (STDMETHODCALLTYPE *SetDescription)(
3032         ICreateErrorInfo* This,
3033         LPOLESTR szDescription);
3034
3035     HRESULT (STDMETHODCALLTYPE *SetHelpFile)(
3036         ICreateErrorInfo* This,
3037         LPOLESTR szHelpFile);
3038
3039     HRESULT (STDMETHODCALLTYPE *SetHelpContext)(
3040         ICreateErrorInfo* This,
3041         DWORD dwHelpContext);
3042
3043 };
3044
3045 #define ICreateErrorInfo_IMETHODS \
3046     /*** IUnknown methods ***/ \
3047     HRESULT (STDMETHODCALLTYPE *QueryInterface)(INTERFACE *This, REFIID riid, void** ppvObject); \
3048     ULONG (STDMETHODCALLTYPE *AddRef)(INTERFACE *This); \
3049     ULONG (STDMETHODCALLTYPE *Release)(INTERFACE *This); \
3050     /*** ICreateErrorInfo methods ***/ \
3051     HRESULT (STDMETHODCALLTYPE *SetGUID)(INTERFACE *This, REFGUID rguid); \
3052     HRESULT (STDMETHODCALLTYPE *SetSource)(INTERFACE *This, LPOLESTR szSource); \
3053     HRESULT (STDMETHODCALLTYPE *SetDescription)(INTERFACE *This, LPOLESTR szDescription); \
3054     HRESULT (STDMETHODCALLTYPE *SetHelpFile)(INTERFACE *This, LPOLESTR szHelpFile); \
3055     HRESULT (STDMETHODCALLTYPE *SetHelpContext)(INTERFACE *This, DWORD dwHelpContext);
3056
3057 /*** IUnknown methods ***/
3058 #define ICreateErrorInfo_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
3059 #define ICreateErrorInfo_AddRef(p) (p)->lpVtbl->AddRef(p)
3060 #define ICreateErrorInfo_Release(p) (p)->lpVtbl->Release(p)
3061 /*** ICreateErrorInfo methods ***/
3062 #define ICreateErrorInfo_SetGUID(p,a) (p)->lpVtbl->SetGUID(p,a)
3063 #define ICreateErrorInfo_SetSource(p,a) (p)->lpVtbl->SetSource(p,a)
3064 #define ICreateErrorInfo_SetDescription(p,a) (p)->lpVtbl->SetDescription(p,a)
3065 #define ICreateErrorInfo_SetHelpFile(p,a) (p)->lpVtbl->SetHelpFile(p,a)
3066 #define ICreateErrorInfo_SetHelpContext(p,a) (p)->lpVtbl->SetHelpContext(p,a)
3067
3068 #endif
3069
3070 HRESULT CALLBACK ICreateErrorInfo_SetGUID_Proxy(
3071     ICreateErrorInfo* This,
3072     REFGUID rguid);
3073 void __RPC_STUB ICreateErrorInfo_SetGUID_Stub(
3074     struct IRpcStubBuffer* This,
3075     struct IRpcChannelBuffer* pRpcChannelBuffer,
3076     PRPC_MESSAGE pRpcMessage,
3077     DWORD* pdwStubPhase);
3078 HRESULT CALLBACK ICreateErrorInfo_SetSource_Proxy(
3079     ICreateErrorInfo* This,
3080     LPOLESTR szSource);
3081 void __RPC_STUB ICreateErrorInfo_SetSource_Stub(
3082     struct IRpcStubBuffer* This,
3083     struct IRpcChannelBuffer* pRpcChannelBuffer,
3084     PRPC_MESSAGE pRpcMessage,
3085     DWORD* pdwStubPhase);
3086 HRESULT CALLBACK ICreateErrorInfo_SetDescription_Proxy(
3087     ICreateErrorInfo* This,
3088     LPOLESTR szDescription);
3089 void __RPC_STUB ICreateErrorInfo_SetDescription_Stub(
3090     struct IRpcStubBuffer* This,
3091     struct IRpcChannelBuffer* pRpcChannelBuffer,
3092     PRPC_MESSAGE pRpcMessage,
3093     DWORD* pdwStubPhase);
3094 HRESULT CALLBACK ICreateErrorInfo_SetHelpFile_Proxy(
3095     ICreateErrorInfo* This,
3096     LPOLESTR szHelpFile);
3097 void __RPC_STUB ICreateErrorInfo_SetHelpFile_Stub(
3098     struct IRpcStubBuffer* This,
3099     struct IRpcChannelBuffer* pRpcChannelBuffer,
3100     PRPC_MESSAGE pRpcMessage,
3101     DWORD* pdwStubPhase);
3102 HRESULT CALLBACK ICreateErrorInfo_SetHelpContext_Proxy(
3103     ICreateErrorInfo* This,
3104     DWORD dwHelpContext);
3105 void __RPC_STUB ICreateErrorInfo_SetHelpContext_Stub(
3106     struct IRpcStubBuffer* This,
3107     struct IRpcChannelBuffer* pRpcChannelBuffer,
3108     PRPC_MESSAGE pRpcMessage,
3109     DWORD* pdwStubPhase);
3110
3111 typedef struct ISupportErrorInfo ISupportErrorInfo;
3112 typedef ISupportErrorInfo *LPSUPPORTERRORINFO;
3113
3114 /*****************************************************************************
3115  * ISupportErrorInfo interface
3116  */
3117 DEFINE_GUID(IID_ISupportErrorInfo, 0xdf0b3d60, 0x548f, 0x101b, 0x8e,0x65, 0x08,0x00,0x2b,0x2b,0xd1,0x19);
3118 #if defined(__cplusplus) && !defined(CINTERFACE)
3119 struct ISupportErrorInfo: IUnknown {
3120
3121     virtual HRESULT STDMETHODCALLTYPE InterfaceSupportsErrorInfo(
3122         REFIID riid) = 0;
3123
3124 } ICOM_COM_INTERFACE_ATTRIBUTE;
3125 #else
3126 typedef struct ISupportErrorInfoVtbl ISupportErrorInfoVtbl;
3127 struct ISupportErrorInfo {
3128     const ISupportErrorInfoVtbl* lpVtbl;
3129 };
3130 struct ISupportErrorInfoVtbl {
3131     ICOM_MSVTABLE_COMPAT_FIELDS
3132
3133     /*** IUnknown methods ***/
3134     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
3135         ISupportErrorInfo* This,
3136         REFIID riid,
3137         void** ppvObject);
3138
3139     ULONG (STDMETHODCALLTYPE *AddRef)(
3140         ISupportErrorInfo* This);
3141
3142     ULONG (STDMETHODCALLTYPE *Release)(
3143         ISupportErrorInfo* This);
3144
3145     /*** ISupportErrorInfo methods ***/
3146     HRESULT (STDMETHODCALLTYPE *InterfaceSupportsErrorInfo)(
3147         ISupportErrorInfo* This,
3148         REFIID riid);
3149
3150 };
3151
3152 #define ISupportErrorInfo_IMETHODS \
3153     /*** IUnknown methods ***/ \
3154     HRESULT (STDMETHODCALLTYPE *QueryInterface)(INTERFACE *This, REFIID riid, void** ppvObject); \
3155     ULONG (STDMETHODCALLTYPE *AddRef)(INTERFACE *This); \
3156     ULONG (STDMETHODCALLTYPE *Release)(INTERFACE *This); \
3157     /*** ISupportErrorInfo methods ***/ \
3158     HRESULT (STDMETHODCALLTYPE *InterfaceSupportsErrorInfo)(INTERFACE *This, REFIID riid);
3159
3160 /*** IUnknown methods ***/
3161 #define ISupportErrorInfo_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
3162 #define ISupportErrorInfo_AddRef(p) (p)->lpVtbl->AddRef(p)
3163 #define ISupportErrorInfo_Release(p) (p)->lpVtbl->Release(p)
3164 /*** ISupportErrorInfo methods ***/
3165 #define ISupportErrorInfo_InterfaceSupportsErrorInfo(p,a) (p)->lpVtbl->InterfaceSupportsErrorInfo(p,a)
3166
3167 #endif
3168
3169 HRESULT CALLBACK ISupportErrorInfo_InterfaceSupportsErrorInfo_Proxy(
3170     ISupportErrorInfo* This,
3171     REFIID riid);
3172 void __RPC_STUB ISupportErrorInfo_InterfaceSupportsErrorInfo_Stub(
3173     struct IRpcStubBuffer* This,
3174     struct IRpcChannelBuffer* pRpcChannelBuffer,
3175     PRPC_MESSAGE pRpcMessage,
3176     DWORD* pdwStubPhase);
3177
3178 typedef struct ITypeFactory ITypeFactory;
3179 /*****************************************************************************
3180  * ITypeFactory interface
3181  */
3182 DEFINE_GUID(IID_ITypeFactory, 0x0000002e, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46);
3183 #if defined(__cplusplus) && !defined(CINTERFACE)
3184 struct ITypeFactory: IUnknown {
3185
3186     virtual HRESULT STDMETHODCALLTYPE CreateFromTypeInfo(
3187         ITypeInfo* pTypeInfo,
3188         REFIID riid,
3189         IUnknown** ppv) = 0;
3190
3191 } ICOM_COM_INTERFACE_ATTRIBUTE;
3192 #else
3193 typedef struct ITypeFactoryVtbl ITypeFactoryVtbl;
3194 struct ITypeFactory {
3195     const ITypeFactoryVtbl* lpVtbl;
3196 };
3197 struct ITypeFactoryVtbl {
3198     ICOM_MSVTABLE_COMPAT_FIELDS
3199
3200     /*** IUnknown methods ***/
3201     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
3202         ITypeFactory* This,
3203         REFIID riid,
3204         void** ppvObject);
3205
3206     ULONG (STDMETHODCALLTYPE *AddRef)(
3207         ITypeFactory* This);
3208
3209     ULONG (STDMETHODCALLTYPE *Release)(
3210         ITypeFactory* This);
3211
3212     /*** ITypeFactory methods ***/
3213     HRESULT (STDMETHODCALLTYPE *CreateFromTypeInfo)(
3214         ITypeFactory* This,
3215         ITypeInfo* pTypeInfo,
3216         REFIID riid,
3217         IUnknown** ppv);
3218
3219 };
3220
3221 #define ITypeFactory_IMETHODS \
3222     /*** IUnknown methods ***/ \
3223     HRESULT (STDMETHODCALLTYPE *QueryInterface)(INTERFACE *This, REFIID riid, void** ppvObject); \
3224     ULONG (STDMETHODCALLTYPE *AddRef)(INTERFACE *This); \
3225     ULONG (STDMETHODCALLTYPE *Release)(INTERFACE *This); \
3226     /*** ITypeFactory methods ***/ \
3227     HRESULT (STDMETHODCALLTYPE *CreateFromTypeInfo)(INTERFACE *This, ITypeInfo* pTypeInfo, REFIID riid, IUnknown** ppv);
3228
3229 /*** IUnknown methods ***/
3230 #define ITypeFactory_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
3231 #define ITypeFactory_AddRef(p) (p)->lpVtbl->AddRef(p)
3232 #define ITypeFactory_Release(p) (p)->lpVtbl->Release(p)
3233 /*** ITypeFactory methods ***/
3234 #define ITypeFactory_CreateFromTypeInfo(p,a,b,c) (p)->lpVtbl->CreateFromTypeInfo(p,a,b,c)
3235
3236 #endif
3237
3238 HRESULT CALLBACK ITypeFactory_CreateFromTypeInfo_Proxy(
3239     ITypeFactory* This,
3240     ITypeInfo* pTypeInfo,
3241     REFIID riid,
3242     IUnknown** ppv);
3243 void __RPC_STUB ITypeFactory_CreateFromTypeInfo_Stub(
3244     struct IRpcStubBuffer* This,
3245     struct IRpcChannelBuffer* pRpcChannelBuffer,
3246     PRPC_MESSAGE pRpcMessage,
3247     DWORD* pdwStubPhase);
3248
3249 typedef struct ITypeMarshal ITypeMarshal;
3250 /*****************************************************************************
3251  * ITypeMarshal interface
3252  */
3253 DEFINE_GUID(IID_ITypeMarshal, 0x0000002d, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46);
3254 #if defined(__cplusplus) && !defined(CINTERFACE)
3255 struct ITypeMarshal: IUnknown {
3256
3257     virtual HRESULT STDMETHODCALLTYPE Size(
3258         PVOID pvType,
3259         DWORD dwDestContext,
3260         PVOID pvDestContext,
3261         ULONG* pSize) = 0;
3262
3263     virtual HRESULT STDMETHODCALLTYPE Marshal(
3264         PVOID pvType,
3265         DWORD dwDestContext,
3266         PVOID pvDestContext,
3267         ULONG cbBufferLength,
3268         BYTE* pBuffer,
3269         ULONG* pcbWritten) = 0;
3270
3271     virtual HRESULT STDMETHODCALLTYPE Unmarshal(
3272         PVOID pvType,
3273         DWORD dwFlags,
3274         ULONG cbBufferLength,
3275         BYTE* pBuffer,
3276         ULONG* pcbRead) = 0;
3277
3278     virtual HRESULT STDMETHODCALLTYPE Free(
3279         PVOID pvType) = 0;
3280
3281 } ICOM_COM_INTERFACE_ATTRIBUTE;
3282 #else
3283 typedef struct ITypeMarshalVtbl ITypeMarshalVtbl;
3284 struct ITypeMarshal {
3285     const ITypeMarshalVtbl* lpVtbl;
3286 };
3287 struct ITypeMarshalVtbl {
3288     ICOM_MSVTABLE_COMPAT_FIELDS
3289
3290     /*** IUnknown methods ***/
3291     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
3292         ITypeMarshal* This,
3293         REFIID riid,
3294         void** ppvObject);
3295
3296     ULONG (STDMETHODCALLTYPE *AddRef)(
3297         ITypeMarshal* This);
3298
3299     ULONG (STDMETHODCALLTYPE *Release)(
3300         ITypeMarshal* This);
3301
3302     /*** ITypeMarshal methods ***/
3303     HRESULT (STDMETHODCALLTYPE *Size)(
3304         ITypeMarshal* This,
3305         PVOID pvType,
3306         DWORD dwDestContext,
3307         PVOID pvDestContext,
3308         ULONG* pSize);
3309
3310     HRESULT (STDMETHODCALLTYPE *Marshal)(
3311         ITypeMarshal* This,
3312         PVOID pvType,
3313         DWORD dwDestContext,
3314         PVOID pvDestContext,
3315         ULONG cbBufferLength,
3316         BYTE* pBuffer,
3317         ULONG* pcbWritten);
3318
3319     HRESULT (STDMETHODCALLTYPE *Unmarshal)(
3320         ITypeMarshal* This,
3321         PVOID pvType,
3322         DWORD dwFlags,
3323         ULONG cbBufferLength,
3324         BYTE* pBuffer,
3325         ULONG* pcbRead);
3326
3327     HRESULT (STDMETHODCALLTYPE *Free)(
3328         ITypeMarshal* This,
3329         PVOID pvType);
3330
3331 };
3332
3333 #define ITypeMarshal_IMETHODS \
3334     /*** IUnknown methods ***/ \
3335     HRESULT (STDMETHODCALLTYPE *QueryInterface)(INTERFACE *This, REFIID riid, void** ppvObject); \
3336     ULONG (STDMETHODCALLTYPE *AddRef)(INTERFACE *This); \
3337     ULONG (STDMETHODCALLTYPE *Release)(INTERFACE *This); \
3338     /*** ITypeMarshal methods ***/ \
3339     HRESULT (STDMETHODCALLTYPE *Size)(INTERFACE *This, PVOID pvType, DWORD dwDestContext, PVOID pvDestContext, ULONG* pSize); \
3340     HRESULT (STDMETHODCALLTYPE *Marshal)(INTERFACE *This, PVOID pvType, DWORD dwDestContext, PVOID pvDestContext, ULONG cbBufferLength, BYTE* pBuffer, ULONG* pcbWritten); \
3341     HRESULT (STDMETHODCALLTYPE *Unmarshal)(INTERFACE *This, PVOID pvType, DWORD dwFlags, ULONG cbBufferLength, BYTE* pBuffer, ULONG* pcbRead); \
3342     HRESULT (STDMETHODCALLTYPE *Free)(INTERFACE *This, PVOID pvType);
3343
3344 /*** IUnknown methods ***/
3345 #define ITypeMarshal_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
3346 #define ITypeMarshal_AddRef(p) (p)->lpVtbl->AddRef(p)
3347 #define ITypeMarshal_Release(p) (p)->lpVtbl->Release(p)
3348 /*** ITypeMarshal methods ***/
3349 #define ITypeMarshal_Size(p,a,b,c,d) (p)->lpVtbl->Size(p,a,b,c,d)
3350 #define ITypeMarshal_Marshal(p,a,b,c,d,e,f) (p)->lpVtbl->Marshal(p,a,b,c,d,e,f)
3351 #define ITypeMarshal_Unmarshal(p,a,b,c,d,e) (p)->lpVtbl->Unmarshal(p,a,b,c,d,e)
3352 #define ITypeMarshal_Free(p,a) (p)->lpVtbl->Free(p,a)
3353
3354 #endif
3355
3356 HRESULT CALLBACK ITypeMarshal_Size_Proxy(
3357     ITypeMarshal* This,
3358     PVOID pvType,
3359     DWORD dwDestContext,
3360     PVOID pvDestContext,
3361     ULONG* pSize);
3362 void __RPC_STUB ITypeMarshal_Size_Stub(
3363     struct IRpcStubBuffer* This,
3364     struct IRpcChannelBuffer* pRpcChannelBuffer,
3365     PRPC_MESSAGE pRpcMessage,
3366     DWORD* pdwStubPhase);
3367 HRESULT CALLBACK ITypeMarshal_Marshal_Proxy(
3368     ITypeMarshal* This,
3369     PVOID pvType,
3370     DWORD dwDestContext,
3371     PVOID pvDestContext,
3372     ULONG cbBufferLength,
3373     BYTE* pBuffer,
3374     ULONG* pcbWritten);
3375 void __RPC_STUB ITypeMarshal_Marshal_Stub(
3376     struct IRpcStubBuffer* This,
3377     struct IRpcChannelBuffer* pRpcChannelBuffer,
3378     PRPC_MESSAGE pRpcMessage,
3379     DWORD* pdwStubPhase);
3380 HRESULT CALLBACK ITypeMarshal_Unmarshal_Proxy(
3381     ITypeMarshal* This,
3382     PVOID pvType,
3383     DWORD dwFlags,
3384     ULONG cbBufferLength,
3385     BYTE* pBuffer,
3386     ULONG* pcbRead);
3387 void __RPC_STUB ITypeMarshal_Unmarshal_Stub(
3388     struct IRpcStubBuffer* This,
3389     struct IRpcChannelBuffer* pRpcChannelBuffer,
3390     PRPC_MESSAGE pRpcMessage,
3391     DWORD* pdwStubPhase);
3392 HRESULT CALLBACK ITypeMarshal_Free_Proxy(
3393     ITypeMarshal* This,
3394     PVOID pvType);
3395 void __RPC_STUB ITypeMarshal_Free_Stub(
3396     struct IRpcStubBuffer* This,
3397     struct IRpcChannelBuffer* pRpcChannelBuffer,
3398     PRPC_MESSAGE pRpcMessage,
3399     DWORD* pdwStubPhase);
3400
3401 typedef IRecordInfo *LPRECORDINFO;
3402
3403 /*****************************************************************************
3404  * IRecordInfo interface
3405  */
3406 DEFINE_GUID(IID_IRecordInfo, 0x0000002f, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46);
3407 #if defined(__cplusplus) && !defined(CINTERFACE)
3408 struct IRecordInfo: IUnknown {
3409
3410     virtual HRESULT STDMETHODCALLTYPE RecordInit(
3411         PVOID pvNew) = 0;
3412
3413     virtual HRESULT STDMETHODCALLTYPE RecordClear(
3414         PVOID pvExisting) = 0;
3415
3416     virtual HRESULT STDMETHODCALLTYPE RecordCopy(
3417         PVOID pvExisting,
3418         PVOID pvNew) = 0;
3419
3420     virtual HRESULT STDMETHODCALLTYPE GetGuid(
3421         GUID* pguid) = 0;
3422
3423     virtual HRESULT STDMETHODCALLTYPE GetName(
3424         BSTR* pbstrName) = 0;
3425
3426     virtual HRESULT STDMETHODCALLTYPE GetSize(
3427         ULONG* pcbSize) = 0;
3428
3429     virtual HRESULT STDMETHODCALLTYPE GetTypeInfo(
3430         ITypeInfo** ppTypeInfo) = 0;
3431
3432     virtual HRESULT STDMETHODCALLTYPE GetField(
3433         PVOID pvData,
3434         LPCOLESTR szFieldName,
3435         VARIANT* pvarField) = 0;
3436
3437     virtual HRESULT STDMETHODCALLTYPE GetFieldNoCopy(
3438         PVOID pvData,
3439         LPCOLESTR szFieldName,
3440         VARIANT* pvarField,
3441         PVOID* ppvDataCArray) = 0;
3442
3443     virtual HRESULT STDMETHODCALLTYPE PutField(
3444         ULONG wFlags,
3445         PVOID pvData,
3446         LPCOLESTR szFieldName,
3447         VARIANT* pvarField) = 0;
3448
3449     virtual HRESULT STDMETHODCALLTYPE PutFieldNoCopy(
3450         ULONG wFlags,
3451         PVOID pvData,
3452         LPCOLESTR szFieldName,
3453         VARIANT* pvarField) = 0;
3454
3455     virtual HRESULT STDMETHODCALLTYPE GetFieldNames(
3456         ULONG* pcNames,
3457         BSTR* rgBstrNames) = 0;
3458
3459     virtual BOOL STDMETHODCALLTYPE IsMatchingType(
3460         IRecordInfo* pRecordInfo) = 0;
3461
3462     virtual PVOID STDMETHODCALLTYPE RecordCreate(
3463         ) = 0;
3464
3465     virtual HRESULT STDMETHODCALLTYPE RecordCreateCopy(
3466         PVOID pvSource,
3467         PVOID* ppvDest) = 0;
3468
3469     virtual HRESULT STDMETHODCALLTYPE RecordDestroy(
3470         PVOID pvRecord) = 0;
3471
3472 } ICOM_COM_INTERFACE_ATTRIBUTE;
3473 #else
3474 typedef struct IRecordInfoVtbl IRecordInfoVtbl;
3475 struct IRecordInfo {
3476     const IRecordInfoVtbl* lpVtbl;
3477 };
3478 struct IRecordInfoVtbl {
3479     ICOM_MSVTABLE_COMPAT_FIELDS
3480
3481     /*** IUnknown methods ***/
3482     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
3483         IRecordInfo* This,
3484         REFIID riid,
3485         void** ppvObject);
3486
3487     ULONG (STDMETHODCALLTYPE *AddRef)(
3488         IRecordInfo* This);
3489
3490     ULONG (STDMETHODCALLTYPE *Release)(
3491         IRecordInfo* This);
3492
3493     /*** IRecordInfo methods ***/
3494     HRESULT (STDMETHODCALLTYPE *RecordInit)(
3495         IRecordInfo* This,
3496         PVOID pvNew);
3497
3498     HRESULT (STDMETHODCALLTYPE *RecordClear)(
3499         IRecordInfo* This,
3500         PVOID pvExisting);
3501
3502     HRESULT (STDMETHODCALLTYPE *RecordCopy)(
3503         IRecordInfo* This,
3504         PVOID pvExisting,
3505         PVOID pvNew);
3506
3507     HRESULT (STDMETHODCALLTYPE *GetGuid)(
3508         IRecordInfo* This,
3509         GUID* pguid);
3510
3511     HRESULT (STDMETHODCALLTYPE *GetName)(
3512         IRecordInfo* This,
3513         BSTR* pbstrName);
3514
3515     HRESULT (STDMETHODCALLTYPE *GetSize)(
3516         IRecordInfo* This,
3517         ULONG* pcbSize);
3518
3519     HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
3520         IRecordInfo* This,
3521         ITypeInfo** ppTypeInfo);
3522
3523     HRESULT (STDMETHODCALLTYPE *GetField)(
3524         IRecordInfo* This,
3525         PVOID pvData,
3526         LPCOLESTR szFieldName,
3527         VARIANT* pvarField);
3528
3529     HRESULT (STDMETHODCALLTYPE *GetFieldNoCopy)(
3530         IRecordInfo* This,
3531         PVOID pvData,
3532         LPCOLESTR szFieldName,
3533         VARIANT* pvarField,
3534         PVOID* ppvDataCArray);
3535
3536     HRESULT (STDMETHODCALLTYPE *PutField)(
3537         IRecordInfo* This,
3538         ULONG wFlags,
3539         PVOID pvData,
3540         LPCOLESTR szFieldName,
3541         VARIANT* pvarField);
3542
3543     HRESULT (STDMETHODCALLTYPE *PutFieldNoCopy)(
3544         IRecordInfo* This,
3545         ULONG wFlags,
3546         PVOID pvData,
3547         LPCOLESTR szFieldName,
3548         VARIANT* pvarField);
3549
3550     HRESULT (STDMETHODCALLTYPE *GetFieldNames)(
3551         IRecordInfo* This,
3552         ULONG* pcNames,
3553         BSTR* rgBstrNames);
3554
3555     BOOL (STDMETHODCALLTYPE *IsMatchingType)(
3556         IRecordInfo* This,
3557         IRecordInfo* pRecordInfo);
3558
3559     PVOID (STDMETHODCALLTYPE *RecordCreate)(
3560         IRecordInfo* This);
3561
3562     HRESULT (STDMETHODCALLTYPE *RecordCreateCopy)(
3563         IRecordInfo* This,
3564         PVOID pvSource,
3565         PVOID* ppvDest);
3566
3567     HRESULT (STDMETHODCALLTYPE *RecordDestroy)(
3568         IRecordInfo* This,
3569         PVOID pvRecord);
3570
3571 };
3572
3573 #define IRecordInfo_IMETHODS \
3574     /*** IUnknown methods ***/ \
3575     HRESULT (STDMETHODCALLTYPE *QueryInterface)(INTERFACE *This, REFIID riid, void** ppvObject); \
3576     ULONG (STDMETHODCALLTYPE *AddRef)(INTERFACE *This); \
3577     ULONG (STDMETHODCALLTYPE *Release)(INTERFACE *This); \
3578     /*** IRecordInfo methods ***/ \
3579     HRESULT (STDMETHODCALLTYPE *RecordInit)(INTERFACE *This, PVOID pvNew); \
3580     HRESULT (STDMETHODCALLTYPE *RecordClear)(INTERFACE *This, PVOID pvExisting); \
3581     HRESULT (STDMETHODCALLTYPE *RecordCopy)(INTERFACE *This, PVOID pvExisting, PVOID pvNew); \
3582     HRESULT (STDMETHODCALLTYPE *GetGuid)(INTERFACE *This, GUID* pguid); \
3583     HRESULT (STDMETHODCALLTYPE *GetName)(INTERFACE *This, BSTR* pbstrName); \
3584     HRESULT (STDMETHODCALLTYPE *GetSize)(INTERFACE *This, ULONG* pcbSize); \
3585     HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(INTERFACE *This, ITypeInfo** ppTypeInfo); \
3586     HRESULT (STDMETHODCALLTYPE *GetField)(INTERFACE *This, PVOID pvData, LPCOLESTR szFieldName, VARIANT* pvarField); \
3587     HRESULT (STDMETHODCALLTYPE *GetFieldNoCopy)(INTERFACE *This, PVOID pvData, LPCOLESTR szFieldName, VARIANT* pvarField, PVOID* ppvDataCArray); \
3588     HRESULT (STDMETHODCALLTYPE *PutField)(INTERFACE *This, ULONG wFlags, PVOID pvData, LPCOLESTR szFieldName, VARIANT* pvarField); \
3589     HRESULT (STDMETHODCALLTYPE *PutFieldNoCopy)(INTERFACE *This, ULONG wFlags, PVOID pvData, LPCOLESTR szFieldName, VARIANT* pvarField); \
3590     HRESULT (STDMETHODCALLTYPE *GetFieldNames)(INTERFACE *This, ULONG* pcNames, BSTR* rgBstrNames); \
3591     BOOL (STDMETHODCALLTYPE *IsMatchingType)(INTERFACE *This, IRecordInfo* pRecordInfo); \
3592     PVOID (STDMETHODCALLTYPE *RecordCreate)(INTERFACE *This); \
3593     HRESULT (STDMETHODCALLTYPE *RecordCreateCopy)(INTERFACE *This, PVOID pvSource, PVOID* ppvDest); \
3594     HRESULT (STDMETHODCALLTYPE *RecordDestroy)(INTERFACE *This, PVOID pvRecord);
3595
3596 /*** IUnknown methods ***/
3597 #define IRecordInfo_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
3598 #define IRecordInfo_AddRef(p) (p)->lpVtbl->AddRef(p)
3599 #define IRecordInfo_Release(p) (p)->lpVtbl->Release(p)
3600 /*** IRecordInfo methods ***/
3601 #define IRecordInfo_RecordInit(p,a) (p)->lpVtbl->RecordInit(p,a)
3602 #define IRecordInfo_RecordClear(p,a) (p)->lpVtbl->RecordClear(p,a)
3603 #define IRecordInfo_RecordCopy(p,a,b) (p)->lpVtbl->RecordCopy(p,a,b)
3604 #define IRecordInfo_GetGuid(p,a) (p)->lpVtbl->GetGuid(p,a)
3605 #define IRecordInfo_GetName(p,a) (p)->lpVtbl->GetName(p,a)
3606 #define IRecordInfo_GetSize(p,a) (p)->lpVtbl->GetSize(p,a)
3607 #define IRecordInfo_GetTypeInfo(p,a) (p)->lpVtbl->GetTypeInfo(p,a)
3608 #define IRecordInfo_GetField(p,a,b,c) (p)->lpVtbl->GetField(p,a,b,c)
3609 #define IRecordInfo_GetFieldNoCopy(p,a,b,c,d) (p)->lpVtbl->GetFieldNoCopy(p,a,b,c,d)
3610 #define IRecordInfo_PutField(p,a,b,c,d) (p)->lpVtbl->PutField(p,a,b,c,d)
3611 #define IRecordInfo_PutFieldNoCopy(p,a,b,c,d) (p)->lpVtbl->PutFieldNoCopy(p,a,b,c,d)
3612 #define IRecordInfo_GetFieldNames(p,a,b) (p)->lpVtbl->GetFieldNames(p,a,b)
3613 #define IRecordInfo_IsMatchingType(p,a) (p)->lpVtbl->IsMatchingType(p,a)
3614 #define IRecordInfo_RecordCreate(p) (p)->lpVtbl->RecordCreate(p)
3615 #define IRecordInfo_RecordCreateCopy(p,a,b) (p)->lpVtbl->RecordCreateCopy(p,a,b)
3616 #define IRecordInfo_RecordDestroy(p,a) (p)->lpVtbl->RecordDestroy(p,a)
3617
3618 #endif
3619
3620 HRESULT CALLBACK IRecordInfo_RecordInit_Proxy(
3621     IRecordInfo* This,
3622     PVOID pvNew);
3623 void __RPC_STUB IRecordInfo_RecordInit_Stub(
3624     struct IRpcStubBuffer* This,
3625     struct IRpcChannelBuffer* pRpcChannelBuffer,
3626     PRPC_MESSAGE pRpcMessage,
3627     DWORD* pdwStubPhase);
3628 HRESULT CALLBACK IRecordInfo_RecordClear_Proxy(
3629     IRecordInfo* This,
3630     PVOID pvExisting);
3631 void __RPC_STUB IRecordInfo_RecordClear_Stub(
3632     struct IRpcStubBuffer* This,
3633     struct IRpcChannelBuffer* pRpcChannelBuffer,
3634     PRPC_MESSAGE pRpcMessage,
3635     DWORD* pdwStubPhase);
3636 HRESULT CALLBACK IRecordInfo_RecordCopy_Proxy(
3637     IRecordInfo* This,
3638     PVOID pvExisting,
3639     PVOID pvNew);
3640 void __RPC_STUB IRecordInfo_RecordCopy_Stub(
3641     struct IRpcStubBuffer* This,
3642     struct IRpcChannelBuffer* pRpcChannelBuffer,
3643     PRPC_MESSAGE pRpcMessage,
3644     DWORD* pdwStubPhase);
3645 HRESULT CALLBACK IRecordInfo_GetGuid_Proxy(
3646     IRecordInfo* This,
3647     GUID* pguid);
3648 void __RPC_STUB IRecordInfo_GetGuid_Stub(
3649     struct IRpcStubBuffer* This,
3650     struct IRpcChannelBuffer* pRpcChannelBuffer,
3651     PRPC_MESSAGE pRpcMessage,
3652     DWORD* pdwStubPhase);
3653 HRESULT CALLBACK IRecordInfo_GetName_Proxy(
3654     IRecordInfo* This,
3655     BSTR* pbstrName);
3656 void __RPC_STUB IRecordInfo_GetName_Stub(
3657     struct IRpcStubBuffer* This,
3658     struct IRpcChannelBuffer* pRpcChannelBuffer,
3659     PRPC_MESSAGE pRpcMessage,
3660     DWORD* pdwStubPhase);
3661 HRESULT CALLBACK IRecordInfo_GetSize_Proxy(
3662     IRecordInfo* This,
3663     ULONG* pcbSize);
3664 void __RPC_STUB IRecordInfo_GetSize_Stub(
3665     struct IRpcStubBuffer* This,
3666     struct IRpcChannelBuffer* pRpcChannelBuffer,
3667     PRPC_MESSAGE pRpcMessage,
3668     DWORD* pdwStubPhase);
3669 HRESULT CALLBACK IRecordInfo_GetTypeInfo_Proxy(
3670     IRecordInfo* This,
3671     ITypeInfo** ppTypeInfo);
3672 void __RPC_STUB IRecordInfo_GetTypeInfo_Stub(
3673     struct IRpcStubBuffer* This,
3674     struct IRpcChannelBuffer* pRpcChannelBuffer,
3675     PRPC_MESSAGE pRpcMessage,
3676     DWORD* pdwStubPhase);
3677 HRESULT CALLBACK IRecordInfo_GetField_Proxy(
3678     IRecordInfo* This,
3679     PVOID pvData,
3680     LPCOLESTR szFieldName,
3681     VARIANT* pvarField);
3682 void __RPC_STUB IRecordInfo_GetField_Stub(
3683     struct IRpcStubBuffer* This,
3684     struct IRpcChannelBuffer* pRpcChannelBuffer,
3685     PRPC_MESSAGE pRpcMessage,
3686     DWORD* pdwStubPhase);
3687 HRESULT CALLBACK IRecordInfo_GetFieldNoCopy_Proxy(
3688     IRecordInfo* This,
3689     PVOID pvData,
3690     LPCOLESTR szFieldName,
3691     VARIANT* pvarField,
3692     PVOID* ppvDataCArray);
3693 void __RPC_STUB IRecordInfo_GetFieldNoCopy_Stub(
3694     struct IRpcStubBuffer* This,
3695     struct IRpcChannelBuffer* pRpcChannelBuffer,
3696     PRPC_MESSAGE pRpcMessage,
3697     DWORD* pdwStubPhase);
3698 HRESULT CALLBACK IRecordInfo_PutField_Proxy(
3699     IRecordInfo* This,
3700     ULONG wFlags,
3701     PVOID pvData,
3702     LPCOLESTR szFieldName,
3703     VARIANT* pvarField);
3704 void __RPC_STUB IRecordInfo_PutField_Stub(
3705     struct IRpcStubBuffer* This,
3706     struct IRpcChannelBuffer* pRpcChannelBuffer,
3707     PRPC_MESSAGE pRpcMessage,
3708     DWORD* pdwStubPhase);
3709 HRESULT CALLBACK IRecordInfo_PutFieldNoCopy_Proxy(
3710     IRecordInfo* This,
3711     ULONG wFlags,
3712     PVOID pvData,
3713     LPCOLESTR szFieldName,
3714     VARIANT* pvarField);
3715 void __RPC_STUB IRecordInfo_PutFieldNoCopy_Stub(
3716     struct IRpcStubBuffer* This,
3717     struct IRpcChannelBuffer* pRpcChannelBuffer,
3718     PRPC_MESSAGE pRpcMessage,
3719     DWORD* pdwStubPhase);
3720 HRESULT CALLBACK IRecordInfo_GetFieldNames_Proxy(
3721     IRecordInfo* This,
3722     ULONG* pcNames,
3723     BSTR* rgBstrNames);
3724 void __RPC_STUB IRecordInfo_GetFieldNames_Stub(
3725     struct IRpcStubBuffer* This,
3726     struct IRpcChannelBuffer* pRpcChannelBuffer,
3727     PRPC_MESSAGE pRpcMessage,
3728     DWORD* pdwStubPhase);
3729 BOOL CALLBACK IRecordInfo_IsMatchingType_Proxy(
3730     IRecordInfo* This,
3731     IRecordInfo* pRecordInfo);
3732 void __RPC_STUB IRecordInfo_IsMatchingType_Stub(
3733     struct IRpcStubBuffer* This,
3734     struct IRpcChannelBuffer* pRpcChannelBuffer,
3735     PRPC_MESSAGE pRpcMessage,
3736     DWORD* pdwStubPhase);
3737 PVOID CALLBACK IRecordInfo_RecordCreate_Proxy(
3738     IRecordInfo* This);
3739 void __RPC_STUB IRecordInfo_RecordCreate_Stub(
3740     struct IRpcStubBuffer* This,
3741     struct IRpcChannelBuffer* pRpcChannelBuffer,
3742     PRPC_MESSAGE pRpcMessage,
3743     DWORD* pdwStubPhase);
3744 HRESULT CALLBACK IRecordInfo_RecordCreateCopy_Proxy(
3745     IRecordInfo* This,
3746     PVOID pvSource,
3747     PVOID* ppvDest);
3748 void __RPC_STUB IRecordInfo_RecordCreateCopy_Stub(
3749     struct IRpcStubBuffer* This,
3750     struct IRpcChannelBuffer* pRpcChannelBuffer,
3751     PRPC_MESSAGE pRpcMessage,
3752     DWORD* pdwStubPhase);
3753 HRESULT CALLBACK IRecordInfo_RecordDestroy_Proxy(
3754     IRecordInfo* This,
3755     PVOID pvRecord);
3756 void __RPC_STUB IRecordInfo_RecordDestroy_Stub(
3757     struct IRpcStubBuffer* This,
3758     struct IRpcChannelBuffer* pRpcChannelBuffer,
3759     PRPC_MESSAGE pRpcMessage,
3760     DWORD* pdwStubPhase);
3761
3762 typedef struct ICreateTypeInfo ICreateTypeInfo;
3763 typedef ICreateTypeInfo *LPCREATETYPEINFO;
3764
3765 /*****************************************************************************
3766  * ICreateTypeInfo interface
3767  */
3768 DEFINE_GUID(IID_ICreateTypeInfo, 0x00020405, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46);
3769 #if defined(__cplusplus) && !defined(CINTERFACE)
3770 struct ICreateTypeInfo: IUnknown {
3771
3772     virtual HRESULT STDMETHODCALLTYPE SetGuid(
3773         REFGUID guid) = 0;
3774
3775     virtual HRESULT STDMETHODCALLTYPE SetTypeFlags(
3776         UINT uTypeFlags) = 0;
3777
3778     virtual HRESULT STDMETHODCALLTYPE SetDocString(
3779         LPOLESTR pStrDoc) = 0;
3780
3781     virtual HRESULT STDMETHODCALLTYPE SetHelpContext(
3782         DWORD dwHelpContext) = 0;
3783
3784     virtual HRESULT STDMETHODCALLTYPE SetVersion(
3785         WORD wMajorVerNum,
3786         WORD wMinorVerNum) = 0;
3787
3788     virtual HRESULT STDMETHODCALLTYPE AddRefTypeInfo(
3789         ITypeInfo* pTInfo,
3790         HREFTYPE* phRefType) = 0;
3791
3792     virtual HRESULT STDMETHODCALLTYPE AddFuncDesc(
3793         UINT index,
3794         FUNCDESC* pFuncDesc) = 0;
3795
3796     virtual HRESULT STDMETHODCALLTYPE AddImplType(
3797         UINT index,
3798         HREFTYPE hRefType) = 0;
3799
3800     virtual HRESULT STDMETHODCALLTYPE SetImplTypeFlags(
3801         UINT index,
3802         INT implTypeFlags) = 0;
3803
3804     virtual HRESULT STDMETHODCALLTYPE SetAlignment(
3805         WORD cbAlignment) = 0;
3806
3807     virtual HRESULT STDMETHODCALLTYPE SetSchema(
3808         LPOLESTR pStrSchema) = 0;
3809
3810     virtual HRESULT STDMETHODCALLTYPE AddVarDesc(
3811         UINT index,
3812         VARDESC* pVarDesc) = 0;
3813
3814     virtual HRESULT STDMETHODCALLTYPE SetFuncAndParamNames(
3815         UINT index,
3816         LPOLESTR* rgszNames,
3817         UINT cNames) = 0;
3818
3819     virtual HRESULT STDMETHODCALLTYPE SetVarName(
3820         UINT index,
3821         LPOLESTR szName) = 0;
3822
3823     virtual HRESULT STDMETHODCALLTYPE SetTypeDescAlias(
3824         TYPEDESC* pTDescAlias) = 0;
3825
3826     virtual HRESULT STDMETHODCALLTYPE DefineFuncAsDllEntry(
3827         UINT index,
3828         LPOLESTR szDllName,
3829         LPOLESTR szProcName) = 0;
3830
3831     virtual HRESULT STDMETHODCALLTYPE SetFuncDocString(
3832         UINT index,
3833         LPOLESTR szDocString) = 0;
3834
3835     virtual HRESULT STDMETHODCALLTYPE SetVarDocString(
3836         UINT index,
3837         LPOLESTR szDocString) = 0;
3838
3839     virtual HRESULT STDMETHODCALLTYPE SetFuncHelpContext(
3840         UINT index,
3841         DWORD dwHelpContext) = 0;
3842
3843     virtual HRESULT STDMETHODCALLTYPE SetVarHelpContext(
3844         UINT index,
3845         DWORD dwHelpContext) = 0;
3846
3847     virtual HRESULT STDMETHODCALLTYPE SetMops(
3848         UINT index,
3849         BSTR bstrMops) = 0;
3850
3851     virtual HRESULT STDMETHODCALLTYPE SetTypeIdldesc(
3852         IDLDESC* pIdlDesc) = 0;
3853
3854     virtual HRESULT STDMETHODCALLTYPE LayOut(
3855         ) = 0;
3856
3857 } ICOM_COM_INTERFACE_ATTRIBUTE;
3858 #else
3859 typedef struct ICreateTypeInfoVtbl ICreateTypeInfoVtbl;
3860 struct ICreateTypeInfo {
3861     const ICreateTypeInfoVtbl* lpVtbl;
3862 };
3863 struct ICreateTypeInfoVtbl {
3864     ICOM_MSVTABLE_COMPAT_FIELDS
3865
3866     /*** IUnknown methods ***/
3867     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
3868         ICreateTypeInfo* This,
3869         REFIID riid,
3870         void** ppvObject);
3871
3872     ULONG (STDMETHODCALLTYPE *AddRef)(
3873         ICreateTypeInfo* This);
3874
3875     ULONG (STDMETHODCALLTYPE *Release)(
3876         ICreateTypeInfo* This);
3877
3878     /*** ICreateTypeInfo methods ***/
3879     HRESULT (STDMETHODCALLTYPE *SetGuid)(
3880         ICreateTypeInfo* This,
3881         REFGUID guid);
3882
3883     HRESULT (STDMETHODCALLTYPE *SetTypeFlags)(
3884         ICreateTypeInfo* This,
3885         UINT uTypeFlags);
3886
3887     HRESULT (STDMETHODCALLTYPE *SetDocString)(
3888         ICreateTypeInfo* This,
3889         LPOLESTR pStrDoc);
3890
3891     HRESULT (STDMETHODCALLTYPE *SetHelpContext)(
3892         ICreateTypeInfo* This,
3893         DWORD dwHelpContext);
3894
3895     HRESULT (STDMETHODCALLTYPE *SetVersion)(
3896         ICreateTypeInfo* This,
3897         WORD wMajorVerNum,
3898         WORD wMinorVerNum);
3899
3900     HRESULT (STDMETHODCALLTYPE *AddRefTypeInfo)(
3901         ICreateTypeInfo* This,
3902         ITypeInfo* pTInfo,
3903         HREFTYPE* phRefType);
3904
3905     HRESULT (STDMETHODCALLTYPE *AddFuncDesc)(
3906         ICreateTypeInfo* This,
3907         UINT index,
3908         FUNCDESC* pFuncDesc);
3909
3910     HRESULT (STDMETHODCALLTYPE *AddImplType)(
3911         ICreateTypeInfo* This,
3912         UINT index,
3913         HREFTYPE hRefType);
3914
3915     HRESULT (STDMETHODCALLTYPE *SetImplTypeFlags)(
3916         ICreateTypeInfo* This,
3917         UINT index,
3918         INT implTypeFlags);
3919
3920     HRESULT (STDMETHODCALLTYPE *SetAlignment)(
3921         ICreateTypeInfo* This,
3922         WORD cbAlignment);
3923
3924     HRESULT (STDMETHODCALLTYPE *SetSchema)(
3925         ICreateTypeInfo* This,
3926         LPOLESTR pStrSchema);
3927
3928     HRESULT (STDMETHODCALLTYPE *AddVarDesc)(
3929         ICreateTypeInfo* This,
3930         UINT index,
3931         VARDESC* pVarDesc);
3932
3933     HRESULT (STDMETHODCALLTYPE *SetFuncAndParamNames)(
3934         ICreateTypeInfo* This,
3935         UINT index,
3936         LPOLESTR* rgszNames,
3937         UINT cNames);
3938
3939     HRESULT (STDMETHODCALLTYPE *SetVarName)(
3940         ICreateTypeInfo* This,
3941         UINT index,
3942         LPOLESTR szName);
3943
3944     HRESULT (STDMETHODCALLTYPE *SetTypeDescAlias)(
3945         ICreateTypeInfo* This,
3946         TYPEDESC* pTDescAlias);
3947
3948     HRESULT (STDMETHODCALLTYPE *DefineFuncAsDllEntry)(
3949         ICreateTypeInfo* This,
3950         UINT index,
3951         LPOLESTR szDllName,
3952         LPOLESTR szProcName);
3953
3954     HRESULT (STDMETHODCALLTYPE *SetFuncDocString)(
3955         ICreateTypeInfo* This,
3956         UINT index,
3957         LPOLESTR szDocString);
3958
3959     HRESULT (STDMETHODCALLTYPE *SetVarDocString)(
3960         ICreateTypeInfo* This,
3961         UINT index,
3962         LPOLESTR szDocString);
3963
3964     HRESULT (STDMETHODCALLTYPE *SetFuncHelpContext)(
3965         ICreateTypeInfo* This,
3966         UINT index,
3967         DWORD dwHelpContext);
3968
3969     HRESULT (STDMETHODCALLTYPE *SetVarHelpContext)(
3970         ICreateTypeInfo* This,
3971         UINT index,
3972         DWORD dwHelpContext);
3973
3974     HRESULT (STDMETHODCALLTYPE *SetMops)(
3975         ICreateTypeInfo* This,
3976         UINT index,
3977         BSTR bstrMops);
3978
3979     HRESULT (STDMETHODCALLTYPE *SetTypeIdldesc)(
3980         ICreateTypeInfo* This,
3981         IDLDESC* pIdlDesc);
3982
3983     HRESULT (STDMETHODCALLTYPE *LayOut)(
3984         ICreateTypeInfo* This);
3985
3986 };
3987
3988 #define ICreateTypeInfo_IMETHODS \
3989     /*** IUnknown methods ***/ \
3990     HRESULT (STDMETHODCALLTYPE *QueryInterface)(INTERFACE *This, REFIID riid, void** ppvObject); \
3991     ULONG (STDMETHODCALLTYPE *AddRef)(INTERFACE *This); \
3992     ULONG (STDMETHODCALLTYPE *Release)(INTERFACE *This); \
3993     /*** ICreateTypeInfo methods ***/ \
3994     HRESULT (STDMETHODCALLTYPE *SetGuid)(INTERFACE *This, REFGUID guid); \
3995     HRESULT (STDMETHODCALLTYPE *SetTypeFlags)(INTERFACE *This, UINT uTypeFlags); \
3996     HRESULT (STDMETHODCALLTYPE *SetDocString)(INTERFACE *This, LPOLESTR pStrDoc); \
3997     HRESULT (STDMETHODCALLTYPE *SetHelpContext)(INTERFACE *This, DWORD dwHelpContext); \
3998     HRESULT (STDMETHODCALLTYPE *SetVersion)(INTERFACE *This, WORD wMajorVerNum, WORD wMinorVerNum); \
3999     HRESULT (STDMETHODCALLTYPE *AddRefTypeInfo)(INTERFACE *This, ITypeInfo* pTInfo, HREFTYPE* phRefType); \
4000     HRESULT (STDMETHODCALLTYPE *AddFuncDesc)(INTERFACE *This, UINT index, FUNCDESC* pFuncDesc); \
4001     HRESULT (STDMETHODCALLTYPE *AddImplType)(INTERFACE *This, UINT index, HREFTYPE hRefType); \
4002     HRESULT (STDMETHODCALLTYPE *SetImplTypeFlags)(INTERFACE *This, UINT index, INT implTypeFlags); \
4003     HRESULT (STDMETHODCALLTYPE *SetAlignment)(INTERFACE *This, WORD cbAlignment); \
4004     HRESULT (STDMETHODCALLTYPE *SetSchema)(INTERFACE *This, LPOLESTR pStrSchema); \
4005     HRESULT (STDMETHODCALLTYPE *AddVarDesc)(INTERFACE *This, UINT index, VARDESC* pVarDesc); \
4006     HRESULT (STDMETHODCALLTYPE *SetFuncAndParamNames)(INTERFACE *This, UINT index, LPOLESTR* rgszNames, UINT cNames); \
4007     HRESULT (STDMETHODCALLTYPE *SetVarName)(INTERFACE *This, UINT index, LPOLESTR szName); \
4008     HRESULT (STDMETHODCALLTYPE *SetTypeDescAlias)(INTERFACE *This, TYPEDESC* pTDescAlias); \
4009     HRESULT (STDMETHODCALLTYPE *DefineFuncAsDllEntry)(INTERFACE *This, UINT index, LPOLESTR szDllName, LPOLESTR szProcName); \
4010     HRESULT (STDMETHODCALLTYPE *SetFuncDocString)(INTERFACE *This, UINT index, LPOLESTR szDocString); \
4011     HRESULT (STDMETHODCALLTYPE *SetVarDocString)(INTERFACE *This, UINT index, LPOLESTR szDocString); \
4012     HRESULT (STDMETHODCALLTYPE *SetFuncHelpContext)(INTERFACE *This, UINT index, DWORD dwHelpContext); \
4013     HRESULT (STDMETHODCALLTYPE *SetVarHelpContext)(INTERFACE *This, UINT index, DWORD dwHelpContext); \
4014     HRESULT (STDMETHODCALLTYPE *SetMops)(INTERFACE *This, UINT index, BSTR bstrMops); \
4015     HRESULT (STDMETHODCALLTYPE *SetTypeIdldesc)(INTERFACE *This, IDLDESC* pIdlDesc); \
4016     HRESULT (STDMETHODCALLTYPE *LayOut)(INTERFACE *This);
4017
4018 /*** IUnknown methods ***/
4019 #define ICreateTypeInfo_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
4020 #define ICreateTypeInfo_AddRef(p) (p)->lpVtbl->AddRef(p)
4021 #define ICreateTypeInfo_Release(p) (p)->lpVtbl->Release(p)
4022 /*** ICreateTypeInfo methods ***/
4023 #define ICreateTypeInfo_SetGuid(p,a) (p)->lpVtbl->SetGuid(p,a)
4024 #define ICreateTypeInfo_SetTypeFlags(p,a) (p)->lpVtbl->SetTypeFlags(p,a)
4025 #define ICreateTypeInfo_SetDocString(p,a) (p)->lpVtbl->SetDocString(p,a)
4026 #define ICreateTypeInfo_SetHelpContext(p,a) (p)->lpVtbl->SetHelpContext(p,a)
4027 #define ICreateTypeInfo_SetVersion(p,a,b) (p)->lpVtbl->SetVersion(p,a,b)
4028 #define ICreateTypeInfo_AddRefTypeInfo(p,a,b) (p)->lpVtbl->AddRefTypeInfo(p,a,b)
4029 #define ICreateTypeInfo_AddFuncDesc(p,a,b) (p)->lpVtbl->AddFuncDesc(p,a,b)
4030 #define ICreateTypeInfo_AddImplType(p,a,b) (p)->lpVtbl->AddImplType(p,a,b)
4031 #define ICreateTypeInfo_SetImplTypeFlags(p,a,b) (p)->lpVtbl->SetImplTypeFlags(p,a,b)
4032 #define ICreateTypeInfo_SetAlignment(p,a) (p)->lpVtbl->SetAlignment(p,a)
4033 #define ICreateTypeInfo_SetSchema(p,a) (p)->lpVtbl->SetSchema(p,a)
4034 #define ICreateTypeInfo_AddVarDesc(p,a,b) (p)->lpVtbl->AddVarDesc(p,a,b)
4035 #define ICreateTypeInfo_SetFuncAndParamNames(p,a,b,c) (p)->lpVtbl->SetFuncAndParamNames(p,a,b,c)
4036 #define ICreateTypeInfo_SetVarName(p,a,b) (p)->lpVtbl->SetVarName(p,a,b)
4037 #define ICreateTypeInfo_SetTypeDescAlias(p,a) (p)->lpVtbl->SetTypeDescAlias(p,a)
4038 #define ICreateTypeInfo_DefineFuncAsDllEntry(p,a,b,c) (p)->lpVtbl->DefineFuncAsDllEntry(p,a,b,c)
4039 #define ICreateTypeInfo_SetFuncDocString(p,a,b) (p)->lpVtbl->SetFuncDocString(p,a,b)
4040 #define ICreateTypeInfo_SetVarDocString(p,a,b) (p)->lpVtbl->SetVarDocString(p,a,b)
4041 #define ICreateTypeInfo_SetFuncHelpContext(p,a,b) (p)->lpVtbl->SetFuncHelpContext(p,a,b)
4042 #define ICreateTypeInfo_SetVarHelpContext(p,a,b) (p)->lpVtbl->SetVarHelpContext(p,a,b)
4043 #define ICreateTypeInfo_SetMops(p,a,b) (p)->lpVtbl->SetMops(p,a,b)
4044 #define ICreateTypeInfo_SetTypeIdldesc(p,a) (p)->lpVtbl->SetTypeIdldesc(p,a)
4045 #define ICreateTypeInfo_LayOut(p) (p)->lpVtbl->LayOut(p)
4046
4047 #endif
4048
4049 HRESULT CALLBACK ICreateTypeInfo_SetGuid_Proxy(
4050     ICreateTypeInfo* This,
4051     REFGUID guid);
4052 void __RPC_STUB ICreateTypeInfo_SetGuid_Stub(
4053     struct IRpcStubBuffer* This,
4054     struct IRpcChannelBuffer* pRpcChannelBuffer,
4055     PRPC_MESSAGE pRpcMessage,
4056     DWORD* pdwStubPhase);
4057 HRESULT CALLBACK ICreateTypeInfo_SetTypeFlags_Proxy(
4058     ICreateTypeInfo* This,
4059     UINT uTypeFlags);
4060 void __RPC_STUB ICreateTypeInfo_SetTypeFlags_Stub(
4061     struct IRpcStubBuffer* This,
4062     struct IRpcChannelBuffer* pRpcChannelBuffer,
4063     PRPC_MESSAGE pRpcMessage,
4064     DWORD* pdwStubPhase);
4065 HRESULT CALLBACK ICreateTypeInfo_SetDocString_Proxy(
4066     ICreateTypeInfo* This,
4067     LPOLESTR pStrDoc);
4068 void __RPC_STUB ICreateTypeInfo_SetDocString_Stub(
4069     struct IRpcStubBuffer* This,
4070     struct IRpcChannelBuffer* pRpcChannelBuffer,
4071     PRPC_MESSAGE pRpcMessage,
4072     DWORD* pdwStubPhase);
4073 HRESULT CALLBACK ICreateTypeInfo_SetHelpContext_Proxy(
4074     ICreateTypeInfo* This,
4075     DWORD dwHelpContext);
4076 void __RPC_STUB ICreateTypeInfo_SetHelpContext_Stub(
4077     struct IRpcStubBuffer* This,
4078     struct IRpcChannelBuffer* pRpcChannelBuffer,
4079     PRPC_MESSAGE pRpcMessage,
4080     DWORD* pdwStubPhase);
4081 HRESULT CALLBACK ICreateTypeInfo_SetVersion_Proxy(
4082     ICreateTypeInfo* This,
4083     WORD wMajorVerNum,
4084     WORD wMinorVerNum);
4085 void __RPC_STUB ICreateTypeInfo_SetVersion_Stub(
4086     struct IRpcStubBuffer* This,
4087     struct IRpcChannelBuffer* pRpcChannelBuffer,
4088     PRPC_MESSAGE pRpcMessage,
4089     DWORD* pdwStubPhase);
4090 HRESULT CALLBACK ICreateTypeInfo_AddRefTypeInfo_Proxy(
4091     ICreateTypeInfo* This,
4092     ITypeInfo* pTInfo,
4093     HREFTYPE* phRefType);
4094 void __RPC_STUB ICreateTypeInfo_AddRefTypeInfo_Stub(
4095     struct IRpcStubBuffer* This,
4096     struct IRpcChannelBuffer* pRpcChannelBuffer,
4097     PRPC_MESSAGE pRpcMessage,
4098     DWORD* pdwStubPhase);
4099 HRESULT CALLBACK ICreateTypeInfo_AddFuncDesc_Proxy(
4100     ICreateTypeInfo* This,
4101     UINT index,
4102     FUNCDESC* pFuncDesc);
4103 void __RPC_STUB ICreateTypeInfo_AddFuncDesc_Stub(
4104     struct IRpcStubBuffer* This,
4105     struct IRpcChannelBuffer* pRpcChannelBuffer,
4106     PRPC_MESSAGE pRpcMessage,
4107     DWORD* pdwStubPhase);
4108 HRESULT CALLBACK ICreateTypeInfo_AddImplType_Proxy(
4109     ICreateTypeInfo* This,
4110     UINT index,
4111     HREFTYPE hRefType);
4112 void __RPC_STUB ICreateTypeInfo_AddImplType_Stub(
4113     struct IRpcStubBuffer* This,
4114     struct IRpcChannelBuffer* pRpcChannelBuffer,
4115     PRPC_MESSAGE pRpcMessage,
4116     DWORD* pdwStubPhase);
4117 HRESULT CALLBACK ICreateTypeInfo_SetImplTypeFlags_Proxy(
4118     ICreateTypeInfo* This,
4119     UINT index,
4120     INT implTypeFlags);
4121 void __RPC_STUB ICreateTypeInfo_SetImplTypeFlags_Stub(
4122     struct IRpcStubBuffer* This,
4123     struct IRpcChannelBuffer* pRpcChannelBuffer,
4124     PRPC_MESSAGE pRpcMessage,
4125     DWORD* pdwStubPhase);
4126 HRESULT CALLBACK ICreateTypeInfo_SetAlignment_Proxy(
4127     ICreateTypeInfo* This,
4128     WORD cbAlignment);
4129 void __RPC_STUB ICreateTypeInfo_SetAlignment_Stub(
4130     struct IRpcStubBuffer* This,
4131     struct IRpcChannelBuffer* pRpcChannelBuffer,
4132     PRPC_MESSAGE pRpcMessage,
4133     DWORD* pdwStubPhase);
4134 HRESULT CALLBACK ICreateTypeInfo_SetSchema_Proxy(
4135     ICreateTypeInfo* This,
4136     LPOLESTR pStrSchema);
4137 void __RPC_STUB ICreateTypeInfo_SetSchema_Stub(
4138     struct IRpcStubBuffer* This,
4139     struct IRpcChannelBuffer* pRpcChannelBuffer,
4140     PRPC_MESSAGE pRpcMessage,
4141     DWORD* pdwStubPhase);
4142 HRESULT CALLBACK ICreateTypeInfo_AddVarDesc_Proxy(
4143     ICreateTypeInfo* This,
4144     UINT index,
4145     VARDESC* pVarDesc);
4146 void __RPC_STUB ICreateTypeInfo_AddVarDesc_Stub(
4147     struct IRpcStubBuffer* This,
4148     struct IRpcChannelBuffer* pRpcChannelBuffer,
4149     PRPC_MESSAGE pRpcMessage,
4150     DWORD* pdwStubPhase);
4151 HRESULT CALLBACK ICreateTypeInfo_SetFuncAndParamNames_Proxy(
4152     ICreateTypeInfo* This,
4153     UINT index,
4154     LPOLESTR* rgszNames,
4155     UINT cNames);
4156 void __RPC_STUB ICreateTypeInfo_SetFuncAndParamNames_Stub(
4157     struct IRpcStubBuffer* This,
4158     struct IRpcChannelBuffer* pRpcChannelBuffer,
4159     PRPC_MESSAGE pRpcMessage,
4160     DWORD* pdwStubPhase);
4161 HRESULT CALLBACK ICreateTypeInfo_SetVarName_Proxy(
4162     ICreateTypeInfo* This,
4163     UINT index,
4164     LPOLESTR szName);
4165 void __RPC_STUB ICreateTypeInfo_SetVarName_Stub(
4166     struct IRpcStubBuffer* This,
4167     struct IRpcChannelBuffer* pRpcChannelBuffer,
4168     PRPC_MESSAGE pRpcMessage,
4169     DWORD* pdwStubPhase);
4170 HRESULT CALLBACK ICreateTypeInfo_SetTypeDescAlias_Proxy(
4171     ICreateTypeInfo* This,
4172     TYPEDESC* pTDescAlias);
4173 void __RPC_STUB ICreateTypeInfo_SetTypeDescAlias_Stub(
4174     struct IRpcStubBuffer* This,
4175     struct IRpcChannelBuffer* pRpcChannelBuffer,
4176     PRPC_MESSAGE pRpcMessage,
4177     DWORD* pdwStubPhase);
4178 HRESULT CALLBACK ICreateTypeInfo_DefineFuncAsDllEntry_Proxy(
4179     ICreateTypeInfo* This,
4180     UINT index,
4181     LPOLESTR szDllName,
4182     LPOLESTR szProcName);
4183 void __RPC_STUB ICreateTypeInfo_DefineFuncAsDllEntry_Stub(
4184     struct IRpcStubBuffer* This,
4185     struct IRpcChannelBuffer* pRpcChannelBuffer,
4186     PRPC_MESSAGE pRpcMessage,
4187     DWORD* pdwStubPhase);
4188 HRESULT CALLBACK ICreateTypeInfo_SetFuncDocString_Proxy(
4189     ICreateTypeInfo* This,
4190     UINT index,
4191     LPOLESTR szDocString);
4192 void __RPC_STUB ICreateTypeInfo_SetFuncDocString_Stub(
4193     struct IRpcStubBuffer* This,
4194     struct IRpcChannelBuffer* pRpcChannelBuffer,
4195     PRPC_MESSAGE pRpcMessage,
4196     DWORD* pdwStubPhase);
4197 HRESULT CALLBACK ICreateTypeInfo_SetVarDocString_Proxy(
4198     ICreateTypeInfo* This,
4199     UINT index,
4200     LPOLESTR szDocString);
4201 void __RPC_STUB ICreateTypeInfo_SetVarDocString_Stub(
4202     struct IRpcStubBuffer* This,
4203     struct IRpcChannelBuffer* pRpcChannelBuffer,
4204     PRPC_MESSAGE pRpcMessage,
4205     DWORD* pdwStubPhase);
4206 HRESULT CALLBACK ICreateTypeInfo_SetFuncHelpContext_Proxy(
4207     ICreateTypeInfo* This,
4208     UINT index,
4209     DWORD dwHelpContext);
4210 void __RPC_STUB ICreateTypeInfo_SetFuncHelpContext_Stub(
4211     struct IRpcStubBuffer* This,
4212     struct IRpcChannelBuffer* pRpcChannelBuffer,
4213     PRPC_MESSAGE pRpcMessage,
4214     DWORD* pdwStubPhase);
4215 HRESULT CALLBACK ICreateTypeInfo_SetVarHelpContext_Proxy(
4216     ICreateTypeInfo* This,
4217     UINT index,
4218     DWORD dwHelpContext);
4219 void __RPC_STUB ICreateTypeInfo_SetVarHelpContext_Stub(
4220     struct IRpcStubBuffer* This,
4221     struct IRpcChannelBuffer* pRpcChannelBuffer,
4222     PRPC_MESSAGE pRpcMessage,
4223     DWORD* pdwStubPhase);
4224 HRESULT CALLBACK ICreateTypeInfo_SetMops_Proxy(
4225     ICreateTypeInfo* This,
4226     UINT index,
4227     BSTR bstrMops);
4228 void __RPC_STUB ICreateTypeInfo_SetMops_Stub(
4229     struct IRpcStubBuffer* This,
4230     struct IRpcChannelBuffer* pRpcChannelBuffer,
4231     PRPC_MESSAGE pRpcMessage,
4232     DWORD* pdwStubPhase);
4233 HRESULT CALLBACK ICreateTypeInfo_SetTypeIdldesc_Proxy(
4234     ICreateTypeInfo* This,
4235     IDLDESC* pIdlDesc);
4236 void __RPC_STUB ICreateTypeInfo_SetTypeIdldesc_Stub(
4237     struct IRpcStubBuffer* This,
4238     struct IRpcChannelBuffer* pRpcChannelBuffer,
4239     PRPC_MESSAGE pRpcMessage,
4240     DWORD* pdwStubPhase);
4241 HRESULT CALLBACK ICreateTypeInfo_LayOut_Proxy(
4242     ICreateTypeInfo* This);
4243 void __RPC_STUB ICreateTypeInfo_LayOut_Stub(
4244     struct IRpcStubBuffer* This,
4245     struct IRpcChannelBuffer* pRpcChannelBuffer,
4246     PRPC_MESSAGE pRpcMessage,
4247     DWORD* pdwStubPhase);
4248
4249 typedef struct ICreateTypeInfo2 ICreateTypeInfo2;
4250 typedef ICreateTypeInfo2 *LPCREATETYPEINFO2;
4251
4252 /*****************************************************************************
4253  * ICreateTypeInfo2 interface
4254  */
4255 DEFINE_GUID(IID_ICreateTypeInfo2, 0x0002040e, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46);
4256 #if defined(__cplusplus) && !defined(CINTERFACE)
4257 struct ICreateTypeInfo2: ICreateTypeInfo {
4258
4259     virtual HRESULT STDMETHODCALLTYPE DeleteFuncDesc(
4260         UINT index) = 0;
4261
4262     virtual HRESULT STDMETHODCALLTYPE DeleteFuncDescByMemId(
4263         MEMBERID memid,
4264         INVOKEKIND invKind) = 0;
4265
4266     virtual HRESULT STDMETHODCALLTYPE DeleteVarDesc(
4267         UINT index) = 0;
4268
4269     virtual HRESULT STDMETHODCALLTYPE DeleteVarDescByMemId(
4270         MEMBERID memid) = 0;
4271
4272     virtual HRESULT STDMETHODCALLTYPE DeleteImplType(
4273         UINT index) = 0;
4274
4275     virtual HRESULT STDMETHODCALLTYPE SetCustData(
4276         REFGUID guid,
4277         VARIANT* pVarVal) = 0;
4278
4279     virtual HRESULT STDMETHODCALLTYPE SetFuncCustData(
4280         UINT index,
4281         REFGUID guid,
4282         VARIANT* pVarVal) = 0;
4283
4284     virtual HRESULT STDMETHODCALLTYPE SetParamCustData(
4285         UINT indexFunc,
4286         UINT indexParam,
4287         REFGUID guid,
4288         VARIANT* pVarVal) = 0;
4289
4290     virtual HRESULT STDMETHODCALLTYPE SetVarCustData(
4291         UINT index,
4292         REFGUID guid,
4293         VARIANT* pVarVal) = 0;
4294
4295     virtual HRESULT STDMETHODCALLTYPE SetImplTypeCustData(
4296         UINT index,
4297         REFGUID guid,
4298         VARIANT* pVarVal) = 0;
4299
4300     virtual HRESULT STDMETHODCALLTYPE SetHelpStringContext(
4301         ULONG dwHelpStringContext) = 0;
4302
4303     virtual HRESULT STDMETHODCALLTYPE SetFuncHelpStringContext(
4304         UINT index,
4305         ULONG dwHelpStringContext) = 0;
4306
4307     virtual HRESULT STDMETHODCALLTYPE SetVarHelpStringContext(
4308         UINT index,
4309         ULONG dwHelpStringContext) = 0;
4310
4311     virtual HRESULT STDMETHODCALLTYPE Invalidate(
4312         ) = 0;
4313
4314     virtual HRESULT STDMETHODCALLTYPE SetName(
4315         LPOLESTR szName) = 0;
4316
4317 } ICOM_COM_INTERFACE_ATTRIBUTE;
4318 #else
4319 typedef struct ICreateTypeInfo2Vtbl ICreateTypeInfo2Vtbl;
4320 struct ICreateTypeInfo2 {
4321     const ICreateTypeInfo2Vtbl* lpVtbl;
4322 };
4323 struct ICreateTypeInfo2Vtbl {
4324     ICOM_MSVTABLE_COMPAT_FIELDS
4325
4326     /*** IUnknown methods ***/
4327     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
4328         ICreateTypeInfo2* This,
4329         REFIID riid,
4330         void** ppvObject);
4331
4332     ULONG (STDMETHODCALLTYPE *AddRef)(
4333         ICreateTypeInfo2* This);
4334
4335     ULONG (STDMETHODCALLTYPE *Release)(
4336         ICreateTypeInfo2* This);
4337
4338     /*** ICreateTypeInfo methods ***/
4339     HRESULT (STDMETHODCALLTYPE *SetGuid)(
4340         ICreateTypeInfo2* This,
4341         REFGUID guid);
4342
4343     HRESULT (STDMETHODCALLTYPE *SetTypeFlags)(
4344         ICreateTypeInfo2* This,
4345         UINT uTypeFlags);
4346
4347     HRESULT (STDMETHODCALLTYPE *SetDocString)(
4348         ICreateTypeInfo2* This,
4349         LPOLESTR pStrDoc);
4350
4351     HRESULT (STDMETHODCALLTYPE *SetHelpContext)(
4352         ICreateTypeInfo2* This,
4353         DWORD dwHelpContext);
4354
4355     HRESULT (STDMETHODCALLTYPE *SetVersion)(
4356         ICreateTypeInfo2* This,
4357         WORD wMajorVerNum,
4358         WORD wMinorVerNum);
4359
4360     HRESULT (STDMETHODCALLTYPE *AddRefTypeInfo)(
4361         ICreateTypeInfo2* This,
4362         ITypeInfo* pTInfo,
4363         HREFTYPE* phRefType);
4364
4365     HRESULT (STDMETHODCALLTYPE *AddFuncDesc)(
4366         ICreateTypeInfo2* This,
4367         UINT index,
4368         FUNCDESC* pFuncDesc);
4369
4370     HRESULT (STDMETHODCALLTYPE *AddImplType)(
4371         ICreateTypeInfo2* This,
4372         UINT index,
4373         HREFTYPE hRefType);
4374
4375     HRESULT (STDMETHODCALLTYPE *SetImplTypeFlags)(
4376         ICreateTypeInfo2* This,
4377         UINT index,
4378         INT implTypeFlags);
4379
4380     HRESULT (STDMETHODCALLTYPE *SetAlignment)(
4381         ICreateTypeInfo2* This,
4382         WORD cbAlignment);
4383
4384     HRESULT (STDMETHODCALLTYPE *SetSchema)(
4385         ICreateTypeInfo2* This,
4386         LPOLESTR pStrSchema);
4387
4388     HRESULT (STDMETHODCALLTYPE *AddVarDesc)(
4389         ICreateTypeInfo2* This,
4390         UINT index,
4391         VARDESC* pVarDesc);
4392
4393     HRESULT (STDMETHODCALLTYPE *SetFuncAndParamNames)(
4394         ICreateTypeInfo2* This,
4395         UINT index,
4396         LPOLESTR* rgszNames,
4397         UINT cNames);
4398
4399     HRESULT (STDMETHODCALLTYPE *SetVarName)(
4400         ICreateTypeInfo2* This,
4401         UINT index,
4402         LPOLESTR szName);
4403
4404     HRESULT (STDMETHODCALLTYPE *SetTypeDescAlias)(
4405         ICreateTypeInfo2* This,
4406         TYPEDESC* pTDescAlias);
4407
4408     HRESULT (STDMETHODCALLTYPE *DefineFuncAsDllEntry)(
4409         ICreateTypeInfo2* This,
4410         UINT index,
4411         LPOLESTR szDllName,
4412         LPOLESTR szProcName);
4413
4414     HRESULT (STDMETHODCALLTYPE *SetFuncDocString)(
4415         ICreateTypeInfo2* This,
4416         UINT index,
4417         LPOLESTR szDocString);
4418
4419     HRESULT (STDMETHODCALLTYPE *SetVarDocString)(
4420         ICreateTypeInfo2* This,
4421         UINT index,
4422         LPOLESTR szDocString);
4423
4424     HRESULT (STDMETHODCALLTYPE *SetFuncHelpContext)(
4425         ICreateTypeInfo2* This,
4426         UINT index,
4427         DWORD dwHelpContext);
4428
4429     HRESULT (STDMETHODCALLTYPE *SetVarHelpContext)(
4430         ICreateTypeInfo2* This,
4431         UINT index,
4432         DWORD dwHelpContext);
4433
4434     HRESULT (STDMETHODCALLTYPE *SetMops)(
4435         ICreateTypeInfo2* This,
4436         UINT index,
4437         BSTR bstrMops);
4438
4439     HRESULT (STDMETHODCALLTYPE *SetTypeIdldesc)(
4440         ICreateTypeInfo2* This,
4441         IDLDESC* pIdlDesc);
4442
4443     HRESULT (STDMETHODCALLTYPE *LayOut)(
4444         ICreateTypeInfo2* This);
4445
4446     /*** ICreateTypeInfo2 methods ***/
4447     HRESULT (STDMETHODCALLTYPE *DeleteFuncDesc)(
4448         ICreateTypeInfo2* This,
4449         UINT index);
4450
4451     HRESULT (STDMETHODCALLTYPE *DeleteFuncDescByMemId)(
4452         ICreateTypeInfo2* This,
4453         MEMBERID memid,
4454         INVOKEKIND invKind);
4455
4456     HRESULT (STDMETHODCALLTYPE *DeleteVarDesc)(
4457         ICreateTypeInfo2* This,
4458         UINT index);
4459
4460     HRESULT (STDMETHODCALLTYPE *DeleteVarDescByMemId)(
4461         ICreateTypeInfo2* This,
4462         MEMBERID memid);
4463
4464     HRESULT (STDMETHODCALLTYPE *DeleteImplType)(
4465         ICreateTypeInfo2* This,
4466         UINT index);
4467
4468     HRESULT (STDMETHODCALLTYPE *SetCustData)(
4469         ICreateTypeInfo2* This,
4470         REFGUID guid,
4471         VARIANT* pVarVal);
4472
4473     HRESULT (STDMETHODCALLTYPE *SetFuncCustData)(
4474         ICreateTypeInfo2* This,
4475         UINT index,
4476         REFGUID guid,
4477         VARIANT* pVarVal);
4478
4479     HRESULT (STDMETHODCALLTYPE *SetParamCustData)(
4480         ICreateTypeInfo2* This,
4481         UINT indexFunc,
4482         UINT indexParam,
4483         REFGUID guid,
4484         VARIANT* pVarVal);
4485
4486     HRESULT (STDMETHODCALLTYPE *SetVarCustData)(
4487         ICreateTypeInfo2* This,
4488         UINT index,
4489         REFGUID guid,
4490         VARIANT* pVarVal);
4491
4492     HRESULT (STDMETHODCALLTYPE *SetImplTypeCustData)(
4493         ICreateTypeInfo2* This,
4494         UINT index,
4495         REFGUID guid,
4496         VARIANT* pVarVal);
4497
4498     HRESULT (STDMETHODCALLTYPE *SetHelpStringContext)(
4499         ICreateTypeInfo2* This,
4500         ULONG dwHelpStringContext);
4501
4502     HRESULT (STDMETHODCALLTYPE *SetFuncHelpStringContext)(
4503         ICreateTypeInfo2* This,
4504         UINT index,
4505         ULONG dwHelpStringContext);
4506
4507     HRESULT (STDMETHODCALLTYPE *SetVarHelpStringContext)(
4508         ICreateTypeInfo2* This,
4509         UINT index,
4510         ULONG dwHelpStringContext);
4511
4512     HRESULT (STDMETHODCALLTYPE *Invalidate)(
4513         ICreateTypeInfo2* This);
4514
4515     HRESULT (STDMETHODCALLTYPE *SetName)(
4516         ICreateTypeInfo2* This,
4517         LPOLESTR szName);
4518
4519 };
4520
4521 #define ICreateTypeInfo2_IMETHODS \
4522     /*** IUnknown methods ***/ \
4523     HRESULT (STDMETHODCALLTYPE *QueryInterface)(INTERFACE *This, REFIID riid, void** ppvObject); \
4524     ULONG (STDMETHODCALLTYPE *AddRef)(INTERFACE *This); \
4525     ULONG (STDMETHODCALLTYPE *Release)(INTERFACE *This); \
4526     /*** ICreateTypeInfo methods ***/ \
4527     HRESULT (STDMETHODCALLTYPE *SetGuid)(INTERFACE *This, REFGUID guid); \
4528     HRESULT (STDMETHODCALLTYPE *SetTypeFlags)(INTERFACE *This, UINT uTypeFlags); \
4529     HRESULT (STDMETHODCALLTYPE *SetDocString)(INTERFACE *This, LPOLESTR pStrDoc); \
4530     HRESULT (STDMETHODCALLTYPE *SetHelpContext)(INTERFACE *This, DWORD dwHelpContext); \
4531     HRESULT (STDMETHODCALLTYPE *SetVersion)(INTERFACE *This, WORD wMajorVerNum, WORD wMinorVerNum); \
4532     HRESULT (STDMETHODCALLTYPE *AddRefTypeInfo)(INTERFACE *This, ITypeInfo* pTInfo, HREFTYPE* phRefType); \
4533     HRESULT (STDMETHODCALLTYPE *AddFuncDesc)(INTERFACE *This, UINT index, FUNCDESC* pFuncDesc); \
4534     HRESULT (STDMETHODCALLTYPE *AddImplType)(INTERFACE *This, UINT index, HREFTYPE hRefType); \
4535     HRESULT (STDMETHODCALLTYPE *SetImplTypeFlags)(INTERFACE *This, UINT index, INT implTypeFlags); \
4536     HRESULT (STDMETHODCALLTYPE *SetAlignment)(INTERFACE *This, WORD cbAlignment); \
4537     HRESULT (STDMETHODCALLTYPE *SetSchema)(INTERFACE *This, LPOLESTR pStrSchema); \
4538     HRESULT (STDMETHODCALLTYPE *AddVarDesc)(INTERFACE *This, UINT index, VARDESC* pVarDesc); \
4539     HRESULT (STDMETHODCALLTYPE *SetFuncAndParamNames)(INTERFACE *This, UINT index, LPOLESTR* rgszNames, UINT cNames); \
4540     HRESULT (STDMETHODCALLTYPE *SetVarName)(INTERFACE *This, UINT index, LPOLESTR szName); \
4541     HRESULT (STDMETHODCALLTYPE *SetTypeDescAlias)(INTERFACE *This, TYPEDESC* pTDescAlias); \
4542     HRESULT (STDMETHODCALLTYPE *DefineFuncAsDllEntry)(INTERFACE *This, UINT index, LPOLESTR szDllName, LPOLESTR szProcName); \
4543     HRESULT (STDMETHODCALLTYPE *SetFuncDocString)(INTERFACE *This, UINT index, LPOLESTR szDocString); \
4544     HRESULT (STDMETHODCALLTYPE *SetVarDocString)(INTERFACE *This, UINT index, LPOLESTR szDocString); \
4545     HRESULT (STDMETHODCALLTYPE *SetFuncHelpContext)(INTERFACE *This, UINT index, DWORD dwHelpContext); \
4546     HRESULT (STDMETHODCALLTYPE *SetVarHelpContext)(INTERFACE *This, UINT index, DWORD dwHelpContext); \
4547     HRESULT (STDMETHODCALLTYPE *SetMops)(INTERFACE *This, UINT index, BSTR bstrMops); \
4548     HRESULT (STDMETHODCALLTYPE *SetTypeIdldesc)(INTERFACE *This, IDLDESC* pIdlDesc); \
4549     HRESULT (STDMETHODCALLTYPE *LayOut)(INTERFACE *This); \
4550     /*** ICreateTypeInfo2 methods ***/ \
4551     HRESULT (STDMETHODCALLTYPE *DeleteFuncDesc)(INTERFACE *This, UINT index); \
4552     HRESULT (STDMETHODCALLTYPE *DeleteFuncDescByMemId)(INTERFACE *This, MEMBERID memid, INVOKEKIND invKind); \
4553     HRESULT (STDMETHODCALLTYPE *DeleteVarDesc)(INTERFACE *This, UINT index); \
4554     HRESULT (STDMETHODCALLTYPE *DeleteVarDescByMemId)(INTERFACE *This, MEMBERID memid); \
4555     HRESULT (STDMETHODCALLTYPE *DeleteImplType)(INTERFACE *This, UINT index); \
4556     HRESULT (STDMETHODCALLTYPE *SetCustData)(INTERFACE *This, REFGUID guid, VARIANT* pVarVal); \
4557     HRESULT (STDMETHODCALLTYPE *SetFuncCustData)(INTERFACE *This, UINT index, REFGUID guid, VARIANT* pVarVal); \
4558     HRESULT (STDMETHODCALLTYPE *SetParamCustData)(INTERFACE *This, UINT indexFunc, UINT indexParam, REFGUID guid, VARIANT* pVarVal); \
4559     HRESULT (STDMETHODCALLTYPE *SetVarCustData)(INTERFACE *This, UINT index, REFGUID guid, VARIANT* pVarVal); \
4560     HRESULT (STDMETHODCALLTYPE *SetImplTypeCustData)(INTERFACE *This, UINT index, REFGUID guid, VARIANT* pVarVal); \
4561     HRESULT (STDMETHODCALLTYPE *SetHelpStringContext)(INTERFACE *This, ULONG dwHelpStringContext); \
4562     HRESULT (STDMETHODCALLTYPE *SetFuncHelpStringContext)(INTERFACE *This, UINT index, ULONG dwHelpStringContext); \
4563     HRESULT (STDMETHODCALLTYPE *SetVarHelpStringContext)(INTERFACE *This, UINT index, ULONG dwHelpStringContext); \
4564     HRESULT (STDMETHODCALLTYPE *Invalidate)(INTERFACE *This); \
4565     HRESULT (STDMETHODCALLTYPE *SetName)(INTERFACE *This, LPOLESTR szName);
4566
4567 /*** IUnknown methods ***/
4568 #define ICreateTypeInfo2_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
4569 #define ICreateTypeInfo2_AddRef(p) (p)->lpVtbl->AddRef(p)
4570 #define ICreateTypeInfo2_Release(p) (p)->lpVtbl->Release(p)
4571 /*** ICreateTypeInfo methods ***/
4572 #define ICreateTypeInfo2_SetGuid(p,a) (p)->lpVtbl->SetGuid(p,a)
4573 #define ICreateTypeInfo2_SetTypeFlags(p,a) (p)->lpVtbl->SetTypeFlags(p,a)
4574 #define ICreateTypeInfo2_SetDocString(p,a) (p)->lpVtbl->SetDocString(p,a)
4575 #define ICreateTypeInfo2_SetHelpContext(p,a) (p)->lpVtbl->SetHelpContext(p,a)
4576 #define ICreateTypeInfo2_SetVersion(p,a,b) (p)->lpVtbl->SetVersion(p,a,b)
4577 #define ICreateTypeInfo2_AddRefTypeInfo(p,a,b) (p)->lpVtbl->AddRefTypeInfo(p,a,b)
4578 #define ICreateTypeInfo2_AddFuncDesc(p,a,b) (p)->lpVtbl->AddFuncDesc(p,a,b)
4579 #define ICreateTypeInfo2_AddImplType(p,a,b) (p)->lpVtbl->AddImplType(p,a,b)
4580 #define ICreateTypeInfo2_SetImplTypeFlags(p,a,b) (p)->lpVtbl->SetImplTypeFlags(p,a,b)
4581 #define ICreateTypeInfo2_SetAlignment(p,a) (p)->lpVtbl->SetAlignment(p,a)
4582 #define ICreateTypeInfo2_SetSchema(p,a) (p)->lpVtbl->SetSchema(p,a)
4583 #define ICreateTypeInfo2_AddVarDesc(p,a,b) (p)->lpVtbl->AddVarDesc(p,a,b)
4584 #define ICreateTypeInfo2_SetFuncAndParamNames(p,a,b,c) (p)->lpVtbl->SetFuncAndParamNames(p,a,b,c)
4585 #define ICreateTypeInfo2_SetVarName(p,a,b) (p)->lpVtbl->SetVarName(p,a,b)
4586 #define ICreateTypeInfo2_SetTypeDescAlias(p,a) (p)->lpVtbl->SetTypeDescAlias(p,a)
4587 #define ICreateTypeInfo2_DefineFuncAsDllEntry(p,a,b,c) (p)->lpVtbl->DefineFuncAsDllEntry(p,a,b,c)
4588 #define ICreateTypeInfo2_SetFuncDocString(p,a,b) (p)->lpVtbl->SetFuncDocString(p,a,b)
4589 #define ICreateTypeInfo2_SetVarDocString(p,a,b) (p)->lpVtbl->SetVarDocString(p,a,b)
4590 #define ICreateTypeInfo2_SetFuncHelpContext(p,a,b) (p)->lpVtbl->SetFuncHelpContext(p,a,b)
4591 #define ICreateTypeInfo2_SetVarHelpContext(p,a,b) (p)->lpVtbl->SetVarHelpContext(p,a,b)
4592 #define ICreateTypeInfo2_SetMops(p,a,b) (p)->lpVtbl->SetMops(p,a,b)
4593 #define ICreateTypeInfo2_SetTypeIdldesc(p,a) (p)->lpVtbl->SetTypeIdldesc(p,a)
4594 #define ICreateTypeInfo2_LayOut(p) (p)->lpVtbl->LayOut(p)
4595 /*** ICreateTypeInfo2 methods ***/
4596 #define ICreateTypeInfo2_DeleteFuncDesc(p,a) (p)->lpVtbl->DeleteFuncDesc(p,a)
4597 #define ICreateTypeInfo2_DeleteFuncDescByMemId(p,a,b) (p)->lpVtbl->DeleteFuncDescByMemId(p,a,b)
4598 #define ICreateTypeInfo2_DeleteVarDesc(p,a) (p)->lpVtbl->DeleteVarDesc(p,a)
4599 #define ICreateTypeInfo2_DeleteVarDescByMemId(p,a) (p)->lpVtbl->DeleteVarDescByMemId(p,a)
4600 #define ICreateTypeInfo2_DeleteImplType(p,a) (p)->lpVtbl->DeleteImplType(p,a)
4601 #define ICreateTypeInfo2_SetCustData(p,a,b) (p)->lpVtbl->SetCustData(p,a,b)
4602 #define ICreateTypeInfo2_SetFuncCustData(p,a,b,c) (p)->lpVtbl->SetFuncCustData(p,a,b,c)
4603 #define ICreateTypeInfo2_SetParamCustData(p,a,b,c,d) (p)->lpVtbl->SetParamCustData(p,a,b,c,d)
4604 #define ICreateTypeInfo2_SetVarCustData(p,a,b,c) (p)->lpVtbl->SetVarCustData(p,a,b,c)
4605 #define ICreateTypeInfo2_SetImplTypeCustData(p,a,b,c) (p)->lpVtbl->SetImplTypeCustData(p,a,b,c)
4606 #define ICreateTypeInfo2_SetHelpStringContext(p,a) (p)->lpVtbl->SetHelpStringContext(p,a)
4607 #define ICreateTypeInfo2_SetFuncHelpStringContext(p,a,b) (p)->lpVtbl->SetFuncHelpStringContext(p,a,b)
4608 #define ICreateTypeInfo2_SetVarHelpStringContext(p,a,b) (p)->lpVtbl->SetVarHelpStringContext(p,a,b)
4609 #define ICreateTypeInfo2_Invalidate(p) (p)->lpVtbl->Invalidate(p)
4610 #define ICreateTypeInfo2_SetName(p,a) (p)->lpVtbl->SetName(p,a)
4611
4612 #endif
4613
4614 HRESULT CALLBACK ICreateTypeInfo2_DeleteFuncDesc_Proxy(
4615     ICreateTypeInfo2* This,
4616     UINT index);
4617 void __RPC_STUB ICreateTypeInfo2_DeleteFuncDesc_Stub(
4618     struct IRpcStubBuffer* This,
4619     struct IRpcChannelBuffer* pRpcChannelBuffer,
4620     PRPC_MESSAGE pRpcMessage,
4621     DWORD* pdwStubPhase);
4622 HRESULT CALLBACK ICreateTypeInfo2_DeleteFuncDescByMemId_Proxy(
4623     ICreateTypeInfo2* This,
4624     MEMBERID memid,
4625     INVOKEKIND invKind);
4626 void __RPC_STUB ICreateTypeInfo2_DeleteFuncDescByMemId_Stub(
4627     struct IRpcStubBuffer* This,
4628     struct IRpcChannelBuffer* pRpcChannelBuffer,
4629     PRPC_MESSAGE pRpcMessage,
4630     DWORD* pdwStubPhase);
4631 HRESULT CALLBACK ICreateTypeInfo2_DeleteVarDesc_Proxy(
4632     ICreateTypeInfo2* This,
4633     UINT index);
4634 void __RPC_STUB ICreateTypeInfo2_DeleteVarDesc_Stub(
4635     struct IRpcStubBuffer* This,
4636     struct IRpcChannelBuffer* pRpcChannelBuffer,
4637     PRPC_MESSAGE pRpcMessage,
4638     DWORD* pdwStubPhase);
4639 HRESULT CALLBACK ICreateTypeInfo2_DeleteVarDescByMemId_Proxy(
4640     ICreateTypeInfo2* This,
4641     MEMBERID memid);
4642 void __RPC_STUB ICreateTypeInfo2_DeleteVarDescByMemId_Stub(
4643     struct IRpcStubBuffer* This,
4644     struct IRpcChannelBuffer* pRpcChannelBuffer,
4645     PRPC_MESSAGE pRpcMessage,
4646     DWORD* pdwStubPhase);
4647 HRESULT CALLBACK ICreateTypeInfo2_DeleteImplType_Proxy(
4648     ICreateTypeInfo2* This,
4649     UINT index);
4650 void __RPC_STUB ICreateTypeInfo2_DeleteImplType_Stub(
4651     struct IRpcStubBuffer* This,
4652     struct IRpcChannelBuffer* pRpcChannelBuffer,
4653     PRPC_MESSAGE pRpcMessage,
4654     DWORD* pdwStubPhase);
4655 HRESULT CALLBACK ICreateTypeInfo2_SetCustData_Proxy(
4656     ICreateTypeInfo2* This,
4657     REFGUID guid,
4658     VARIANT* pVarVal);
4659 void __RPC_STUB ICreateTypeInfo2_SetCustData_Stub(
4660     struct IRpcStubBuffer* This,
4661     struct IRpcChannelBuffer* pRpcChannelBuffer,
4662     PRPC_MESSAGE pRpcMessage,
4663     DWORD* pdwStubPhase);
4664 HRESULT CALLBACK ICreateTypeInfo2_SetFuncCustData_Proxy(
4665     ICreateTypeInfo2* This,
4666     UINT index,
4667     REFGUID guid,
4668     VARIANT* pVarVal);
4669 void __RPC_STUB ICreateTypeInfo2_SetFuncCustData_Stub(
4670     struct IRpcStubBuffer* This,
4671     struct IRpcChannelBuffer* pRpcChannelBuffer,
4672     PRPC_MESSAGE pRpcMessage,
4673     DWORD* pdwStubPhase);
4674 HRESULT CALLBACK ICreateTypeInfo2_SetParamCustData_Proxy(
4675     ICreateTypeInfo2* This,
4676     UINT indexFunc,
4677     UINT indexParam,
4678     REFGUID guid,
4679     VARIANT* pVarVal);
4680 void __RPC_STUB ICreateTypeInfo2_SetParamCustData_Stub(
4681     struct IRpcStubBuffer* This,
4682     struct IRpcChannelBuffer* pRpcChannelBuffer,
4683     PRPC_MESSAGE pRpcMessage,
4684     DWORD* pdwStubPhase);
4685 HRESULT CALLBACK ICreateTypeInfo2_SetVarCustData_Proxy(
4686     ICreateTypeInfo2* This,
4687     UINT index,
4688     REFGUID guid,
4689     VARIANT* pVarVal);
4690 void __RPC_STUB ICreateTypeInfo2_SetVarCustData_Stub(
4691     struct IRpcStubBuffer* This,
4692     struct IRpcChannelBuffer* pRpcChannelBuffer,
4693     PRPC_MESSAGE pRpcMessage,
4694     DWORD* pdwStubPhase);
4695 HRESULT CALLBACK ICreateTypeInfo2_SetImplTypeCustData_Proxy(
4696     ICreateTypeInfo2* This,
4697     UINT index,
4698     REFGUID guid,
4699     VARIANT* pVarVal);
4700 void __RPC_STUB ICreateTypeInfo2_SetImplTypeCustData_Stub(
4701     struct IRpcStubBuffer* This,
4702     struct IRpcChannelBuffer* pRpcChannelBuffer,
4703     PRPC_MESSAGE pRpcMessage,
4704     DWORD* pdwStubPhase);
4705 HRESULT CALLBACK ICreateTypeInfo2_SetHelpStringContext_Proxy(
4706     ICreateTypeInfo2* This,
4707     ULONG dwHelpStringContext);
4708 void __RPC_STUB ICreateTypeInfo2_SetHelpStringContext_Stub(
4709     struct IRpcStubBuffer* This,
4710     struct IRpcChannelBuffer* pRpcChannelBuffer,
4711     PRPC_MESSAGE pRpcMessage,
4712     DWORD* pdwStubPhase);
4713 HRESULT CALLBACK ICreateTypeInfo2_SetFuncHelpStringContext_Proxy(
4714     ICreateTypeInfo2* This,
4715     UINT index,
4716     ULONG dwHelpStringContext);
4717 void __RPC_STUB ICreateTypeInfo2_SetFuncHelpStringContext_Stub(
4718     struct IRpcStubBuffer* This,
4719     struct IRpcChannelBuffer* pRpcChannelBuffer,
4720     PRPC_MESSAGE pRpcMessage,
4721     DWORD* pdwStubPhase);
4722 HRESULT CALLBACK ICreateTypeInfo2_SetVarHelpStringContext_Proxy(
4723     ICreateTypeInfo2* This,
4724     UINT index,
4725     ULONG dwHelpStringContext);
4726 void __RPC_STUB ICreateTypeInfo2_SetVarHelpStringContext_Stub(
4727     struct IRpcStubBuffer* This,
4728     struct IRpcChannelBuffer* pRpcChannelBuffer,
4729     PRPC_MESSAGE pRpcMessage,
4730     DWORD* pdwStubPhase);
4731 HRESULT CALLBACK ICreateTypeInfo2_Invalidate_Proxy(
4732     ICreateTypeInfo2* This);
4733 void __RPC_STUB ICreateTypeInfo2_Invalidate_Stub(
4734     struct IRpcStubBuffer* This,
4735     struct IRpcChannelBuffer* pRpcChannelBuffer,
4736     PRPC_MESSAGE pRpcMessage,
4737     DWORD* pdwStubPhase);
4738 HRESULT CALLBACK ICreateTypeInfo2_SetName_Proxy(
4739     ICreateTypeInfo2* This,
4740     LPOLESTR szName);
4741 void __RPC_STUB ICreateTypeInfo2_SetName_Stub(
4742     struct IRpcStubBuffer* This,
4743     struct IRpcChannelBuffer* pRpcChannelBuffer,
4744     PRPC_MESSAGE pRpcMessage,
4745     DWORD* pdwStubPhase);
4746
4747 typedef struct ICreateTypeLib ICreateTypeLib;
4748 typedef ICreateTypeLib *LPCREATETYPELIB;
4749
4750 /*****************************************************************************
4751  * ICreateTypeLib interface
4752  */
4753 DEFINE_GUID(IID_ICreateTypeLib, 0x00020406, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46);
4754 #if defined(__cplusplus) && !defined(CINTERFACE)
4755 struct ICreateTypeLib: IUnknown {
4756
4757     virtual HRESULT STDMETHODCALLTYPE CreateTypeInfo(
4758         LPOLESTR szName,
4759         TYPEKIND tkind,
4760         ICreateTypeInfo** ppCTInfo) = 0;
4761
4762     virtual HRESULT STDMETHODCALLTYPE SetName(
4763         LPOLESTR szName) = 0;
4764
4765     virtual HRESULT STDMETHODCALLTYPE SetVersion(
4766         WORD wMajorVerNum,
4767         WORD wMinorVerNum) = 0;
4768
4769     virtual HRESULT STDMETHODCALLTYPE SetGuid(
4770         REFGUID guid) = 0;
4771
4772     virtual HRESULT STDMETHODCALLTYPE SetDocString(
4773         LPOLESTR szDoc) = 0;
4774
4775     virtual HRESULT STDMETHODCALLTYPE SetHelpFileName(
4776         LPOLESTR szHelpFileName) = 0;
4777
4778     virtual HRESULT STDMETHODCALLTYPE SetHelpContext(
4779         DWORD dwHelpContext) = 0;
4780
4781     virtual HRESULT STDMETHODCALLTYPE SetLcid(
4782         LCID lcid) = 0;
4783
4784     virtual HRESULT STDMETHODCALLTYPE SetLibFlags(
4785         UINT uLibFlags) = 0;
4786
4787     virtual HRESULT STDMETHODCALLTYPE SaveAllChanges(
4788         ) = 0;
4789
4790 } ICOM_COM_INTERFACE_ATTRIBUTE;
4791 #else
4792 typedef struct ICreateTypeLibVtbl ICreateTypeLibVtbl;
4793 struct ICreateTypeLib {
4794     const ICreateTypeLibVtbl* lpVtbl;
4795 };
4796 struct ICreateTypeLibVtbl {
4797     ICOM_MSVTABLE_COMPAT_FIELDS
4798
4799     /*** IUnknown methods ***/
4800     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
4801         ICreateTypeLib* This,
4802         REFIID riid,
4803         void** ppvObject);
4804
4805     ULONG (STDMETHODCALLTYPE *AddRef)(
4806         ICreateTypeLib* This);
4807
4808     ULONG (STDMETHODCALLTYPE *Release)(
4809         ICreateTypeLib* This);
4810
4811     /*** ICreateTypeLib methods ***/
4812     HRESULT (STDMETHODCALLTYPE *CreateTypeInfo)(
4813         ICreateTypeLib* This,
4814         LPOLESTR szName,
4815         TYPEKIND tkind,
4816         ICreateTypeInfo** ppCTInfo);
4817
4818     HRESULT (STDMETHODCALLTYPE *SetName)(
4819         ICreateTypeLib* This,
4820         LPOLESTR szName);
4821
4822     HRESULT (STDMETHODCALLTYPE *SetVersion)(
4823         ICreateTypeLib* This,
4824         WORD wMajorVerNum,
4825         WORD wMinorVerNum);
4826
4827     HRESULT (STDMETHODCALLTYPE *SetGuid)(
4828         ICreateTypeLib* This,
4829         REFGUID guid);
4830
4831     HRESULT (STDMETHODCALLTYPE *SetDocString)(
4832         ICreateTypeLib* This,
4833         LPOLESTR szDoc);
4834
4835     HRESULT (STDMETHODCALLTYPE *SetHelpFileName)(
4836         ICreateTypeLib* This,
4837         LPOLESTR szHelpFileName);
4838
4839     HRESULT (STDMETHODCALLTYPE *SetHelpContext)(
4840         ICreateTypeLib* This,
4841         DWORD dwHelpContext);
4842
4843     HRESULT (STDMETHODCALLTYPE *SetLcid)(
4844         ICreateTypeLib* This,
4845         LCID lcid);
4846
4847     HRESULT (STDMETHODCALLTYPE *SetLibFlags)(
4848         ICreateTypeLib* This,
4849         UINT uLibFlags);
4850
4851     HRESULT (STDMETHODCALLTYPE *SaveAllChanges)(
4852         ICreateTypeLib* This);
4853
4854 };
4855
4856 #define ICreateTypeLib_IMETHODS \
4857     /*** IUnknown methods ***/ \
4858     HRESULT (STDMETHODCALLTYPE *QueryInterface)(INTERFACE *This, REFIID riid, void** ppvObject); \
4859     ULONG (STDMETHODCALLTYPE *AddRef)(INTERFACE *This); \
4860     ULONG (STDMETHODCALLTYPE *Release)(INTERFACE *This); \
4861     /*** ICreateTypeLib methods ***/ \
4862     HRESULT (STDMETHODCALLTYPE *CreateTypeInfo)(INTERFACE *This, LPOLESTR szName, TYPEKIND tkind, ICreateTypeInfo** ppCTInfo); \
4863     HRESULT (STDMETHODCALLTYPE *SetName)(INTERFACE *This, LPOLESTR szName); \
4864     HRESULT (STDMETHODCALLTYPE *SetVersion)(INTERFACE *This, WORD wMajorVerNum, WORD wMinorVerNum); \
4865     HRESULT (STDMETHODCALLTYPE *SetGuid)(INTERFACE *This, REFGUID guid); \
4866     HRESULT (STDMETHODCALLTYPE *SetDocString)(INTERFACE *This, LPOLESTR szDoc); \
4867     HRESULT (STDMETHODCALLTYPE *SetHelpFileName)(INTERFACE *This, LPOLESTR szHelpFileName); \
4868     HRESULT (STDMETHODCALLTYPE *SetHelpContext)(INTERFACE *This, DWORD dwHelpContext); \
4869     HRESULT (STDMETHODCALLTYPE *SetLcid)(INTERFACE *This, LCID lcid); \
4870     HRESULT (STDMETHODCALLTYPE *SetLibFlags)(INTERFACE *This, UINT uLibFlags); \
4871     HRESULT (STDMETHODCALLTYPE *SaveAllChanges)(INTERFACE *This);
4872
4873 /*** IUnknown methods ***/
4874 #define ICreateTypeLib_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
4875 #define ICreateTypeLib_AddRef(p) (p)->lpVtbl->AddRef(p)
4876 #define ICreateTypeLib_Release(p) (p)->lpVtbl->Release(p)
4877 /*** ICreateTypeLib methods ***/
4878 #define ICreateTypeLib_CreateTypeInfo(p,a,b,c) (p)->lpVtbl->CreateTypeInfo(p,a,b,c)
4879 #define ICreateTypeLib_SetName(p,a) (p)->lpVtbl->SetName(p,a)
4880 #define ICreateTypeLib_SetVersion(p,a,b) (p)->lpVtbl->SetVersion(p,a,b)
4881 #define ICreateTypeLib_SetGuid(p,a) (p)->lpVtbl->SetGuid(p,a)
4882 #define ICreateTypeLib_SetDocString(p,a) (p)->lpVtbl->SetDocString(p,a)
4883 #define ICreateTypeLib_SetHelpFileName(p,a) (p)->lpVtbl->SetHelpFileName(p,a)
4884 #define ICreateTypeLib_SetHelpContext(p,a) (p)->lpVtbl->SetHelpContext(p,a)
4885 #define ICreateTypeLib_SetLcid(p,a) (p)->lpVtbl->SetLcid(p,a)
4886 #define ICreateTypeLib_SetLibFlags(p,a) (p)->lpVtbl->SetLibFlags(p,a)
4887 #define ICreateTypeLib_SaveAllChanges(p) (p)->lpVtbl->SaveAllChanges(p)
4888
4889 #endif
4890
4891 HRESULT CALLBACK ICreateTypeLib_CreateTypeInfo_Proxy(
4892     ICreateTypeLib* This,
4893     LPOLESTR szName,
4894     TYPEKIND tkind,
4895     ICreateTypeInfo** ppCTInfo);
4896 void __RPC_STUB ICreateTypeLib_CreateTypeInfo_Stub(
4897     struct IRpcStubBuffer* This,
4898     struct IRpcChannelBuffer* pRpcChannelBuffer,
4899     PRPC_MESSAGE pRpcMessage,
4900     DWORD* pdwStubPhase);
4901 HRESULT CALLBACK ICreateTypeLib_SetName_Proxy(
4902     ICreateTypeLib* This,
4903     LPOLESTR szName);
4904 void __RPC_STUB ICreateTypeLib_SetName_Stub(
4905     struct IRpcStubBuffer* This,
4906     struct IRpcChannelBuffer* pRpcChannelBuffer,
4907     PRPC_MESSAGE pRpcMessage,
4908     DWORD* pdwStubPhase);
4909 HRESULT CALLBACK ICreateTypeLib_SetVersion_Proxy(
4910     ICreateTypeLib* This,
4911     WORD wMajorVerNum,
4912     WORD wMinorVerNum);
4913 void __RPC_STUB ICreateTypeLib_SetVersion_Stub(
4914     struct IRpcStubBuffer* This,
4915     struct IRpcChannelBuffer* pRpcChannelBuffer,
4916     PRPC_MESSAGE pRpcMessage,
4917     DWORD* pdwStubPhase);
4918 HRESULT CALLBACK ICreateTypeLib_SetGuid_Proxy(
4919     ICreateTypeLib* This,
4920     REFGUID guid);
4921 void __RPC_STUB ICreateTypeLib_SetGuid_Stub(
4922     struct IRpcStubBuffer* This,
4923     struct IRpcChannelBuffer* pRpcChannelBuffer,
4924     PRPC_MESSAGE pRpcMessage,
4925     DWORD* pdwStubPhase);
4926 HRESULT CALLBACK ICreateTypeLib_SetDocString_Proxy(
4927     ICreateTypeLib* This,
4928     LPOLESTR szDoc);
4929 void __RPC_STUB ICreateTypeLib_SetDocString_Stub(
4930     struct IRpcStubBuffer* This,
4931     struct IRpcChannelBuffer* pRpcChannelBuffer,
4932     PRPC_MESSAGE pRpcMessage,
4933     DWORD* pdwStubPhase);
4934 HRESULT CALLBACK ICreateTypeLib_SetHelpFileName_Proxy(
4935     ICreateTypeLib* This,
4936     LPOLESTR szHelpFileName);
4937 void __RPC_STUB ICreateTypeLib_SetHelpFileName_Stub(
4938     struct IRpcStubBuffer* This,
4939     struct IRpcChannelBuffer* pRpcChannelBuffer,
4940     PRPC_MESSAGE pRpcMessage,
4941     DWORD* pdwStubPhase);
4942 HRESULT CALLBACK ICreateTypeLib_SetHelpContext_Proxy(
4943     ICreateTypeLib* This,
4944     DWORD dwHelpContext);
4945 void __RPC_STUB ICreateTypeLib_SetHelpContext_Stub(
4946     struct IRpcStubBuffer* This,
4947     struct IRpcChannelBuffer* pRpcChannelBuffer,
4948     PRPC_MESSAGE pRpcMessage,
4949     DWORD* pdwStubPhase);
4950 HRESULT CALLBACK ICreateTypeLib_SetLcid_Proxy(
4951     ICreateTypeLib* This,
4952     LCID lcid);
4953 void __RPC_STUB ICreateTypeLib_SetLcid_Stub(
4954     struct IRpcStubBuffer* This,
4955     struct IRpcChannelBuffer* pRpcChannelBuffer,
4956     PRPC_MESSAGE pRpcMessage,
4957     DWORD* pdwStubPhase);
4958 HRESULT CALLBACK ICreateTypeLib_SetLibFlags_Proxy(
4959     ICreateTypeLib* This,
4960     UINT uLibFlags);
4961 void __RPC_STUB ICreateTypeLib_SetLibFlags_Stub(
4962     struct IRpcStubBuffer* This,
4963     struct IRpcChannelBuffer* pRpcChannelBuffer,
4964     PRPC_MESSAGE pRpcMessage,
4965     DWORD* pdwStubPhase);
4966 HRESULT CALLBACK ICreateTypeLib_SaveAllChanges_Proxy(
4967     ICreateTypeLib* This);
4968 void __RPC_STUB ICreateTypeLib_SaveAllChanges_Stub(
4969     struct IRpcStubBuffer* This,
4970     struct IRpcChannelBuffer* pRpcChannelBuffer,
4971     PRPC_MESSAGE pRpcMessage,
4972     DWORD* pdwStubPhase);
4973
4974 typedef struct ICreateTypeLib2 ICreateTypeLib2;
4975 typedef ICreateTypeLib2 *LPCREATETYPELIB2;
4976
4977 /*****************************************************************************
4978  * ICreateTypeLib2 interface
4979  */
4980 DEFINE_GUID(IID_ICreateTypeLib2, 0x0002040f, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46);
4981 #if defined(__cplusplus) && !defined(CINTERFACE)
4982 struct ICreateTypeLib2: ICreateTypeLib {
4983
4984     virtual HRESULT STDMETHODCALLTYPE DeleteTypeInfo(
4985         LPOLESTR szName) = 0;
4986
4987     virtual HRESULT STDMETHODCALLTYPE SetCustData(
4988         REFGUID guid,
4989         VARIANT* pVarVal) = 0;
4990
4991     virtual HRESULT STDMETHODCALLTYPE SetHelpStringContext(
4992         ULONG dwHelpStringContext) = 0;
4993
4994     virtual HRESULT STDMETHODCALLTYPE SetHelpStringDll(
4995         LPOLESTR szFileName) = 0;
4996
4997 } ICOM_COM_INTERFACE_ATTRIBUTE;
4998 #else
4999 typedef struct ICreateTypeLib2Vtbl ICreateTypeLib2Vtbl;
5000 struct ICreateTypeLib2 {
5001     const ICreateTypeLib2Vtbl* lpVtbl;
5002 };
5003 struct ICreateTypeLib2Vtbl {
5004     ICOM_MSVTABLE_COMPAT_FIELDS
5005
5006     /*** IUnknown methods ***/
5007     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
5008         ICreateTypeLib2* This,
5009         REFIID riid,
5010         void** ppvObject);
5011
5012     ULONG (STDMETHODCALLTYPE *AddRef)(
5013         ICreateTypeLib2* This);
5014
5015     ULONG (STDMETHODCALLTYPE *Release)(
5016         ICreateTypeLib2* This);
5017
5018     /*** ICreateTypeLib methods ***/
5019     HRESULT (STDMETHODCALLTYPE *CreateTypeInfo)(
5020         ICreateTypeLib2* This,
5021         LPOLESTR szName,
5022         TYPEKIND tkind,
5023         ICreateTypeInfo** ppCTInfo);
5024
5025     HRESULT (STDMETHODCALLTYPE *SetName)(
5026         ICreateTypeLib2* This,
5027         LPOLESTR szName);
5028
5029     HRESULT (STDMETHODCALLTYPE *SetVersion)(
5030         ICreateTypeLib2* This,
5031         WORD wMajorVerNum,
5032         WORD wMinorVerNum);
5033
5034     HRESULT (STDMETHODCALLTYPE *SetGuid)(
5035         ICreateTypeLib2* This,
5036         REFGUID guid);
5037
5038     HRESULT (STDMETHODCALLTYPE *SetDocString)(
5039         ICreateTypeLib2* This,
5040         LPOLESTR szDoc);
5041
5042     HRESULT (STDMETHODCALLTYPE *SetHelpFileName)(
5043         ICreateTypeLib2* This,
5044         LPOLESTR szHelpFileName);
5045
5046     HRESULT (STDMETHODCALLTYPE *SetHelpContext)(
5047         ICreateTypeLib2* This,
5048         DWORD dwHelpContext);
5049
5050     HRESULT (STDMETHODCALLTYPE *SetLcid)(
5051         ICreateTypeLib2* This,
5052         LCID lcid);
5053
5054     HRESULT (STDMETHODCALLTYPE *SetLibFlags)(
5055         ICreateTypeLib2* This,
5056         UINT uLibFlags);
5057
5058     HRESULT (STDMETHODCALLTYPE *SaveAllChanges)(
5059         ICreateTypeLib2* This);
5060
5061     /*** ICreateTypeLib2 methods ***/
5062     HRESULT (STDMETHODCALLTYPE *DeleteTypeInfo)(
5063         ICreateTypeLib2* This,
5064         LPOLESTR szName);
5065
5066     HRESULT (STDMETHODCALLTYPE *SetCustData)(
5067         ICreateTypeLib2* This,
5068         REFGUID guid,
5069         VARIANT* pVarVal);
5070
5071     HRESULT (STDMETHODCALLTYPE *SetHelpStringContext)(
5072         ICreateTypeLib2* This,
5073         ULONG dwHelpStringContext);
5074
5075     HRESULT (STDMETHODCALLTYPE *SetHelpStringDll)(
5076         ICreateTypeLib2* This,
5077         LPOLESTR szFileName);
5078
5079 };
5080
5081 #define ICreateTypeLib2_IMETHODS \
5082     /*** IUnknown methods ***/ \
5083     HRESULT (STDMETHODCALLTYPE *QueryInterface)(INTERFACE *This, REFIID riid, void** ppvObject); \
5084     ULONG (STDMETHODCALLTYPE *AddRef)(INTERFACE *This); \
5085     ULONG (STDMETHODCALLTYPE *Release)(INTERFACE *This); \
5086     /*** ICreateTypeLib methods ***/ \
5087     HRESULT (STDMETHODCALLTYPE *CreateTypeInfo)(INTERFACE *This, LPOLESTR szName, TYPEKIND tkind, ICreateTypeInfo** ppCTInfo); \
5088     HRESULT (STDMETHODCALLTYPE *SetName)(INTERFACE *This, LPOLESTR szName); \
5089     HRESULT (STDMETHODCALLTYPE *SetVersion)(INTERFACE *This, WORD wMajorVerNum, WORD wMinorVerNum); \
5090     HRESULT (STDMETHODCALLTYPE *SetGuid)(INTERFACE *This, REFGUID guid); \
5091     HRESULT (STDMETHODCALLTYPE *SetDocString)(INTERFACE *This, LPOLESTR szDoc); \
5092     HRESULT (STDMETHODCALLTYPE *SetHelpFileName)(INTERFACE *This, LPOLESTR szHelpFileName); \
5093     HRESULT (STDMETHODCALLTYPE *SetHelpContext)(INTERFACE *This, DWORD dwHelpContext); \
5094     HRESULT (STDMETHODCALLTYPE *SetLcid)(INTERFACE *This, LCID lcid); \
5095     HRESULT (STDMETHODCALLTYPE *SetLibFlags)(INTERFACE *This, UINT uLibFlags); \
5096     HRESULT (STDMETHODCALLTYPE *SaveAllChanges)(INTERFACE *This); \
5097     /*** ICreateTypeLib2 methods ***/ \
5098     HRESULT (STDMETHODCALLTYPE *DeleteTypeInfo)(INTERFACE *This, LPOLESTR szName); \
5099     HRESULT (STDMETHODCALLTYPE *SetCustData)(INTERFACE *This, REFGUID guid, VARIANT* pVarVal); \
5100     HRESULT (STDMETHODCALLTYPE *SetHelpStringContext)(INTERFACE *This, ULONG dwHelpStringContext); \
5101     HRESULT (STDMETHODCALLTYPE *SetHelpStringDll)(INTERFACE *This, LPOLESTR szFileName);
5102
5103 /*** IUnknown methods ***/
5104 #define ICreateTypeLib2_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
5105 #define ICreateTypeLib2_AddRef(p) (p)->lpVtbl->AddRef(p)
5106 #define ICreateTypeLib2_Release(p) (p)->lpVtbl->Release(p)
5107 /*** ICreateTypeLib methods ***/
5108 #define ICreateTypeLib2_CreateTypeInfo(p,a,b,c) (p)->lpVtbl->CreateTypeInfo(p,a,b,c)
5109 #define ICreateTypeLib2_SetName(p,a) (p)->lpVtbl->SetName(p,a)
5110 #define ICreateTypeLib2_SetVersion(p,a,b) (p)->lpVtbl->SetVersion(p,a,b)
5111 #define ICreateTypeLib2_SetGuid(p,a) (p)->lpVtbl->SetGuid(p,a)
5112 #define ICreateTypeLib2_SetDocString(p,a) (p)->lpVtbl->SetDocString(p,a)
5113 #define ICreateTypeLib2_SetHelpFileName(p,a) (p)->lpVtbl->SetHelpFileName(p,a)
5114 #define ICreateTypeLib2_SetHelpContext(p,a) (p)->lpVtbl->SetHelpContext(p,a)
5115 #define ICreateTypeLib2_SetLcid(p,a) (p)->lpVtbl->SetLcid(p,a)
5116 #define ICreateTypeLib2_SetLibFlags(p,a) (p)->lpVtbl->SetLibFlags(p,a)
5117 #define ICreateTypeLib2_SaveAllChanges(p) (p)->lpVtbl->SaveAllChanges(p)
5118 /*** ICreateTypeLib2 methods ***/
5119 #define ICreateTypeLib2_DeleteTypeInfo(p,a) (p)->lpVtbl->DeleteTypeInfo(p,a)
5120 #define ICreateTypeLib2_SetCustData(p,a,b) (p)->lpVtbl->SetCustData(p,a,b)
5121 #define ICreateTypeLib2_SetHelpStringContext(p,a) (p)->lpVtbl->SetHelpStringContext(p,a)
5122 #define ICreateTypeLib2_SetHelpStringDll(p,a) (p)->lpVtbl->SetHelpStringDll(p,a)
5123
5124 #endif
5125
5126 HRESULT CALLBACK ICreateTypeLib2_DeleteTypeInfo_Proxy(
5127     ICreateTypeLib2* This,
5128     LPOLESTR szName);
5129 void __RPC_STUB ICreateTypeLib2_DeleteTypeInfo_Stub(
5130     struct IRpcStubBuffer* This,
5131     struct IRpcChannelBuffer* pRpcChannelBuffer,
5132     PRPC_MESSAGE pRpcMessage,
5133     DWORD* pdwStubPhase);
5134 HRESULT CALLBACK ICreateTypeLib2_SetCustData_Proxy(
5135     ICreateTypeLib2* This,
5136     REFGUID guid,
5137     VARIANT* pVarVal);
5138 void __RPC_STUB ICreateTypeLib2_SetCustData_Stub(
5139     struct IRpcStubBuffer* This,
5140     struct IRpcChannelBuffer* pRpcChannelBuffer,
5141     PRPC_MESSAGE pRpcMessage,
5142     DWORD* pdwStubPhase);
5143 HRESULT CALLBACK ICreateTypeLib2_SetHelpStringContext_Proxy(
5144     ICreateTypeLib2* This,
5145     ULONG dwHelpStringContext);
5146 void __RPC_STUB ICreateTypeLib2_SetHelpStringContext_Stub(
5147     struct IRpcStubBuffer* This,
5148     struct IRpcChannelBuffer* pRpcChannelBuffer,
5149     PRPC_MESSAGE pRpcMessage,
5150     DWORD* pdwStubPhase);
5151 HRESULT CALLBACK ICreateTypeLib2_SetHelpStringDll_Proxy(
5152     ICreateTypeLib2* This,
5153     LPOLESTR szFileName);
5154 void __RPC_STUB ICreateTypeLib2_SetHelpStringDll_Stub(
5155     struct IRpcStubBuffer* This,
5156     struct IRpcChannelBuffer* pRpcChannelBuffer,
5157     PRPC_MESSAGE pRpcMessage,
5158     DWORD* pdwStubPhase);
5159
5160 #ifdef __cplusplus
5161 }
5162 #endif
5163 #endif /* __WIDL_OAIDL_H */