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