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