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