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