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