Fixed gcc varargs macro syntax (reported by Gabriele Giorgetti).
[wine.git] / include / oaidl.idl
blob440e662ad3fd90acf808465580042c681028029d
1 /*
2 * Copyright 2002 Ove Kaaven
4 * This library is free software; you can redistribute it and/or
5 * modify it under the terms of the GNU Lesser General Public
6 * License as published by the Free Software Foundation; either
7 * version 2.1 of the License, or (at your option) any later version.
9 * This library is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 * Lesser General Public License for more details.
14 * You should have received a copy of the GNU Lesser General Public
15 * License along with this library; if not, write to the Free Software
16 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
19 import "objidl.idl";
21 interface IDispatch;
22 interface ITypeInfo;
23 interface ITypeLib;
24 interface IRecordInfo;
27 version(1.0),
28 pointer_default(unique)
30 interface IOleAutomationTypes
33 typedef CY CURRENCY;
35 /* Safe Array */
37 typedef struct tagSAFEARRAYBOUND {
38 ULONG cElements;
39 LONG lLbound;
40 } SAFEARRAYBOUND, *LPSAFEARRAYBOUND;
42 typedef [unique] struct _wireVARIANT *wireVARIANT;
43 typedef [unique] struct _wireBRECORD *wireBRECORD;
45 typedef struct _wireSAFEARR_BSTR {
46 ULONG Size;
47 [size_is(Size), ref] wireBSTR *aBstr;
48 } SAFEARR_BSTR;
50 typedef struct _wireSAFEARR_UNKNOWN {
51 ULONG Size;
52 [size_is(Size), ref] IUnknown **apUnknown;
53 } SAFEARR_UNKNOWN;
55 typedef struct _wireSAFEARR_DISPATCH {
56 ULONG Size;
57 [size_is(Size), ref] IDispatch **apDispatch;
58 } SAFEARR_DISPATCH;
60 typedef struct _wireSAFEARR_VARIANT {
61 ULONG Size;
62 [size_is(Size), ref] wireVARIANT *aVariant;
63 } SAFEARR_VARIANT;
65 typedef struct _wireSAFEARR_BRECORD {
66 ULONG Size;
67 [size_is(Size), ref] wireBRECORD *aRecord;
68 } SAFEARR_BRECORD;
70 typedef struct _wireSAFEARR_HAVEIID {
71 ULONG Size;
72 [size_is(Size), ref] IUnknown **apUnknown;
73 IID iid;
74 } SAFEARR_HAVEIID;
76 typedef [v1_enum] enum tagSF_TYPE {
77 SF_ERROR = VT_ERROR,
78 SF_I1 = VT_I1,
79 SF_I2 = VT_I2,
80 SF_I4 = VT_I4,
81 SF_I8 = VT_I8,
82 SF_BSTR = VT_BSTR,
83 SF_UNKNOWN = VT_UNKNOWN,
84 SF_DISPATCH = VT_DISPATCH,
85 SF_VARIANT = VT_VARIANT,
86 SF_RECORD = VT_RECORD,
87 SF_HAVEIID = VT_UNKNOWN|VT_RESERVED,
88 } SF_TYPE;
90 typedef union _wireSAFEARRAY_UNION switch(ULONG sfType) u {
91 case SF_BSTR: SAFEARR_BSTR BstrStr;
92 case SF_UNKNOWN: SAFEARR_UNKNOWN UnknownStr;
93 case SF_DISPATCH: SAFEARR_DISPATCH DispatchStr;
94 case SF_VARIANT: SAFEARR_VARIANT VariantStr;
95 case SF_RECORD: SAFEARR_BRECORD RecordStr;
96 case SF_HAVEIID: SAFEARR_HAVEIID HaveIidStr;
97 case SF_I1: BYTE_SIZEDARR ByteStr;
98 case SF_I2: WORD_SIZEDARR WordStr;
99 case SF_I4: DWORD_SIZEDARR LongStr;
100 case SF_I8: HYPER_SIZEDARR HyperStr;
101 } SAFEARRAYUNION;
103 typedef [unique] struct _wireSAFEARRAY {
104 USHORT cDims;
105 USHORT fFeatures;
106 ULONG cbElements;
107 ULONG cLocks;
108 SAFEARRAYUNION uArrayStructs;
109 [size_is(cDims)] SAFEARRAYBOUND rgsabound[];
110 } *wireSAFEARRAY;
112 typedef [unique] wireSAFEARRAY *wirePSAFEARRAY;
114 typedef struct tagSAFEARRAY {
115 USHORT cDims;
116 USHORT fFeatures;
117 ULONG cbElements;
118 ULONG cLocks;
119 PVOID pvData;
120 SAFEARRAYBOUND rgsabound[];
121 } SAFEARRAY;
123 typedef [wire_marshal(wirePSAFEARRAY)] SAFEARRAY *LPSAFEARRAY;
125 const USHORT FADF_AUTO = 0x0001;
126 const USHORT FADF_STATIC = 0x0002;
127 const USHORT FADF_EMBEDDED = 0x0004;
128 const USHORT FADF_FIXEDSIZE = 0x0010;
129 const USHORT FADF_RECORD = 0x0020;
130 const USHORT FADF_HAVEIID = 0x0040;
131 const USHORT FADF_HAVEVARTYPE = 0x0080;
132 const USHORT FADF_BSTR = 0x0100;
133 const USHORT FADF_UNKNOWN = 0x0200;
134 const USHORT FADF_DISPATCH = 0x0400;
135 const USHORT FADF_VARIANT = 0x0800;
136 const USHORT FADF_RESERVED = 0xF008;
137 /* Undocumented flags */
138 const USHORT FADF_CREATEVECTOR = 0x2000; /* set when the safe array is created using SafeArrayCreateVector */
140 /* Variant */
142 cpp_quote("#if (__STDC__ && !defined(_FORCENAMELESSUNION)) || defined(NONAMELESSUNION)")
143 cpp_quote("#define __VARIANT_NAME_1 n1")
144 cpp_quote("#define __VARIANT_NAME_2 n2")
145 cpp_quote("#define __VARIANT_NAME_3 n3")
146 cpp_quote("#define __VARIANT_NAME_4 brecVal")
147 cpp_quote("#else")
148 cpp_quote("#define __tagVARIANT")
149 cpp_quote("#define __VARIANT_NAME_1")
150 cpp_quote("#define __VARIANT_NAME_2")
151 cpp_quote("#define __VARIANT_NAME_3")
152 cpp_quote("#define __tagBRECORD")
153 cpp_quote("#define __VARIANT_NAME_4")
154 cpp_quote("#endif")
156 typedef [wire_marshal(wireVARIANT)] struct tagVARIANT VARIANT;
158 struct tagVARIANT {
159 union {
160 struct __tagVARIANT {
161 VARTYPE vt;
162 WORD wReserved1;
163 WORD wReserved2;
164 WORD wReserved3;
165 union {
166 CHAR cVal;
167 USHORT uiVal;
168 ULONG ulVal;
169 INT intVal;
170 UINT uintVal;
171 BYTE bVal;
172 SHORT iVal;
173 LONG lVal;
174 FLOAT fltVal;
175 DOUBLE dblVal;
176 VARIANT_BOOL boolVal;
177 #if 0 /* illegal in C++ */
178 _VARIANT_BOOL bool;
179 #endif
180 SCODE scode;
181 DATE date;
182 BSTR bstrVal;
183 CY cyVal;
184 IUnknown *punkVal;
185 IDispatch *pdispVal;
186 SAFEARRAY *parray;
187 CHAR *pcVal;
188 USHORT *puiVal;
189 ULONG *pulVal;
190 INT *pintVal;
191 UINT *puintVal;
192 BYTE *pbVal;
193 SHORT *piVal;
194 LONG *plVal;
195 FLOAT *pfltVal;
196 DOUBLE *pdblVal;
197 VARIANT_BOOL *pboolVal;
198 #if 0
199 _VARIANT_BOOL *pbool;
200 #endif
201 SCODE *pscode;
202 DATE *pdate;
203 BSTR *pbstrVal;
204 VARIANT *pvarVal;
205 PVOID byref;
206 CY *pcyVal;
207 DECIMAL *pdecVal;
208 IUnknown **ppunkVal;
209 IDispatch **ppdispVal;
210 SAFEARRAY **pparray;
211 struct __tagBRECORD {
212 PVOID pvRecord;
213 IRecordInfo *pRecInfo;
214 } __VARIANT_NAME_4;
215 } __VARIANT_NAME_3;
216 } __VARIANT_NAME_2;
218 DECIMAL decVal;
219 } __VARIANT_NAME_1;
222 typedef VARIANT *LPVARIANT;
223 typedef VARIANT VARIANTARG;
224 typedef VARIANTARG *LPVARIANTARG;
226 struct _wireBRECORD {
227 ULONG fFlags;
228 ULONG clSize;
229 IRecordInfo *pRecInfo;
230 [size_is(clSize)] byte *pRecord;
233 struct _wireVARIANT {
234 DWORD clSize;
235 DWORD rpcReserved;
236 USHORT vt;
237 USHORT wReserved1;
238 USHORT wReserved2;
239 USHORT wReserved3;
240 [switch_is(vt)] union {
241 [case(VT_EMPTY, VT_NULL)] ;
242 [case(VT_I1)] CHAR cVal;
243 [case(VT_UI2)] USHORT uiVal;
244 [case(VT_UI4)] ULONG ulVal;
245 [case(VT_INT)] INT intVal;
246 [case(VT_UINT)] UINT uintVal;
247 [case(VT_UI1)] BYTE bVal;
248 [case(VT_I2)] SHORT iVal;
249 [case(VT_I4)] LONG lVal;
250 [case(VT_R4)] FLOAT fltVal;
251 [case(VT_R8)] DOUBLE dblVal;
252 [case(VT_BOOL)] VARIANT_BOOL boolVal;
253 [case(VT_ERROR)] SCODE scode;
254 [case(VT_DATE)] DATE date;
255 [case(VT_BSTR)] wireBSTR bstrVal;
256 [case(VT_CY)] CY cyVal;
257 [case(VT_DECIMAL)] DECIMAL decVal;
258 [case(VT_UNKNOWN)] IUnknown *punkVal;
259 [case(VT_DISPATCH)] IDispatch *pdispVal;
260 [case(VT_ARRAY)] wireSAFEARRAY parray;
261 [case(VT_I1|VT_BYREF)] CHAR *pcVal;
262 [case(VT_UI2|VT_BYREF)] USHORT *puiVal;
263 [case(VT_UI4|VT_BYREF)] ULONG *pulVal;
264 [case(VT_INT|VT_BYREF)] INT *pintVal;
265 [case(VT_UINT|VT_BYREF)] UINT *puintVal;
266 [case(VT_UI1|VT_BYREF)] BYTE *pbVal;
267 [case(VT_I2|VT_BYREF)] SHORT *piVal;
268 [case(VT_I4|VT_BYREF)] LONG *plVal;
269 [case(VT_R4|VT_BYREF)] FLOAT *pfltVal;
270 [case(VT_R8|VT_BYREF)] DOUBLE *pdblVal;
271 [case(VT_BOOL|VT_BYREF)] VARIANT_BOOL *pboolVal;
272 [case(VT_ERROR|VT_BYREF)] SCODE *pscode;
273 [case(VT_DATE|VT_BYREF)] DATE *pdate;
274 [case(VT_BSTR|VT_BYREF)] wireBSTR *pbstrVal;
275 [case(VT_VARIANT|VT_BYREF)] wireVARIANT *pvarVal;
276 [case(VT_CY|VT_BYREF)] CY *pcyVal;
277 [case(VT_DECIMAL|VT_BYREF)] DECIMAL *pdecVal;
278 [case(VT_UNKNOWN|VT_BYREF)] IUnknown **ppunkVal;
279 [case(VT_DISPATCH|VT_BYREF)] IDispatch **ppdispVal;
280 [case(VT_ARRAY|VT_BYREF)] wireSAFEARRAY *pparray;
281 [case(VT_RECORD, VT_RECORD|VT_BYREF)] wireBRECORD brecVal;
285 /* Dispatch */
287 typedef LONG DISPID;
288 typedef DWORD HREFTYPE;
289 typedef DISPID MEMBERID;
291 typedef [v1_enum] enum tagTYPEKIND {
292 TKIND_ENUM = 0,
293 TKIND_RECORD,
294 TKIND_MODULE,
295 TKIND_INTERFACE,
296 TKIND_DISPATCH,
297 TKIND_COCLASS,
298 TKIND_ALIAS,
299 TKIND_UNION,
300 TKIND_MAX
301 } TYPEKIND;
303 typedef struct tagTYPEDESC {
304 [switch_is(vt)] union {
305 [case(VT_PTR, VT_SAFEARRAY)] struct tagTYPEDESC *lptdesc;
306 [case(VT_CARRAY)] struct tagARRAYDESC *lpadesc;
307 [case(VT_USERDEFINED)] HREFTYPE hreftype;
308 [default] ;
310 VARTYPE vt;
311 } TYPEDESC;
313 typedef struct tagARRAYDESC {
314 TYPEDESC tdescElem;
315 USHORT cDims;
316 [size_is(cDims)] SAFEARRAYBOUND rgbounds[];
317 } ARRAYDESC;
319 typedef struct tagPARAMDESCEX {
320 ULONG cBytes;
321 VARIANTARG varDefaultValue;
322 } PARAMDESCEX, *LPPARAMDESCEX;
324 typedef struct tagPARAMDESC {
325 LPPARAMDESCEX pparamdescex;
326 USHORT wParamFlags;
327 } PARAMDESC, *LPPARAMDESC;
329 const USHORT PARAMFLAG_NONE = 0x00;
330 const USHORT PARAMFLAG_FIN = 0x01;
331 const USHORT PARAMFLAG_FOUT = 0x02;
332 const USHORT PARAMFLAG_FLCID = 0x04;
333 const USHORT PARAMFLAG_FRETVAL = 0x08;
334 const USHORT PARAMFLAG_FOPT = 0x10;
335 const USHORT PARAMFLAG_FHASDEFAULT = 0x20;
336 const USHORT PARAMFLAG_FHASCUSTDATA = 0x40;
338 typedef struct tagIDLDESC {
339 ULONG dwReserved;
340 USHORT wIDLFlags;
341 } IDLDESC, *LPIDLDESC;
343 const USHORT IDLFLAG_NONE = PARAMFLAG_NONE;
344 const USHORT IDLFLAG_FIN = PARAMFLAG_FIN;
345 const USHORT IDLFLAG_FOUT = PARAMFLAG_FOUT;
346 const USHORT IDLFLAG_FLCID = PARAMFLAG_FLCID;
347 const USHORT IDLFLAG_FRETVAL = PARAMFLAG_FRETVAL;
349 cpp_quote("#if 0") /* for IDL only */
350 typedef struct tagELEMDESC {
351 TYPEDESC tdesc;
352 PARAMDESC paramdesc;
353 } ELEMDESC;
354 cpp_quote("#else") /* C/C++ defs */
355 cpp_quote("typedef struct tagELEMDESC {")
356 cpp_quote(" TYPEDESC tdesc;")
357 cpp_quote(" union {")
358 cpp_quote(" IDLDESC idldesc;")
359 cpp_quote(" PARAMDESC paramdesc;")
360 cpp_quote(" } DUMMYUNIONNAME;")
361 cpp_quote("} ELEMDESC, *LPELEMDESC;")
362 cpp_quote("#endif")
364 typedef struct tagTYPEATTR {
365 GUID guid;
366 LCID lcid;
367 DWORD dwReserved;
368 MEMBERID memidConstructor;
369 MEMBERID memidDestructor;
370 LPOLESTR lpstrSchema;
371 ULONG cbSizeInstance;
372 TYPEKIND typekind;
373 WORD cFuncs;
374 WORD cVars;
375 WORD cImplTypes;
376 WORD cbSizeVft;
377 WORD cbAlignment;
378 WORD wTypeFlags;
379 WORD wMajorVerNum;
380 WORD wMinorVerNum;
381 TYPEDESC tdescAlias;
382 IDLDESC idldescType;
383 } TYPEATTR, *LPTYPEATTR;
385 typedef struct tagDISPPARAMS {
386 [size_is(cArgs)] VARIANTARG *rgvarg;
387 [size_is(cNamedArgs)] DISPID *rgdispidNamedArgs;
388 UINT cArgs;
389 UINT cNamedArgs;
390 } DISPPARAMS;
392 cpp_quote("#if 0") /* for IDL only */
393 typedef struct tagEXCEPINFO {
394 WORD wCode;
395 WORD wReserved;
396 BSTR bstrSource;
397 BSTR bstrDescription;
398 BSTR bstrHelpFile;
399 DWORD dwHelpContext;
400 ULONG pvReserved;
401 ULONG pfnDeferredFillIn;
402 SCODE scode;
403 } EXCEPINFO;
404 cpp_quote("#else")
405 cpp_quote("typedef struct tagEXCEPINFO {")
406 cpp_quote(" WORD wCode;")
407 cpp_quote(" WORD wReserved;")
408 cpp_quote(" BSTR bstrSource;")
409 cpp_quote(" BSTR bstrDescription;")
410 cpp_quote(" BSTR bstrHelpFile;")
411 cpp_quote(" DWORD dwHelpContext;")
412 cpp_quote(" PVOID pvReserved;")
413 cpp_quote(" HRESULT (__stdcall *pfnDeferredFillIn)(struct tagEXCEPINFO *);")
414 cpp_quote(" SCODE scode;")
415 cpp_quote("} EXCEPINFO, *LPEXCEPINFO;")
416 cpp_quote("#endif")
418 typedef [v1_enum] enum tagCALLCONV {
419 CC_FASTCALL = 0,
420 CC_CDECL = 1,
421 CC_MSCPASCAL,
422 CC_PASCAL = CC_MSCPASCAL,
423 CC_MACPASCAL,
424 CC_STDCALL,
425 CC_FPFASTCALL,
426 CC_SYSCALL,
427 CC_MPWCDECL,
428 CC_MPWPASCAL,
429 CC_MAX
430 } CALLCONV;
432 typedef [v1_enum] enum tagFUNCKIND {
433 FUNC_VIRTUAL,
434 FUNC_PUREVIRTUAL,
435 FUNC_NONVIRTUAL,
436 FUNC_STATIC,
437 FUNC_DISPATCH
438 } FUNCKIND;
440 typedef [v1_enum] enum tagINVOKEKIND {
441 INVOKE_FUNC = 1,
442 INVOKE_PROPERTYGET = 2,
443 INVOKE_PROPERTYPUT = 4,
444 INVOKE_PROPERTYPUTREF = 8
445 } INVOKEKIND;
447 typedef struct tagFUNCDESC {
448 MEMBERID memid;
449 [size_is(cScodes)] SCODE *lprgscode;
450 [size_is(cParams)] ELEMDESC *lprgelemdescParam;
451 FUNCKIND funckind;
452 INVOKEKIND invkind;
453 CALLCONV callconv;
454 SHORT cParams;
455 SHORT cParamsOpt;
456 SHORT oVft;
457 SHORT cScodes;
458 ELEMDESC elemdescFunc;
459 WORD wFuncFlags;
460 } FUNCDESC, *LPFUNCDESC;
462 typedef [v1_enum] enum tagVARKIND {
463 VAR_PERINSTANCE,
464 VAR_STATIC,
465 VAR_CONST,
466 VAR_DISPATCH
467 } VARKIND;
469 const USHORT IMPLTYPEFLAG_FDEFAULT = 0x1;
470 const USHORT IMPLTYPEFLAG_FSOURCE = 0x2;
471 const USHORT IMPLTYPEFLAG_FRESTRICTED = 0x4;
472 const USHORT IMPLTYPEFLAG_FDEFAULTVTABLE = 0x8;
474 typedef struct tagVARDESC {
475 MEMBERID memid;
476 LPOLESTR lpstrSchema;
477 [switch_is(varkind)] union {
478 [case(VAR_PERINSTANCE, VAR_DISPATCH, VAR_STATIC)] ULONG oInst;
479 [case(VAR_CONST)] VARIANT *lpvarValue;
481 ELEMDESC elemdescVar;
482 WORD wVarFlags;
483 VARKIND varkind;
484 } VARDESC, *LPVARDESC;
486 typedef enum tagTYPEFLAGS {
487 TYPEFLAG_FAPPOBJECT = 0x0001,
488 TYPEFLAG_FCANCREATE = 0x0002,
489 TYPEFLAG_FLICENSED = 0x0004,
490 TYPEFLAG_FPREDECLID = 0x0008,
491 TYPEFLAG_FHIDDEN = 0x0010,
492 TYPEFLAG_FCONTROL = 0x0020,
493 TYPEFLAG_FDUAL = 0x0040,
494 TYPEFLAG_FNONEXTENSIBLE = 0x0080,
495 TYPEFLAG_FOLEAUTOMATION = 0x0100,
496 TYPEFLAG_FRESTRICTED = 0x0200,
497 TYPEFLAG_FAGGREGATABLE = 0x0400,
498 TYPEFLAG_FREPLACEABLE = 0x0800,
499 TYPEFLAG_FDISPATCHABLE = 0x1000,
500 TYPEFLAG_FREVERSEBIND = 0x2000,
501 TYPEFLAG_FPROXY = 0x4000
502 } TYPEFLAGS;
504 typedef enum tagFUNCFLAGS {
505 FUNCFLAG_FRESTRICTED = 0x0001,
506 FUNCFLAG_FSOURCE = 0x0002,
507 FUNCFLAG_FBINDABLE = 0x0004,
508 FUNCFLAG_FREQUESTEDIT = 0x0008,
509 FUNCFLAG_FDISPLAYBIND = 0x0010,
510 FUNCFLAG_FDEFAULTBIND = 0x0020,
511 FUNCFLAG_FHIDDEN = 0x0040,
512 FUNCFLAG_FUSESGETLASTERROR = 0x0080,
513 FUNCFLAG_FDEFAULTCOLLELEM = 0x0100,
514 FUNCFLAG_FUIDEFAULT = 0x0200,
515 FUNCFLAG_FNONBROWSABLE = 0x0400,
516 FUNCFLAG_FREPLACEABLE = 0x0800,
517 FUNCFLAG_FIMMEDIATEBIND = 0x1000
518 } FUNCFLAGS;
520 typedef enum tagVARFLAGS {
521 VARFLAG_FREADONLY = 0x0001,
522 VARFLAG_FSOURCE = 0x0002,
523 VARFLAG_FBINDABLE = 0x0004,
524 VARFLAG_FREQUESTEDIT = 0x0008,
525 VARFLAG_FDISPLAYBIND = 0x0010,
526 VARFLAG_FDEFAULTBIND = 0x0020,
527 VARFLAG_FHIDDEN = 0x0040,
528 VARFLAG_FRESTRICTED = 0x0080,
529 VARFLAG_FDEFAULTCOLLELEM = 0x0100,
530 VARFLAG_FUIDEFAULT = 0x0200,
531 VARFLAG_FNONBROWSABLE = 0x0400,
532 VARFLAG_FREPLACEABLE = 0x0800,
533 VARFLAG_FIMMEDIATEBIND = 0x1000
534 } VARFLAGS;
536 typedef [wire_marshal(DWORD)] struct tagCLEANLOCALSTORAGE {
537 IUnknown *pInterface;
538 PVOID pStorage;
539 DWORD flags;
540 } CLEANLOCALSTORAGE;
542 typedef struct tagCUSTDATAITEM {
543 GUID guid;
544 VARIANTARG varValue;
545 } CUSTDATAITEM, *LPCUSTDATAITEM;
547 typedef struct tagCUSTDATA {
548 DWORD cCustData;
549 [size_is(cCustData)] LPCUSTDATAITEM prgCustData;
550 } CUSTDATA, *LPCUSTDATA;
552 } /* interface IOleAutomationTypes */
554 /******************** INTERFACES ********************/
557 object,
558 uuid(00020400-0000-0000-C000-000000000046),
559 pointer_default(unique)
561 interface IDispatch : IUnknown
563 typedef [unique] IDispatch *LPDISPATCH;
565 const DISPID DISPID_UNKNOWN = -1;
566 const DISPID DISPID_VALUE = 0;
567 const DISPID DISPID_PROPERTYPUT = -3;
568 const DISPID DISPID_NEWENUM = -4;
569 const DISPID DISPID_EVALUATE = -5;
570 const DISPID DISPID_CONSTRUCTOR = -6;
571 const DISPID DISPID_DESTRUCTOR = -7;
572 const DISPID DISPID_COLLECT = -8;
574 HRESULT GetTypeInfoCount(
575 [out] UINT *pctinfo);
577 HRESULT GetTypeInfo(
578 [in] UINT iTInfo,
579 [in] LCID lcid,
580 [out] ITypeInfo **ppTInfo);
582 HRESULT GetIDsOfNames(
583 [in] REFIID riid,
584 [in, size_is(cNames)] LPOLESTR *rgszNames,
585 [in] UINT cNames,
586 [in] LCID lcid,
587 [out, size_is(cNames)] DISPID *rgDispId);
589 [local]
590 HRESULT Invoke(
591 [in] DISPID dispIdMember,
592 [in] REFIID riid,
593 [in] LCID lcid,
594 [in] WORD wFlags,
595 [in, out] DISPPARAMS *pDispParams,
596 [out] VARIANT *pVarResult,
597 [out] EXCEPINFO *pExcepInfo,
598 [out] UINT *puArgErr);
600 [call_as(Invoke)]
601 HRESULT RemoteInvoke(
602 [in] DISPID dispIdMember,
603 [in] REFIID riid,
604 [in] LCID lcid,
605 [in] DWORD dwFlags,
606 [in] DISPPARAMS *pDispParams,
607 [out] VARIANT *pVarResult,
608 [out] EXCEPINFO *pExcepInfo,
609 [out] UINT *pArgErr,
610 [in] UINT cVarRef,
611 [in, size_is(cVarRef)] UINT *rgVarRefIdx,
612 [in, out, size_is(cVarRef)] VARIANTARG *rgVarRef);
616 object,
617 uuid(00020404-0000-0000-C000-000000000046),
618 pointer_default(unique)
620 interface IEnumVARIANT : IUnknown
622 typedef [unique] IEnumVARIANT *LPENUMVARIANT;
624 [local]
625 HRESULT Next(
626 [in] ULONG celt,
627 [out] VARIANT *rgVar,
628 [out] ULONG *pCeltFetched);
630 [call_as(Next)]
631 HRESULT RemoteNext(
632 [in] ULONG celt,
633 [out, size_is(celt), length_is(*pCeltFetched)]
634 VARIANT *rgVar,
635 [out] ULONG *pCeltFetched);
637 HRESULT Skip(
638 [in] ULONG celt);
640 HRESULT Reset();
642 HRESULT Clone(
643 [out] IEnumVARIANT **ppEnum);
647 object,
648 uuid(00020403-0000-0000-C000-000000000046),
649 pointer_default(unique)
651 interface ITypeComp : IUnknown
653 typedef [unique] ITypeComp *LPTYPECOMP;
655 typedef [v1_enum] enum tagDESCKIND {
656 DESCKIND_NONE = 0,
657 DESCKIND_FUNCDESC,
658 DESCKIND_VARDESC,
659 DESCKIND_TYPECOMP,
660 DESCKIND_IMPLICITAPPOBJ,
661 DESCKIND_MAX
662 } DESCKIND;
664 typedef union tagBINDPTR {
665 FUNCDESC *lpfuncdesc;
666 VARDESC *lpvardesc;
667 ITypeComp *lptcomp;
668 } BINDPTR, *LPBINDPTR;
670 [local]
671 HRESULT Bind(
672 [in] LPOLESTR szName,
673 [in] ULONG lHashVal,
674 [in] WORD wFlags,
675 [out] ITypeInfo **ppTInfo,
676 [out] DESCKIND *pDescKind,
677 [out] BINDPTR *pBindPtr);
679 [call_as(Bind)]
680 HRESULT RemoteBind(
681 [in] LPOLESTR szName,
682 [in] ULONG lHashVal,
683 [in] WORD wFlags,
684 [out] ITypeInfo **ppTInfo,
685 [out] DESCKIND *pDescKind,
686 [out] LPFUNCDESC *ppFuncDesc,
687 [out] LPVARDESC *ppVarDesc,
688 [out] ITypeComp **ppTypeComp,
689 [out] CLEANLOCALSTORAGE *pDummy);
691 [local]
692 HRESULT BindType(
693 [in] LPOLESTR szName,
694 [in] ULONG lHashVal,
695 [out] ITypeInfo **ppTInfo,
696 [out] ITypeComp **ppTComp);
698 [call_as(BindType)]
699 HRESULT RemoteBindType(
700 [in] LPOLESTR szName,
701 [in] ULONG lHashVal,
702 [out] ITypeInfo **ppTInfo);
706 object,
707 uuid(00020401-0000-0000-C000-000000000046),
708 pointer_default(unique)
710 interface ITypeInfo : IUnknown
712 typedef [unique] ITypeInfo *LPTYPEINFO;
714 [local]
715 HRESULT GetTypeAttr(
716 [out] TYPEATTR **ppTypeAttr);
718 [call_as(GetTypeAttr)]
719 HRESULT RemoteGetTypeAttr(
720 [out] LPTYPEATTR *ppTypeAttr,
721 [out] CLEANLOCALSTORAGE *pDummy);
723 HRESULT GetTypeComp(
724 [out] ITypeComp **ppTComp);
726 [local]
727 HRESULT GetFuncDesc(
728 [in] UINT index,
729 [out] FUNCDESC **ppFuncDesc);
731 [call_as(GetFuncDesc)]
732 HRESULT RemoteGetFuncDesc(
733 [in] UINT index,
734 [out] LPFUNCDESC *ppFuncDesc,
735 [out] CLEANLOCALSTORAGE *pDummy);
737 [local]
738 HRESULT GetVarDesc(
739 [in] UINT index,
740 [out] VARDESC **ppVarDesc);
742 [call_as(GetVarDesc)]
743 HRESULT RemoteGetVarDesc(
744 [in] UINT index,
745 [out] LPVARDESC *ppVarDesc,
746 [out] CLEANLOCALSTORAGE *pDummy);
748 [local]
749 HRESULT GetNames(
750 [in] MEMBERID memid,
751 [out, size_is(cMaxNames), length_is(*pcNames)] BSTR *rgBstrNames,
752 [in] UINT cMaxNames,
753 [out] UINT *pcNames);
755 [call_as(GetNames)]
756 HRESULT RemoteGetNames(
757 [in] MEMBERID memid,
758 [out, size_is(cMaxNames), length_is(*pcNames)] BSTR *rgBstrNames,
759 [in] UINT cMaxNames,
760 [out] UINT *pcNames);
762 HRESULT GetRefTypeOfImplType(
763 [in] UINT index,
764 [out] HREFTYPE *pRefType);
766 HRESULT GetImplTypeFlags(
767 [in] UINT index,
768 [out] INT *pImplTypeFlags);
770 [local]
771 HRESULT GetIDsOfNames(
772 [in, size_is(cNames)] LPOLESTR *rgszNames,
773 [in] UINT cNames,
774 [out, size_is(cNames)] MEMBERID *pMemId);
776 [call_as(GetIDsOfNames)]
777 HRESULT LocalGetIDsOfNames();
779 [local]
780 HRESULT Invoke(
781 [in] PVOID pvInstance,
782 [in] MEMBERID memid,
783 [in] WORD wFlags,
784 [in, out] DISPPARAMS *pDispParams,
785 [out] VARIANT *pVarResult,
786 [out] EXCEPINFO *pExcepInfo,
787 [out] UINT *puArgErr);
789 [call_as(Invoke)]
790 HRESULT LocalInvoke();
792 [local]
793 HRESULT GetDocumentation(
794 [in] MEMBERID memid,
795 [out] BSTR *pBstrName,
796 [out] BSTR *pBstrDocString,
797 [out] DWORD *pdwHelpContext,
798 [out] BSTR *pBstrHelpFile);
800 [call_as(GetDocumentation)]
801 HRESULT RemoteGetDocumentation(
802 [in] MEMBERID memid,
803 [in] DWORD refPtrFlags,
804 [out] BSTR *pBstrName,
805 [out] BSTR *pBstrDocString,
806 [out] DWORD *pdwHelpContext,
807 [out] BSTR *pBstrHelpFile);
809 [local]
810 HRESULT GetDllEntry(
811 [in] MEMBERID memid,
812 [in] INVOKEKIND invKind,
813 [out] BSTR *pBstrDllName,
814 [out] BSTR *pBstrName,
815 [out] WORD *pwOrdinal);
817 [call_as(GetDllEntry)]
818 HRESULT RemoteGetDllEntry(
819 [in] MEMBERID memid,
820 [in] INVOKEKIND invKind,
821 [in] DWORD refPtrFlags,
822 [out] BSTR *pBstrDllName,
823 [out] BSTR *pBstrName,
824 [out] WORD *pwOrdinal);
826 HRESULT GetRefTypeInfo(
827 [in] HREFTYPE hRefType,
828 [out] ITypeInfo **ppTInfo);
830 [local]
831 HRESULT AddressOfMember(
832 [in] MEMBERID memid,
833 [in] INVOKEKIND invKind,
834 [out] PVOID *ppv);
836 [call_as(AddressOfMember)]
837 HRESULT LocalAddressOfMember();
839 [local]
840 HRESULT CreateInstance(
841 [in] IUnknown *pUnkOuter,
842 [in] REFIID riid,
843 [out, iid_is(riid)] PVOID *ppvObj);
845 [call_as(CreateInstance)]
846 HRESULT RemoteCreateInstance(
847 [in] REFIID riid,
848 [out, iid_is(riid)] IUnknown **ppvObj);
850 HRESULT GetMops(
851 [in] MEMBERID memid,
852 [out] BSTR *pBstrMops);
854 [local]
855 HRESULT GetContainingTypeLib(
856 [out] ITypeLib **ppTLib,
857 [out] UINT *pIndex);
859 [call_as(GetContainingTypeLib)]
860 HRESULT RemoteGetContainingTypeLib(
861 [out] ITypeLib **ppTLib,
862 [out] UINT *pIndex);
864 [local]
865 void ReleaseTypeAttr(
866 [in] TYPEATTR *pTypeAttr);
868 [call_as(ReleaseTypeAttr)]
869 HRESULT LocalReleaseTypeAttr();
871 [local]
872 void ReleaseFuncDesc(
873 [in] FUNCDESC *pFuncDesc);
875 [call_as(ReleaseFuncDesc)]
876 HRESULT LocalReleaseFuncDesc();
878 [local]
879 void ReleaseVarDesc(
880 [in] VARDESC *pVarDesc);
882 [call_as(ReleaseVarDesc)]
883 HRESULT LocalReleaseVarDesc();
887 object,
888 uuid(00020412-0000-0000-C000-000000000046),
889 pointer_default(unique)
891 interface ITypeInfo2 : ITypeInfo
893 typedef [unique] ITypeInfo2 *LPTYPEINFO2;
895 HRESULT GetTypeKind(
896 [out] TYPEKIND *pTypeKind);
898 HRESULT GetTypeFlags(
899 [out] ULONG *pTypeFlags);
901 HRESULT GetFuncIndexOfMemId(
902 [in] MEMBERID memid,
903 [in] INVOKEKIND invKind,
904 [out] UINT *pFuncIndex);
906 HRESULT GetVarIndexOfMemId(
907 [in] MEMBERID memid,
908 [out] UINT *pVarIndex);
910 HRESULT GetCustData(
911 [in] REFGUID guid,
912 [out] VARIANT *pVarVal);
914 HRESULT GetFuncCustData(
915 [in] UINT index,
916 [in] REFGUID guid,
917 [out] VARIANT *pVarVal);
919 HRESULT GetParamCustData(
920 [in] UINT indexFunc,
921 [in] UINT indexParam,
922 [in] REFGUID guid,
923 [out] VARIANT *pVarVal);
925 HRESULT GetVarCustData(
926 [in] UINT index,
927 [in] REFGUID guid,
928 [out] VARIANT *pVarVal);
930 HRESULT GetImplTypeCustData(
931 [in] UINT index,
932 [in] REFGUID guid,
933 [out] VARIANT *pVarVal);
935 [local]
936 HRESULT GetDocumentation2(
937 [in] MEMBERID memid,
938 [in] LCID lcid,
939 [out] BSTR *pbstrHelpString,
940 [out] DWORD *pdwHelpStringContext,
941 [out] BSTR *pbstrHelpStringDll);
943 [call_as(GetDocumentation2)]
944 HRESULT RemoteGetDocumentation2(
945 [in] MEMBERID memid,
946 [in] LCID lcid,
947 [in] DWORD refPtrFlags,
948 [out] BSTR *pbstrHelpString,
949 [out] DWORD *pdwHelpStringContext,
950 [out] BSTR *pbstrHelpStringDll);
952 HRESULT GetAllCustData(
953 [out] CUSTDATA *pCustData);
955 HRESULT GetAllFuncCustData(
956 [in] UINT index,
957 [out] CUSTDATA *pCustData);
959 HRESULT GetAllParamCustData(
960 [in] UINT indexFunc,
961 [in] UINT indexParam,
962 [out] CUSTDATA *pCustData);
964 HRESULT GetAllVarCustData(
965 [in] UINT index,
966 [out] CUSTDATA *pCustData);
968 HRESULT GetAllImplTypeCustData(
969 [in] UINT index,
970 [out] CUSTDATA *pCustData);
974 object,
975 uuid(00020402-0000-0000-C000-000000000046),
976 pointer_default(unique)
978 interface ITypeLib : IUnknown
980 typedef [unique] ITypeLib *LPTYPELIB;
982 typedef [v1_enum] enum tagSYSKIND {
983 SYS_WIN16 = 0,
984 SYS_WIN32,
985 SYS_MAC
986 } SYSKIND;
988 typedef [v1_enum] enum tagLIBFLAGS {
989 LIBFLAG_FRESTRICTED = 0x01,
990 LIBFLAG_FCONTROL = 0x02,
991 LIBFLAG_FHIDDEN = 0x04,
992 LIBFLAG_FHASDISKIMAGE = 0x08
993 } LIBFLAGS;
995 typedef struct tagTLIBATTR {
996 GUID guid;
997 LCID lcid;
998 SYSKIND syskind;
999 WORD wMajorVerNum;
1000 WORD wMinorVerNum;
1001 WORD wLibFlags;
1002 } TLIBATTR, *LPTLIBATTR;
1004 [local]
1005 UINT GetTypeInfoCount();
1007 [call_as(GetTypeInfoCount)]
1008 HRESULT RemoteGetTypeInfoCount(
1009 [out] UINT *pcTInfo);
1011 HRESULT GetTypeInfo(
1012 [in] UINT index,
1013 [out] ITypeInfo **ppTInfo);
1015 HRESULT GetTypeInfoType(
1016 [in] UINT index,
1017 [out] TYPEKIND *pTKind);
1019 HRESULT GetTypeInfoOfGuid(
1020 [in] REFGUID guid,
1021 [out] ITypeInfo **ppTinfo);
1023 [local]
1024 HRESULT GetLibAttr(
1025 [out] TLIBATTR **ppTLibAttr);
1027 [call_as(GetLibAttr)]
1028 HRESULT RemoteGetLibAttr(
1029 [out] LPTLIBATTR *ppTLibAttr,
1030 [out] CLEANLOCALSTORAGE *pDummy);
1032 HRESULT GetTypeComp(
1033 [out] ITypeComp **ppTComp);
1035 [local]
1036 HRESULT GetDocumentation(
1037 [in] INT index,
1038 [out] BSTR *pBstrName,
1039 [out] BSTR *pBstrDocString,
1040 [out] DWORD *pdwHelpContext,
1041 [out] BSTR *pBstrHelpFile);
1043 [call_as(GetDocumentation)]
1044 HRESULT RemoteGetDocumentation(
1045 [in] INT index,
1046 [in] DWORD refPtrFlags,
1047 [out] BSTR *pBstrName,
1048 [out] BSTR *pBstrDocString,
1049 [out] DWORD *pdwHelpContext,
1050 [out] BSTR *pBstrHelpFile);
1052 [local]
1053 HRESULT IsName(
1054 [in, out] LPOLESTR szNameBuf,
1055 [in] ULONG lHashVal,
1056 [out] BOOL *pfName);
1058 [call_as(IsName)]
1059 HRESULT RemoteIsName(
1060 [in] LPOLESTR szNameBuf,
1061 [in] ULONG lHashVal,
1062 [out] BOOL *pfName,
1063 [out] BSTR *pBstrLibName);
1065 [local]
1066 HRESULT FindName(
1067 [in, out] LPOLESTR szNameBuf,
1068 [in] ULONG lHashVal,
1069 [out, size_is(*pcFound), length_is(*pcFound)] ITypeInfo **ppTInfo,
1070 [out, size_is(*pcFound), length_is(*pcFound)] MEMBERID *rgMemId,
1071 [in, out] USHORT *pcFound);
1073 [call_as(FindName)]
1074 HRESULT RemoteFindName(
1075 [in] LPOLESTR szNameBuf,
1076 [in] ULONG lHashVal,
1077 [out, size_is(*pcFound), length_is(*pcFound)] ITypeInfo **ppTInfo,
1078 [out, size_is(*pcFound), length_is(*pcFound)] MEMBERID *rgMemId,
1079 [in, out] USHORT *pcFound,
1080 [out] BSTR *pBstrLibName);
1082 [local]
1083 void ReleaseTLibAttr(
1084 [in] TLIBATTR *pTLibAttr);
1086 [call_as(ReleaseTLibAttr)]
1087 HRESULT LocalReleaseTLibAttr();
1091 object,
1092 uuid(00020411-0000-0000-C000-000000000046),
1093 pointer_default(unique)
1095 interface ITypeLib2 : ITypeLib
1097 typedef [unique] ITypeLib2 *LPTYPELIB2;
1099 HRESULT GetCustData(
1100 [in] REFGUID guid,
1101 [out] VARIANT *pVarVal);
1103 [local]
1104 HRESULT GetLibStatistics(
1105 [out] ULONG *pcUniqueNames,
1106 [out] ULONG *pcchUniqueNames);
1108 [call_as(GetLibStatistics)]
1109 HRESULT RemoteGetLibStatistics(
1110 [out] ULONG *pcUniqueNames,
1111 [out] ULONG *pcchUniqueNames);
1113 [local]
1114 HRESULT GetDocumentation2(
1115 [in] INT index,
1116 [in] LCID lcid,
1117 [out] BSTR *pbstrHelpString,
1118 [out] DWORD *pdwHelpStringContext,
1119 [out] BSTR *pbstrHelpStringDll);
1121 [call_as(GetDocumentation2)]
1122 HRESULT RemoteGetDocumentation2(
1123 [in] INT index,
1124 [in] LCID lcid,
1125 [in] DWORD refPtrFlags,
1126 [out] BSTR *pbstrHelpString,
1127 [out] DWORD *pdwHelpStringContext,
1128 [out] BSTR *pbstrHelpStringDll);
1130 HRESULT GetAllCustData(
1131 [out] CUSTDATA *pCustData);
1135 local,
1136 object,
1137 uuid(00020410-0000-0000-C000-000000000046),
1138 pointer_default(unique)
1140 interface ITypeChangeEvents : IUnknown
1142 typedef [unique] ITypeChangeEvents *LPTYPECHANGEEVENTS;
1144 typedef enum tagCHANGEKIND {
1145 CHANGEKIND_ADDMEMBER,
1146 CHANGEKIND_DELETEMEMBER,
1147 CHANGEKIND_SETNAMES,
1148 CHANGEKIND_SETDOCUMENTATION,
1149 CHANGEKIND_GENERAL,
1150 CHANGEKIND_INVALIDATE,
1151 CHANGEKIND_CHANGEFAILED,
1152 CHANGEKIND_MAX
1153 } CHANGEKIND;
1155 HRESULT RequestTypeChange(
1156 [in] CHANGEKIND changeKind,
1157 [in] ITypeInfo *pTInfoBefore,
1158 [in] LPOLESTR pStrName,
1159 [out] INT *pfCancel);
1161 HRESULT AfterTypeChange(
1162 [in] CHANGEKIND changeKind,
1163 [in] ITypeInfo *pTInfoAfter,
1164 [in] LPOLESTR pStrName);
1168 object,
1169 uuid(1CF2B120-547D-101B-8E65-08002B2BD119),
1170 pointer_default(unique)
1172 interface IErrorInfo : IUnknown
1174 typedef [unique] IErrorInfo *LPERRORINFO;
1176 HRESULT GetGUID(
1177 [out] GUID *pGUID);
1179 HRESULT GetSource(
1180 [out] BSTR *pBstrSource);
1182 HRESULT GetDescription(
1183 [out] BSTR *pBstrDescription);
1185 HRESULT GetHelpFile(
1186 [out] BSTR *pBstrHelpFile);
1188 HRESULT GetHelpContext(
1189 [out] DWORD *pdwHelpContext);
1193 object,
1194 uuid(22F03340-547D-101B-8E65-08002B2BD119),
1195 pointer_default(unique)
1197 interface ICreateErrorInfo : IUnknown
1199 typedef [unique] ICreateErrorInfo *LPCREATEERRORINFO;
1201 HRESULT SetGUID(
1202 [in] REFGUID rguid);
1204 HRESULT SetSource(
1205 [in] LPOLESTR szSource);
1207 HRESULT SetDescription(
1208 [in] LPOLESTR szDescription);
1210 HRESULT SetHelpFile(
1211 [in] LPOLESTR szHelpFile);
1213 HRESULT SetHelpContext(
1214 [in] DWORD dwHelpContext);
1218 object,
1219 uuid(DF0B3D60-548F-101B-8E65-08002B2BD119),
1220 pointer_default(unique)
1222 interface ISupportErrorInfo : IUnknown
1224 typedef [unique] ISupportErrorInfo *LPSUPPORTERRORINFO;
1226 HRESULT InterfaceSupportsErrorInfo(
1227 [in] REFIID riid);
1231 object,
1232 uuid(0000002E-0000-0000-C000-000000000046)
1234 interface ITypeFactory : IUnknown
1236 HRESULT CreateFromTypeInfo(
1237 [in] ITypeInfo *pTypeInfo,
1238 [in] REFIID riid,
1239 [out, iid_is(riid)] IUnknown **ppv);
1243 local,
1244 object,
1245 uuid(0000002D-0000-0000-C000-000000000046)
1247 interface ITypeMarshal : IUnknown
1249 HRESULT Size(
1250 [in] PVOID pvType,
1251 [in] DWORD dwDestContext,
1252 [in] PVOID pvDestContext,
1253 [out] ULONG *pSize);
1255 HRESULT Marshal(
1256 [in] PVOID pvType,
1257 [in] DWORD dwDestContext,
1258 [in] PVOID pvDestContext,
1259 [in] ULONG cbBufferLength,
1260 [out] BYTE *pBuffer,
1261 [out] ULONG *pcbWritten);
1263 HRESULT Unmarshal(
1264 [out] PVOID pvType,
1265 [in] DWORD dwFlags,
1266 [in] ULONG cbBufferLength,
1267 [in] BYTE *pBuffer,
1268 [out] ULONG *pcbRead);
1270 HRESULT Free(
1271 [in] PVOID pvType);
1275 local,
1276 object,
1277 uuid(0000002F-0000-0000-C000-000000000046)
1279 interface IRecordInfo : IUnknown
1281 typedef [unique] IRecordInfo *LPRECORDINFO;
1283 HRESULT RecordInit(
1284 [out] PVOID pvNew);
1286 HRESULT RecordClear(
1287 [in] PVOID pvExisting);
1289 HRESULT RecordCopy(
1290 [in] PVOID pvExisting,
1291 [out] PVOID pvNew);
1293 HRESULT GetGuid(
1294 [out] GUID *pguid);
1296 HRESULT GetName(
1297 [out] BSTR *pbstrName);
1299 HRESULT GetSize(
1300 [out] ULONG *pcbSize);
1302 HRESULT GetTypeInfo(
1303 [out] ITypeInfo **ppTypeInfo);
1305 HRESULT GetField(
1306 [in] PVOID pvData,
1307 [in] LPCOLESTR szFieldName,
1308 [out] VARIANT *pvarField);
1310 HRESULT GetFieldNoCopy(
1311 [in] PVOID pvData,
1312 [in] LPCOLESTR szFieldName,
1313 [out] VARIANT *pvarField,
1314 [out] PVOID *ppvDataCArray);
1316 HRESULT PutField(
1317 [in] ULONG wFlags,
1318 [in, out] PVOID pvData,
1319 [in] LPCOLESTR szFieldName,
1320 [in] VARIANT *pvarField);
1322 HRESULT PutFieldNoCopy(
1323 [in] ULONG wFlags,
1324 [in, out] PVOID pvData,
1325 [in] LPCOLESTR szFieldName,
1326 [in] VARIANT *pvarField);
1328 HRESULT GetFieldNames(
1329 [in, out] ULONG *pcNames,
1330 [out, size_is(*pcNames), length_is(*pcNames)] BSTR *rgBstrNames);
1332 BOOL IsMatchingType(
1333 [in] IRecordInfo *pRecordInfo);
1335 PVOID RecordCreate();
1337 HRESULT RecordCreateCopy(
1338 [in] PVOID pvSource,
1339 [out] PVOID *ppvDest);
1341 HRESULT RecordDestroy(
1342 [in] PVOID pvRecord);
1346 local,
1347 object,
1348 uuid(00020405-0000-0000-C000-000000000046),
1349 pointer_default(unique)
1351 interface ICreateTypeInfo : IUnknown
1353 typedef [unique] ICreateTypeInfo *LPCREATETYPEINFO;
1355 HRESULT SetGuid(
1356 [in] REFGUID guid);
1358 HRESULT SetTypeFlags(
1359 [in] UINT uTypeFlags);
1361 HRESULT SetDocString(
1362 [in] LPOLESTR pStrDoc);
1364 HRESULT SetHelpContext(
1365 [in] DWORD dwHelpContext);
1367 HRESULT SetVersion(
1368 [in] WORD wMajorVerNum,
1369 [in] WORD wMinorVerNum);
1371 HRESULT AddRefTypeInfo(
1372 [in] ITypeInfo *pTInfo,
1373 [in] HREFTYPE *phRefType);
1375 HRESULT AddFuncDesc(
1376 [in] UINT index,
1377 [in] FUNCDESC *pFuncDesc);
1379 HRESULT AddImplType(
1380 [in] UINT index,
1381 [in] HREFTYPE hRefType);
1383 HRESULT SetImplTypeFlags(
1384 [in] UINT index,
1385 [in] INT implTypeFlags);
1387 HRESULT SetAlignment(
1388 [in] WORD cbAlignment);
1390 HRESULT SetSchema(
1391 [in] LPOLESTR pStrSchema);
1393 HRESULT AddVarDesc(
1394 [in] UINT index,
1395 [in] VARDESC *pVarDesc);
1397 HRESULT SetFuncAndParamNames(
1398 [in] UINT index,
1399 [in, size_is(cNames)] LPOLESTR *rgszNames,
1400 [in] UINT cNames);
1402 HRESULT SetVarName(
1403 [in] UINT index,
1404 [in] LPOLESTR szName);
1406 HRESULT SetTypeDescAlias(
1407 [in] TYPEDESC *pTDescAlias);
1409 HRESULT DefineFuncAsDllEntry(
1410 [in] UINT index,
1411 [in] LPOLESTR szDllName,
1412 [in] LPOLESTR szProcName);
1414 HRESULT SetFuncDocString(
1415 [in] UINT index,
1416 [in] LPOLESTR szDocString);
1418 HRESULT SetVarDocString(
1419 [in] UINT index,
1420 [in] LPOLESTR szDocString);
1422 HRESULT SetFuncHelpContext(
1423 [in] UINT index,
1424 [in] DWORD dwHelpContext);
1426 HRESULT SetVarHelpContext(
1427 [in] UINT index,
1428 [in] DWORD dwHelpContext);
1430 HRESULT SetMops(
1431 [in] UINT index,
1432 [in] BSTR bstrMops);
1434 HRESULT SetTypeIdldesc(
1435 [in] IDLDESC * pIdlDesc);
1437 HRESULT LayOut();
1441 local,
1442 object,
1443 uuid(0002040E-0000-0000-C000-000000000046),
1444 pointer_default(unique)
1446 interface ICreateTypeInfo2 : ICreateTypeInfo
1448 typedef [unique] ICreateTypeInfo2 *LPCREATETYPEINFO2;
1450 HRESULT DeleteFuncDesc(
1451 [in] UINT index);
1453 HRESULT DeleteFuncDescByMemId(
1454 [in] MEMBERID memid,
1455 [in] INVOKEKIND invKind);
1457 HRESULT DeleteVarDesc(
1458 [in] UINT index);
1460 HRESULT DeleteVarDescByMemId(
1461 [in] MEMBERID memid);
1463 HRESULT DeleteImplType(
1464 [in] UINT index);
1466 HRESULT SetCustData(
1467 [in] REFGUID guid,
1468 [in] VARIANT *pVarVal);
1470 HRESULT SetFuncCustData(
1471 [in] UINT index,
1472 [in] REFGUID guid,
1473 [in] VARIANT *pVarVal);
1475 HRESULT SetParamCustData(
1476 [in] UINT indexFunc,
1477 [in] UINT indexParam,
1478 [in] REFGUID guid,
1479 [in] VARIANT *pVarVal);
1481 HRESULT SetVarCustData(
1482 [in] UINT index,
1483 [in] REFGUID guid,
1484 [in] VARIANT *pVarVal);
1486 HRESULT SetImplTypeCustData(
1487 [in] UINT index,
1488 [in] REFGUID guid,
1489 [in] VARIANT *pVarVal);
1491 HRESULT SetHelpStringContext(
1492 [in] ULONG dwHelpStringContext);
1494 HRESULT SetFuncHelpStringContext(
1495 [in] UINT index,
1496 [in] ULONG dwHelpStringContext);
1498 HRESULT SetVarHelpStringContext(
1499 [in] UINT index,
1500 [in] ULONG dwHelpStringContext);
1502 HRESULT Invalidate();
1504 HRESULT SetName(
1505 [in] LPOLESTR szName);
1509 local,
1510 object,
1511 uuid(00020406-0000-0000-C000-000000000046),
1512 pointer_default(unique)
1514 interface ICreateTypeLib : IUnknown
1516 typedef [unique] ICreateTypeLib *LPCREATETYPELIB;
1518 HRESULT CreateTypeInfo(
1519 [in] LPOLESTR szName,
1520 [in] TYPEKIND tkind,
1521 [out] ICreateTypeInfo **ppCTInfo);
1523 HRESULT SetName(
1524 [in] LPOLESTR szName);
1526 HRESULT SetVersion(
1527 [in] WORD wMajorVerNum,
1528 [in] WORD wMinorVerNum);
1530 HRESULT SetGuid(
1531 [in] REFGUID guid);
1533 HRESULT SetDocString(
1534 [in] LPOLESTR szDoc);
1536 HRESULT SetHelpFileName(
1537 [in] LPOLESTR szHelpFileName);
1539 HRESULT SetHelpContext(
1540 [in] DWORD dwHelpContext);
1542 HRESULT SetLcid(
1543 [in] LCID lcid);
1545 HRESULT SetLibFlags(
1546 [in] UINT uLibFlags);
1548 HRESULT SaveAllChanges();
1552 local,
1553 object,
1554 uuid(0002040F-0000-0000-C000-000000000046),
1555 pointer_default(unique)
1557 interface ICreateTypeLib2 : ICreateTypeLib
1559 typedef [unique] ICreateTypeLib2 *LPCREATETYPELIB2;
1561 HRESULT DeleteTypeInfo(
1562 [in] LPOLESTR szName);
1564 HRESULT SetCustData(
1565 [in] REFGUID guid,
1566 [in] VARIANT *pVarVal);
1568 HRESULT SetHelpStringContext(
1569 [in] ULONG dwHelpStringContext);
1571 HRESULT SetHelpStringDll(
1572 [in] LPOLESTR szFileName);