Release 0.9.6.
[wine/multimedia.git] / include / oaidl.idl
blobe0b4c72a99c482206790a8019dec0bae8a75eacc
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_DATADELETED = 0x1000; /* Data in a vector has been deleted */
139 const USHORT FADF_CREATEVECTOR = 0x2000; /* This array is a vector */
141 /* Variant */
143 cpp_quote("#if (__STDC__ && !defined(_FORCENAMELESSUNION)) || defined(NONAMELESSUNION)")
144 cpp_quote("#define __VARIANT_NAME_1 n1")
145 cpp_quote("#define __VARIANT_NAME_2 n2")
146 cpp_quote("#define __VARIANT_NAME_3 n3")
147 cpp_quote("#define __VARIANT_NAME_4 brecVal")
148 cpp_quote("#else")
149 cpp_quote("#define __tagVARIANT")
150 cpp_quote("#define __VARIANT_NAME_1")
151 cpp_quote("#define __VARIANT_NAME_2")
152 cpp_quote("#define __VARIANT_NAME_3")
153 cpp_quote("#define __tagBRECORD")
154 cpp_quote("#define __VARIANT_NAME_4")
155 cpp_quote("#endif")
157 typedef [wire_marshal(wireVARIANT)] struct tagVARIANT VARIANT;
159 struct tagVARIANT {
160 union {
161 struct __tagVARIANT {
162 VARTYPE vt;
163 WORD wReserved1;
164 WORD wReserved2;
165 WORD wReserved3;
166 union {
167 signed char cVal;
168 USHORT uiVal;
169 ULONG ulVal;
170 INT intVal;
171 UINT uintVal;
172 BYTE bVal;
173 SHORT iVal;
174 LONG lVal;
175 FLOAT fltVal;
176 DOUBLE dblVal;
177 VARIANT_BOOL boolVal;
178 #if 0 /* illegal in C++ */
179 _VARIANT_BOOL bool;
180 #endif
181 SCODE scode;
182 DATE date;
183 BSTR bstrVal;
184 CY cyVal;
185 IUnknown *punkVal;
186 IDispatch *pdispVal;
187 SAFEARRAY *parray;
188 LONGLONG llVal;
189 ULONGLONG ullVal;
190 signed char *pcVal;
191 USHORT *puiVal;
192 ULONG *pulVal;
193 INT *pintVal;
194 UINT *puintVal;
195 BYTE *pbVal;
196 SHORT *piVal;
197 LONG *plVal;
198 FLOAT *pfltVal;
199 DOUBLE *pdblVal;
200 VARIANT_BOOL *pboolVal;
201 #if 0
202 _VARIANT_BOOL *pbool;
203 #endif
204 SCODE *pscode;
205 DATE *pdate;
206 BSTR *pbstrVal;
207 VARIANT *pvarVal;
208 PVOID byref;
209 CY *pcyVal;
210 DECIMAL *pdecVal;
211 IUnknown **ppunkVal;
212 IDispatch **ppdispVal;
213 SAFEARRAY **pparray;
214 LONGLONG *pllVal;
215 ULONGLONG *pullVal;
216 struct __tagBRECORD {
217 PVOID pvRecord;
218 IRecordInfo *pRecInfo;
219 } __VARIANT_NAME_4;
220 } __VARIANT_NAME_3;
221 } __VARIANT_NAME_2;
223 DECIMAL decVal;
224 } __VARIANT_NAME_1;
227 typedef VARIANT *LPVARIANT;
228 typedef VARIANT VARIANTARG;
229 typedef VARIANTARG *LPVARIANTARG;
231 struct _wireBRECORD {
232 ULONG fFlags;
233 ULONG clSize;
234 IRecordInfo *pRecInfo;
235 [size_is(clSize)] byte *pRecord;
238 struct _wireVARIANT {
239 DWORD clSize;
240 DWORD rpcReserved;
241 USHORT vt;
242 USHORT wReserved1;
243 USHORT wReserved2;
244 USHORT wReserved3;
245 [switch_is(vt)] union {
246 [case(VT_EMPTY, VT_NULL)] ;
247 [case(VT_I1)] signed char cVal;
248 [case(VT_UI2)] USHORT uiVal;
249 [case(VT_UI4)] ULONG ulVal;
250 [case(VT_INT)] INT intVal;
251 [case(VT_UINT)] UINT uintVal;
252 [case(VT_UI1)] BYTE bVal;
253 [case(VT_I2)] SHORT iVal;
254 [case(VT_I4)] LONG lVal;
255 [case(VT_R4)] FLOAT fltVal;
256 [case(VT_R8)] DOUBLE dblVal;
257 [case(VT_BOOL)] VARIANT_BOOL boolVal;
258 [case(VT_ERROR)] SCODE scode;
259 [case(VT_DATE)] DATE date;
260 [case(VT_BSTR)] wireBSTR bstrVal;
261 [case(VT_CY)] CY cyVal;
262 [case(VT_DECIMAL)] DECIMAL decVal;
263 [case(VT_UNKNOWN)] IUnknown *punkVal;
264 [case(VT_DISPATCH)] IDispatch *pdispVal;
265 [case(VT_ARRAY)] wireSAFEARRAY parray;
266 [case(VT_I1|VT_BYREF)] signed char *pcVal;
267 [case(VT_UI2|VT_BYREF)] USHORT *puiVal;
268 [case(VT_UI4|VT_BYREF)] ULONG *pulVal;
269 [case(VT_INT|VT_BYREF)] INT *pintVal;
270 [case(VT_UINT|VT_BYREF)] UINT *puintVal;
271 [case(VT_UI1|VT_BYREF)] BYTE *pbVal;
272 [case(VT_I2|VT_BYREF)] SHORT *piVal;
273 [case(VT_I4|VT_BYREF)] LONG *plVal;
274 [case(VT_R4|VT_BYREF)] FLOAT *pfltVal;
275 [case(VT_R8|VT_BYREF)] DOUBLE *pdblVal;
276 [case(VT_BOOL|VT_BYREF)] VARIANT_BOOL *pboolVal;
277 [case(VT_ERROR|VT_BYREF)] SCODE *pscode;
278 [case(VT_DATE|VT_BYREF)] DATE *pdate;
279 [case(VT_BSTR|VT_BYREF)] wireBSTR *pbstrVal;
280 [case(VT_VARIANT|VT_BYREF)] wireVARIANT *pvarVal;
281 [case(VT_CY|VT_BYREF)] CY *pcyVal;
282 [case(VT_DECIMAL|VT_BYREF)] DECIMAL *pdecVal;
283 [case(VT_UNKNOWN|VT_BYREF)] IUnknown **ppunkVal;
284 [case(VT_DISPATCH|VT_BYREF)] IDispatch **ppdispVal;
285 [case(VT_ARRAY|VT_BYREF)] wireSAFEARRAY *pparray;
286 [case(VT_RECORD, VT_RECORD|VT_BYREF)] wireBRECORD brecVal;
290 /* Dispatch */
292 typedef LONG DISPID;
293 typedef DWORD HREFTYPE;
294 typedef DISPID MEMBERID;
296 typedef [v1_enum] enum tagTYPEKIND {
297 TKIND_ENUM = 0,
298 TKIND_RECORD,
299 TKIND_MODULE,
300 TKIND_INTERFACE,
301 TKIND_DISPATCH,
302 TKIND_COCLASS,
303 TKIND_ALIAS,
304 TKIND_UNION,
305 TKIND_MAX
306 } TYPEKIND;
308 typedef struct tagTYPEDESC {
309 [switch_is(vt)] union {
310 [case(VT_PTR, VT_SAFEARRAY)] struct tagTYPEDESC *lptdesc;
311 [case(VT_CARRAY)] struct tagARRAYDESC *lpadesc;
312 [case(VT_USERDEFINED)] HREFTYPE hreftype;
313 [default] ;
315 VARTYPE vt;
316 } TYPEDESC;
318 typedef struct tagARRAYDESC {
319 TYPEDESC tdescElem;
320 USHORT cDims;
321 [size_is(cDims)] SAFEARRAYBOUND rgbounds[];
322 } ARRAYDESC;
324 typedef struct tagPARAMDESCEX {
325 ULONG cBytes;
326 VARIANTARG varDefaultValue;
327 } PARAMDESCEX, *LPPARAMDESCEX;
329 typedef struct tagPARAMDESC {
330 LPPARAMDESCEX pparamdescex;
331 USHORT wParamFlags;
332 } PARAMDESC, *LPPARAMDESC;
334 const USHORT PARAMFLAG_NONE = 0x00;
335 const USHORT PARAMFLAG_FIN = 0x01;
336 const USHORT PARAMFLAG_FOUT = 0x02;
337 const USHORT PARAMFLAG_FLCID = 0x04;
338 const USHORT PARAMFLAG_FRETVAL = 0x08;
339 const USHORT PARAMFLAG_FOPT = 0x10;
340 const USHORT PARAMFLAG_FHASDEFAULT = 0x20;
341 const USHORT PARAMFLAG_FHASCUSTDATA = 0x40;
343 typedef struct tagIDLDESC {
344 ULONG dwReserved;
345 USHORT wIDLFlags;
346 } IDLDESC, *LPIDLDESC;
348 const USHORT IDLFLAG_NONE = PARAMFLAG_NONE;
349 const USHORT IDLFLAG_FIN = PARAMFLAG_FIN;
350 const USHORT IDLFLAG_FOUT = PARAMFLAG_FOUT;
351 const USHORT IDLFLAG_FLCID = PARAMFLAG_FLCID;
352 const USHORT IDLFLAG_FRETVAL = PARAMFLAG_FRETVAL;
354 cpp_quote("#if 0") /* for IDL only */
355 typedef struct tagELEMDESC {
356 TYPEDESC tdesc;
357 PARAMDESC paramdesc;
358 } ELEMDESC;
359 cpp_quote("#else") /* C/C++ defs */
360 cpp_quote("typedef struct tagELEMDESC {")
361 cpp_quote(" TYPEDESC tdesc;")
362 cpp_quote(" union {")
363 cpp_quote(" IDLDESC idldesc;")
364 cpp_quote(" PARAMDESC paramdesc;")
365 cpp_quote(" } DUMMYUNIONNAME;")
366 cpp_quote("} ELEMDESC, *LPELEMDESC;")
367 cpp_quote("#endif")
369 typedef struct tagTYPEATTR {
370 GUID guid;
371 LCID lcid;
372 DWORD dwReserved;
373 MEMBERID memidConstructor;
374 MEMBERID memidDestructor;
375 LPOLESTR lpstrSchema;
376 ULONG cbSizeInstance;
377 TYPEKIND typekind;
378 WORD cFuncs;
379 WORD cVars;
380 WORD cImplTypes;
381 WORD cbSizeVft;
382 WORD cbAlignment;
383 WORD wTypeFlags;
384 WORD wMajorVerNum;
385 WORD wMinorVerNum;
386 TYPEDESC tdescAlias;
387 IDLDESC idldescType;
388 } TYPEATTR, *LPTYPEATTR;
390 typedef struct tagDISPPARAMS {
391 [size_is(cArgs)] VARIANTARG *rgvarg;
392 [size_is(cNamedArgs)] DISPID *rgdispidNamedArgs;
393 UINT cArgs;
394 UINT cNamedArgs;
395 } DISPPARAMS;
397 cpp_quote("#if 0") /* for IDL only */
398 typedef struct tagEXCEPINFO {
399 WORD wCode;
400 WORD wReserved;
401 BSTR bstrSource;
402 BSTR bstrDescription;
403 BSTR bstrHelpFile;
404 DWORD dwHelpContext;
405 ULONG pvReserved;
406 ULONG pfnDeferredFillIn;
407 SCODE scode;
408 } EXCEPINFO;
409 cpp_quote("#else")
410 cpp_quote("typedef struct tagEXCEPINFO {")
411 cpp_quote(" WORD wCode;")
412 cpp_quote(" WORD wReserved;")
413 cpp_quote(" BSTR bstrSource;")
414 cpp_quote(" BSTR bstrDescription;")
415 cpp_quote(" BSTR bstrHelpFile;")
416 cpp_quote(" DWORD dwHelpContext;")
417 cpp_quote(" PVOID pvReserved;")
418 cpp_quote(" HRESULT (__stdcall *pfnDeferredFillIn)(struct tagEXCEPINFO *);")
419 cpp_quote(" SCODE scode;")
420 cpp_quote("} EXCEPINFO, *LPEXCEPINFO;")
421 cpp_quote("#endif")
423 typedef [v1_enum] enum tagCALLCONV {
424 CC_FASTCALL = 0,
425 CC_CDECL = 1,
426 CC_MSCPASCAL,
427 CC_PASCAL = CC_MSCPASCAL,
428 CC_MACPASCAL,
429 CC_STDCALL,
430 CC_FPFASTCALL,
431 CC_SYSCALL,
432 CC_MPWCDECL,
433 CC_MPWPASCAL,
434 CC_MAX
435 } CALLCONV;
437 typedef [v1_enum] enum tagFUNCKIND {
438 FUNC_VIRTUAL,
439 FUNC_PUREVIRTUAL,
440 FUNC_NONVIRTUAL,
441 FUNC_STATIC,
442 FUNC_DISPATCH
443 } FUNCKIND;
445 typedef [v1_enum] enum tagINVOKEKIND {
446 INVOKE_FUNC = 1,
447 INVOKE_PROPERTYGET = 2,
448 INVOKE_PROPERTYPUT = 4,
449 INVOKE_PROPERTYPUTREF = 8
450 } INVOKEKIND;
452 typedef struct tagFUNCDESC {
453 MEMBERID memid;
454 [size_is(cScodes)] SCODE *lprgscode;
455 [size_is(cParams)] ELEMDESC *lprgelemdescParam;
456 FUNCKIND funckind;
457 INVOKEKIND invkind;
458 CALLCONV callconv;
459 SHORT cParams;
460 SHORT cParamsOpt;
461 SHORT oVft;
462 SHORT cScodes;
463 ELEMDESC elemdescFunc;
464 WORD wFuncFlags;
465 } FUNCDESC, *LPFUNCDESC;
467 typedef [v1_enum] enum tagVARKIND {
468 VAR_PERINSTANCE,
469 VAR_STATIC,
470 VAR_CONST,
471 VAR_DISPATCH
472 } VARKIND;
474 const USHORT IMPLTYPEFLAG_FDEFAULT = 0x1;
475 const USHORT IMPLTYPEFLAG_FSOURCE = 0x2;
476 const USHORT IMPLTYPEFLAG_FRESTRICTED = 0x4;
477 const USHORT IMPLTYPEFLAG_FDEFAULTVTABLE = 0x8;
479 typedef struct tagVARDESC {
480 MEMBERID memid;
481 LPOLESTR lpstrSchema;
482 [switch_is(varkind)] union {
483 [case(VAR_PERINSTANCE, VAR_DISPATCH, VAR_STATIC)] ULONG oInst;
484 [case(VAR_CONST)] VARIANT *lpvarValue;
486 ELEMDESC elemdescVar;
487 WORD wVarFlags;
488 VARKIND varkind;
489 } VARDESC, *LPVARDESC;
491 typedef enum tagTYPEFLAGS {
492 TYPEFLAG_FAPPOBJECT = 0x0001,
493 TYPEFLAG_FCANCREATE = 0x0002,
494 TYPEFLAG_FLICENSED = 0x0004,
495 TYPEFLAG_FPREDECLID = 0x0008,
496 TYPEFLAG_FHIDDEN = 0x0010,
497 TYPEFLAG_FCONTROL = 0x0020,
498 TYPEFLAG_FDUAL = 0x0040,
499 TYPEFLAG_FNONEXTENSIBLE = 0x0080,
500 TYPEFLAG_FOLEAUTOMATION = 0x0100,
501 TYPEFLAG_FRESTRICTED = 0x0200,
502 TYPEFLAG_FAGGREGATABLE = 0x0400,
503 TYPEFLAG_FREPLACEABLE = 0x0800,
504 TYPEFLAG_FDISPATCHABLE = 0x1000,
505 TYPEFLAG_FREVERSEBIND = 0x2000,
506 TYPEFLAG_FPROXY = 0x4000
507 } TYPEFLAGS;
509 typedef enum tagFUNCFLAGS {
510 FUNCFLAG_FRESTRICTED = 0x0001,
511 FUNCFLAG_FSOURCE = 0x0002,
512 FUNCFLAG_FBINDABLE = 0x0004,
513 FUNCFLAG_FREQUESTEDIT = 0x0008,
514 FUNCFLAG_FDISPLAYBIND = 0x0010,
515 FUNCFLAG_FDEFAULTBIND = 0x0020,
516 FUNCFLAG_FHIDDEN = 0x0040,
517 FUNCFLAG_FUSESGETLASTERROR = 0x0080,
518 FUNCFLAG_FDEFAULTCOLLELEM = 0x0100,
519 FUNCFLAG_FUIDEFAULT = 0x0200,
520 FUNCFLAG_FNONBROWSABLE = 0x0400,
521 FUNCFLAG_FREPLACEABLE = 0x0800,
522 FUNCFLAG_FIMMEDIATEBIND = 0x1000
523 } FUNCFLAGS;
525 typedef enum tagVARFLAGS {
526 VARFLAG_FREADONLY = 0x0001,
527 VARFLAG_FSOURCE = 0x0002,
528 VARFLAG_FBINDABLE = 0x0004,
529 VARFLAG_FREQUESTEDIT = 0x0008,
530 VARFLAG_FDISPLAYBIND = 0x0010,
531 VARFLAG_FDEFAULTBIND = 0x0020,
532 VARFLAG_FHIDDEN = 0x0040,
533 VARFLAG_FRESTRICTED = 0x0080,
534 VARFLAG_FDEFAULTCOLLELEM = 0x0100,
535 VARFLAG_FUIDEFAULT = 0x0200,
536 VARFLAG_FNONBROWSABLE = 0x0400,
537 VARFLAG_FREPLACEABLE = 0x0800,
538 VARFLAG_FIMMEDIATEBIND = 0x1000
539 } VARFLAGS;
541 typedef [wire_marshal(DWORD)] struct tagCLEANLOCALSTORAGE {
542 IUnknown *pInterface;
543 PVOID pStorage;
544 DWORD flags;
545 } CLEANLOCALSTORAGE;
547 typedef struct tagCUSTDATAITEM {
548 GUID guid;
549 VARIANTARG varValue;
550 } CUSTDATAITEM, *LPCUSTDATAITEM;
552 typedef struct tagCUSTDATA {
553 DWORD cCustData;
554 [size_is(cCustData)] LPCUSTDATAITEM prgCustData;
555 } CUSTDATA, *LPCUSTDATA;
557 } /* interface IOleAutomationTypes */
559 /******************** INTERFACES ********************/
562 object,
563 uuid(00020400-0000-0000-C000-000000000046),
564 pointer_default(unique)
566 interface IDispatch : IUnknown
568 typedef [unique] IDispatch *LPDISPATCH;
570 const DISPID DISPID_UNKNOWN = -1;
571 const DISPID DISPID_VALUE = 0;
572 const DISPID DISPID_PROPERTYPUT = -3;
573 const DISPID DISPID_NEWENUM = -4;
574 const DISPID DISPID_EVALUATE = -5;
575 const DISPID DISPID_CONSTRUCTOR = -6;
576 const DISPID DISPID_DESTRUCTOR = -7;
577 const DISPID DISPID_COLLECT = -8;
579 HRESULT GetTypeInfoCount(
580 [out] UINT *pctinfo);
582 HRESULT GetTypeInfo(
583 [in] UINT iTInfo,
584 [in] LCID lcid,
585 [out] ITypeInfo **ppTInfo);
587 HRESULT GetIDsOfNames(
588 [in] REFIID riid,
589 [in, size_is(cNames)] LPOLESTR *rgszNames,
590 [in] UINT cNames,
591 [in] LCID lcid,
592 [out, size_is(cNames)] DISPID *rgDispId);
594 [local]
595 HRESULT Invoke(
596 [in] DISPID dispIdMember,
597 [in] REFIID riid,
598 [in] LCID lcid,
599 [in] WORD wFlags,
600 [in, out] DISPPARAMS *pDispParams,
601 [out] VARIANT *pVarResult,
602 [out] EXCEPINFO *pExcepInfo,
603 [out] UINT *puArgErr);
605 [call_as(Invoke)]
606 HRESULT RemoteInvoke(
607 [in] DISPID dispIdMember,
608 [in] REFIID riid,
609 [in] LCID lcid,
610 [in] DWORD dwFlags,
611 [in] DISPPARAMS *pDispParams,
612 [out] VARIANT *pVarResult,
613 [out] EXCEPINFO *pExcepInfo,
614 [out] UINT *pArgErr,
615 [in] UINT cVarRef,
616 [in, size_is(cVarRef)] UINT *rgVarRefIdx,
617 [in, out, size_is(cVarRef)] VARIANTARG *rgVarRef);
621 object,
622 uuid(00020404-0000-0000-C000-000000000046),
623 pointer_default(unique)
625 interface IEnumVARIANT : IUnknown
627 typedef [unique] IEnumVARIANT *LPENUMVARIANT;
629 [local]
630 HRESULT Next(
631 [in] ULONG celt,
632 [out] VARIANT *rgVar,
633 [out] ULONG *pCeltFetched);
635 [call_as(Next)]
636 HRESULT RemoteNext(
637 [in] ULONG celt,
638 [out, size_is(celt), length_is(*pCeltFetched)]
639 VARIANT *rgVar,
640 [out] ULONG *pCeltFetched);
642 HRESULT Skip(
643 [in] ULONG celt);
645 HRESULT Reset();
647 HRESULT Clone(
648 [out] IEnumVARIANT **ppEnum);
652 object,
653 uuid(00020403-0000-0000-C000-000000000046),
654 pointer_default(unique)
656 interface ITypeComp : IUnknown
658 typedef [unique] ITypeComp *LPTYPECOMP;
660 typedef [v1_enum] enum tagDESCKIND {
661 DESCKIND_NONE = 0,
662 DESCKIND_FUNCDESC,
663 DESCKIND_VARDESC,
664 DESCKIND_TYPECOMP,
665 DESCKIND_IMPLICITAPPOBJ,
666 DESCKIND_MAX
667 } DESCKIND;
669 typedef union tagBINDPTR {
670 FUNCDESC *lpfuncdesc;
671 VARDESC *lpvardesc;
672 ITypeComp *lptcomp;
673 } BINDPTR, *LPBINDPTR;
675 [local]
676 HRESULT Bind(
677 [in] LPOLESTR szName,
678 [in] ULONG lHashVal,
679 [in] WORD wFlags,
680 [out] ITypeInfo **ppTInfo,
681 [out] DESCKIND *pDescKind,
682 [out] BINDPTR *pBindPtr);
684 [call_as(Bind)]
685 HRESULT RemoteBind(
686 [in] LPOLESTR szName,
687 [in] ULONG lHashVal,
688 [in] WORD wFlags,
689 [out] ITypeInfo **ppTInfo,
690 [out] DESCKIND *pDescKind,
691 [out] LPFUNCDESC *ppFuncDesc,
692 [out] LPVARDESC *ppVarDesc,
693 [out] ITypeComp **ppTypeComp,
694 [out] CLEANLOCALSTORAGE *pDummy);
696 [local]
697 HRESULT BindType(
698 [in] LPOLESTR szName,
699 [in] ULONG lHashVal,
700 [out] ITypeInfo **ppTInfo,
701 [out] ITypeComp **ppTComp);
703 [call_as(BindType)]
704 HRESULT RemoteBindType(
705 [in] LPOLESTR szName,
706 [in] ULONG lHashVal,
707 [out] ITypeInfo **ppTInfo);
711 object,
712 uuid(00020401-0000-0000-C000-000000000046),
713 pointer_default(unique)
715 interface ITypeInfo : IUnknown
717 typedef [unique] ITypeInfo *LPTYPEINFO;
719 [local]
720 HRESULT GetTypeAttr(
721 [out] TYPEATTR **ppTypeAttr);
723 [call_as(GetTypeAttr)]
724 HRESULT RemoteGetTypeAttr(
725 [out] LPTYPEATTR *ppTypeAttr,
726 [out] CLEANLOCALSTORAGE *pDummy);
728 HRESULT GetTypeComp(
729 [out] ITypeComp **ppTComp);
731 [local]
732 HRESULT GetFuncDesc(
733 [in] UINT index,
734 [out] FUNCDESC **ppFuncDesc);
736 [call_as(GetFuncDesc)]
737 HRESULT RemoteGetFuncDesc(
738 [in] UINT index,
739 [out] LPFUNCDESC *ppFuncDesc,
740 [out] CLEANLOCALSTORAGE *pDummy);
742 [local]
743 HRESULT GetVarDesc(
744 [in] UINT index,
745 [out] VARDESC **ppVarDesc);
747 [call_as(GetVarDesc)]
748 HRESULT RemoteGetVarDesc(
749 [in] UINT index,
750 [out] LPVARDESC *ppVarDesc,
751 [out] CLEANLOCALSTORAGE *pDummy);
753 [local]
754 HRESULT GetNames(
755 [in] MEMBERID memid,
756 [out, size_is(cMaxNames), length_is(*pcNames)] BSTR *rgBstrNames,
757 [in] UINT cMaxNames,
758 [out] UINT *pcNames);
760 [call_as(GetNames)]
761 HRESULT RemoteGetNames(
762 [in] MEMBERID memid,
763 [out, size_is(cMaxNames), length_is(*pcNames)] BSTR *rgBstrNames,
764 [in] UINT cMaxNames,
765 [out] UINT *pcNames);
767 HRESULT GetRefTypeOfImplType(
768 [in] UINT index,
769 [out] HREFTYPE *pRefType);
771 HRESULT GetImplTypeFlags(
772 [in] UINT index,
773 [out] INT *pImplTypeFlags);
775 [local]
776 HRESULT GetIDsOfNames(
777 [in, size_is(cNames)] LPOLESTR *rgszNames,
778 [in] UINT cNames,
779 [out, size_is(cNames)] MEMBERID *pMemId);
781 [call_as(GetIDsOfNames)]
782 HRESULT LocalGetIDsOfNames();
784 [local]
785 HRESULT Invoke(
786 [in] PVOID pvInstance,
787 [in] MEMBERID memid,
788 [in] WORD wFlags,
789 [in, out] DISPPARAMS *pDispParams,
790 [out] VARIANT *pVarResult,
791 [out] EXCEPINFO *pExcepInfo,
792 [out] UINT *puArgErr);
794 [call_as(Invoke)]
795 HRESULT LocalInvoke();
797 [local]
798 HRESULT GetDocumentation(
799 [in] MEMBERID memid,
800 [out] BSTR *pBstrName,
801 [out] BSTR *pBstrDocString,
802 [out] DWORD *pdwHelpContext,
803 [out] BSTR *pBstrHelpFile);
805 [call_as(GetDocumentation)]
806 HRESULT RemoteGetDocumentation(
807 [in] MEMBERID memid,
808 [in] DWORD refPtrFlags,
809 [out] BSTR *pBstrName,
810 [out] BSTR *pBstrDocString,
811 [out] DWORD *pdwHelpContext,
812 [out] BSTR *pBstrHelpFile);
814 [local]
815 HRESULT GetDllEntry(
816 [in] MEMBERID memid,
817 [in] INVOKEKIND invKind,
818 [out] BSTR *pBstrDllName,
819 [out] BSTR *pBstrName,
820 [out] WORD *pwOrdinal);
822 [call_as(GetDllEntry)]
823 HRESULT RemoteGetDllEntry(
824 [in] MEMBERID memid,
825 [in] INVOKEKIND invKind,
826 [in] DWORD refPtrFlags,
827 [out] BSTR *pBstrDllName,
828 [out] BSTR *pBstrName,
829 [out] WORD *pwOrdinal);
831 HRESULT GetRefTypeInfo(
832 [in] HREFTYPE hRefType,
833 [out] ITypeInfo **ppTInfo);
835 [local]
836 HRESULT AddressOfMember(
837 [in] MEMBERID memid,
838 [in] INVOKEKIND invKind,
839 [out] PVOID *ppv);
841 [call_as(AddressOfMember)]
842 HRESULT LocalAddressOfMember();
844 [local]
845 HRESULT CreateInstance(
846 [in] IUnknown *pUnkOuter,
847 [in] REFIID riid,
848 [out, iid_is(riid)] PVOID *ppvObj);
850 [call_as(CreateInstance)]
851 HRESULT RemoteCreateInstance(
852 [in] REFIID riid,
853 [out, iid_is(riid)] IUnknown **ppvObj);
855 HRESULT GetMops(
856 [in] MEMBERID memid,
857 [out] BSTR *pBstrMops);
859 [local]
860 HRESULT GetContainingTypeLib(
861 [out] ITypeLib **ppTLib,
862 [out] UINT *pIndex);
864 [call_as(GetContainingTypeLib)]
865 HRESULT RemoteGetContainingTypeLib(
866 [out] ITypeLib **ppTLib,
867 [out] UINT *pIndex);
869 [local]
870 void ReleaseTypeAttr(
871 [in] TYPEATTR *pTypeAttr);
873 [call_as(ReleaseTypeAttr)]
874 HRESULT LocalReleaseTypeAttr();
876 [local]
877 void ReleaseFuncDesc(
878 [in] FUNCDESC *pFuncDesc);
880 [call_as(ReleaseFuncDesc)]
881 HRESULT LocalReleaseFuncDesc();
883 [local]
884 void ReleaseVarDesc(
885 [in] VARDESC *pVarDesc);
887 [call_as(ReleaseVarDesc)]
888 HRESULT LocalReleaseVarDesc();
892 object,
893 uuid(00020412-0000-0000-C000-000000000046),
894 pointer_default(unique)
896 interface ITypeInfo2 : ITypeInfo
898 typedef [unique] ITypeInfo2 *LPTYPEINFO2;
900 HRESULT GetTypeKind(
901 [out] TYPEKIND *pTypeKind);
903 HRESULT GetTypeFlags(
904 [out] ULONG *pTypeFlags);
906 HRESULT GetFuncIndexOfMemId(
907 [in] MEMBERID memid,
908 [in] INVOKEKIND invKind,
909 [out] UINT *pFuncIndex);
911 HRESULT GetVarIndexOfMemId(
912 [in] MEMBERID memid,
913 [out] UINT *pVarIndex);
915 HRESULT GetCustData(
916 [in] REFGUID guid,
917 [out] VARIANT *pVarVal);
919 HRESULT GetFuncCustData(
920 [in] UINT index,
921 [in] REFGUID guid,
922 [out] VARIANT *pVarVal);
924 HRESULT GetParamCustData(
925 [in] UINT indexFunc,
926 [in] UINT indexParam,
927 [in] REFGUID guid,
928 [out] VARIANT *pVarVal);
930 HRESULT GetVarCustData(
931 [in] UINT index,
932 [in] REFGUID guid,
933 [out] VARIANT *pVarVal);
935 HRESULT GetImplTypeCustData(
936 [in] UINT index,
937 [in] REFGUID guid,
938 [out] VARIANT *pVarVal);
940 [local]
941 HRESULT GetDocumentation2(
942 [in] MEMBERID memid,
943 [in] LCID lcid,
944 [out] BSTR *pbstrHelpString,
945 [out] DWORD *pdwHelpStringContext,
946 [out] BSTR *pbstrHelpStringDll);
948 [call_as(GetDocumentation2)]
949 HRESULT RemoteGetDocumentation2(
950 [in] MEMBERID memid,
951 [in] LCID lcid,
952 [in] DWORD refPtrFlags,
953 [out] BSTR *pbstrHelpString,
954 [out] DWORD *pdwHelpStringContext,
955 [out] BSTR *pbstrHelpStringDll);
957 HRESULT GetAllCustData(
958 [out] CUSTDATA *pCustData);
960 HRESULT GetAllFuncCustData(
961 [in] UINT index,
962 [out] CUSTDATA *pCustData);
964 HRESULT GetAllParamCustData(
965 [in] UINT indexFunc,
966 [in] UINT indexParam,
967 [out] CUSTDATA *pCustData);
969 HRESULT GetAllVarCustData(
970 [in] UINT index,
971 [out] CUSTDATA *pCustData);
973 HRESULT GetAllImplTypeCustData(
974 [in] UINT index,
975 [out] CUSTDATA *pCustData);
979 object,
980 uuid(00020402-0000-0000-C000-000000000046),
981 pointer_default(unique)
983 interface ITypeLib : IUnknown
985 typedef [unique] ITypeLib *LPTYPELIB;
987 typedef [v1_enum] enum tagSYSKIND {
988 SYS_WIN16 = 0,
989 SYS_WIN32,
990 SYS_MAC
991 } SYSKIND;
993 typedef [v1_enum] enum tagLIBFLAGS {
994 LIBFLAG_FRESTRICTED = 0x01,
995 LIBFLAG_FCONTROL = 0x02,
996 LIBFLAG_FHIDDEN = 0x04,
997 LIBFLAG_FHASDISKIMAGE = 0x08
998 } LIBFLAGS;
1000 typedef struct tagTLIBATTR {
1001 GUID guid;
1002 LCID lcid;
1003 SYSKIND syskind;
1004 WORD wMajorVerNum;
1005 WORD wMinorVerNum;
1006 WORD wLibFlags;
1007 } TLIBATTR, *LPTLIBATTR;
1009 [local]
1010 UINT GetTypeInfoCount();
1012 [call_as(GetTypeInfoCount)]
1013 HRESULT RemoteGetTypeInfoCount(
1014 [out] UINT *pcTInfo);
1016 HRESULT GetTypeInfo(
1017 [in] UINT index,
1018 [out] ITypeInfo **ppTInfo);
1020 HRESULT GetTypeInfoType(
1021 [in] UINT index,
1022 [out] TYPEKIND *pTKind);
1024 HRESULT GetTypeInfoOfGuid(
1025 [in] REFGUID guid,
1026 [out] ITypeInfo **ppTinfo);
1028 [local]
1029 HRESULT GetLibAttr(
1030 [out] TLIBATTR **ppTLibAttr);
1032 [call_as(GetLibAttr)]
1033 HRESULT RemoteGetLibAttr(
1034 [out] LPTLIBATTR *ppTLibAttr,
1035 [out] CLEANLOCALSTORAGE *pDummy);
1037 HRESULT GetTypeComp(
1038 [out] ITypeComp **ppTComp);
1040 [local]
1041 HRESULT GetDocumentation(
1042 [in] INT index,
1043 [out] BSTR *pBstrName,
1044 [out] BSTR *pBstrDocString,
1045 [out] DWORD *pdwHelpContext,
1046 [out] BSTR *pBstrHelpFile);
1048 [call_as(GetDocumentation)]
1049 HRESULT RemoteGetDocumentation(
1050 [in] INT index,
1051 [in] DWORD refPtrFlags,
1052 [out] BSTR *pBstrName,
1053 [out] BSTR *pBstrDocString,
1054 [out] DWORD *pdwHelpContext,
1055 [out] BSTR *pBstrHelpFile);
1057 [local]
1058 HRESULT IsName(
1059 [in, out] LPOLESTR szNameBuf,
1060 [in] ULONG lHashVal,
1061 [out] BOOL *pfName);
1063 [call_as(IsName)]
1064 HRESULT RemoteIsName(
1065 [in] LPOLESTR szNameBuf,
1066 [in] ULONG lHashVal,
1067 [out] BOOL *pfName,
1068 [out] BSTR *pBstrLibName);
1070 [local]
1071 HRESULT FindName(
1072 [in, out] LPOLESTR szNameBuf,
1073 [in] ULONG lHashVal,
1074 [out, size_is(*pcFound), length_is(*pcFound)] ITypeInfo **ppTInfo,
1075 [out, size_is(*pcFound), length_is(*pcFound)] MEMBERID *rgMemId,
1076 [in, out] USHORT *pcFound);
1078 [call_as(FindName)]
1079 HRESULT RemoteFindName(
1080 [in] LPOLESTR szNameBuf,
1081 [in] ULONG lHashVal,
1082 [out, size_is(*pcFound), length_is(*pcFound)] ITypeInfo **ppTInfo,
1083 [out, size_is(*pcFound), length_is(*pcFound)] MEMBERID *rgMemId,
1084 [in, out] USHORT *pcFound,
1085 [out] BSTR *pBstrLibName);
1087 [local]
1088 void ReleaseTLibAttr(
1089 [in] TLIBATTR *pTLibAttr);
1091 [call_as(ReleaseTLibAttr)]
1092 HRESULT LocalReleaseTLibAttr();
1096 object,
1097 uuid(00020411-0000-0000-C000-000000000046),
1098 pointer_default(unique)
1100 interface ITypeLib2 : ITypeLib
1102 typedef [unique] ITypeLib2 *LPTYPELIB2;
1104 HRESULT GetCustData(
1105 [in] REFGUID guid,
1106 [out] VARIANT *pVarVal);
1108 [local]
1109 HRESULT GetLibStatistics(
1110 [out] ULONG *pcUniqueNames,
1111 [out] ULONG *pcchUniqueNames);
1113 [call_as(GetLibStatistics)]
1114 HRESULT RemoteGetLibStatistics(
1115 [out] ULONG *pcUniqueNames,
1116 [out] ULONG *pcchUniqueNames);
1118 [local]
1119 HRESULT GetDocumentation2(
1120 [in] INT index,
1121 [in] LCID lcid,
1122 [out] BSTR *pbstrHelpString,
1123 [out] DWORD *pdwHelpStringContext,
1124 [out] BSTR *pbstrHelpStringDll);
1126 [call_as(GetDocumentation2)]
1127 HRESULT RemoteGetDocumentation2(
1128 [in] INT index,
1129 [in] LCID lcid,
1130 [in] DWORD refPtrFlags,
1131 [out] BSTR *pbstrHelpString,
1132 [out] DWORD *pdwHelpStringContext,
1133 [out] BSTR *pbstrHelpStringDll);
1135 HRESULT GetAllCustData(
1136 [out] CUSTDATA *pCustData);
1140 local,
1141 object,
1142 uuid(00020410-0000-0000-C000-000000000046),
1143 pointer_default(unique)
1145 interface ITypeChangeEvents : IUnknown
1147 typedef [unique] ITypeChangeEvents *LPTYPECHANGEEVENTS;
1149 typedef enum tagCHANGEKIND {
1150 CHANGEKIND_ADDMEMBER,
1151 CHANGEKIND_DELETEMEMBER,
1152 CHANGEKIND_SETNAMES,
1153 CHANGEKIND_SETDOCUMENTATION,
1154 CHANGEKIND_GENERAL,
1155 CHANGEKIND_INVALIDATE,
1156 CHANGEKIND_CHANGEFAILED,
1157 CHANGEKIND_MAX
1158 } CHANGEKIND;
1160 HRESULT RequestTypeChange(
1161 [in] CHANGEKIND changeKind,
1162 [in] ITypeInfo *pTInfoBefore,
1163 [in] LPOLESTR pStrName,
1164 [out] INT *pfCancel);
1166 HRESULT AfterTypeChange(
1167 [in] CHANGEKIND changeKind,
1168 [in] ITypeInfo *pTInfoAfter,
1169 [in] LPOLESTR pStrName);
1173 object,
1174 uuid(1CF2B120-547D-101B-8E65-08002B2BD119),
1175 pointer_default(unique)
1177 interface IErrorInfo : IUnknown
1179 typedef [unique] IErrorInfo *LPERRORINFO;
1181 HRESULT GetGUID(
1182 [out] GUID *pGUID);
1184 HRESULT GetSource(
1185 [out] BSTR *pBstrSource);
1187 HRESULT GetDescription(
1188 [out] BSTR *pBstrDescription);
1190 HRESULT GetHelpFile(
1191 [out] BSTR *pBstrHelpFile);
1193 HRESULT GetHelpContext(
1194 [out] DWORD *pdwHelpContext);
1198 object,
1199 uuid(22F03340-547D-101B-8E65-08002B2BD119),
1200 pointer_default(unique)
1202 interface ICreateErrorInfo : IUnknown
1204 typedef [unique] ICreateErrorInfo *LPCREATEERRORINFO;
1206 HRESULT SetGUID(
1207 [in] REFGUID rguid);
1209 HRESULT SetSource(
1210 [in] LPOLESTR szSource);
1212 HRESULT SetDescription(
1213 [in] LPOLESTR szDescription);
1215 HRESULT SetHelpFile(
1216 [in] LPOLESTR szHelpFile);
1218 HRESULT SetHelpContext(
1219 [in] DWORD dwHelpContext);
1223 object,
1224 uuid(DF0B3D60-548F-101B-8E65-08002B2BD119),
1225 pointer_default(unique)
1227 interface ISupportErrorInfo : IUnknown
1229 typedef [unique] ISupportErrorInfo *LPSUPPORTERRORINFO;
1231 HRESULT InterfaceSupportsErrorInfo(
1232 [in] REFIID riid);
1236 object,
1237 uuid(0000002E-0000-0000-C000-000000000046)
1239 interface ITypeFactory : IUnknown
1241 HRESULT CreateFromTypeInfo(
1242 [in] ITypeInfo *pTypeInfo,
1243 [in] REFIID riid,
1244 [out, iid_is(riid)] IUnknown **ppv);
1248 local,
1249 object,
1250 uuid(0000002D-0000-0000-C000-000000000046)
1252 interface ITypeMarshal : IUnknown
1254 HRESULT Size(
1255 [in] PVOID pvType,
1256 [in] DWORD dwDestContext,
1257 [in] PVOID pvDestContext,
1258 [out] ULONG *pSize);
1260 HRESULT Marshal(
1261 [in] PVOID pvType,
1262 [in] DWORD dwDestContext,
1263 [in] PVOID pvDestContext,
1264 [in] ULONG cbBufferLength,
1265 [out] BYTE *pBuffer,
1266 [out] ULONG *pcbWritten);
1268 HRESULT Unmarshal(
1269 [out] PVOID pvType,
1270 [in] DWORD dwFlags,
1271 [in] ULONG cbBufferLength,
1272 [in] BYTE *pBuffer,
1273 [out] ULONG *pcbRead);
1275 HRESULT Free(
1276 [in] PVOID pvType);
1280 local,
1281 object,
1282 uuid(0000002F-0000-0000-C000-000000000046)
1284 interface IRecordInfo : IUnknown
1286 typedef [unique] IRecordInfo *LPRECORDINFO;
1288 HRESULT RecordInit(
1289 [out] PVOID pvNew);
1291 HRESULT RecordClear(
1292 [in] PVOID pvExisting);
1294 HRESULT RecordCopy(
1295 [in] PVOID pvExisting,
1296 [out] PVOID pvNew);
1298 HRESULT GetGuid(
1299 [out] GUID *pguid);
1301 HRESULT GetName(
1302 [out] BSTR *pbstrName);
1304 HRESULT GetSize(
1305 [out] ULONG *pcbSize);
1307 HRESULT GetTypeInfo(
1308 [out] ITypeInfo **ppTypeInfo);
1310 HRESULT GetField(
1311 [in] PVOID pvData,
1312 [in] LPCOLESTR szFieldName,
1313 [out] VARIANT *pvarField);
1315 HRESULT GetFieldNoCopy(
1316 [in] PVOID pvData,
1317 [in] LPCOLESTR szFieldName,
1318 [out] VARIANT *pvarField,
1319 [out] PVOID *ppvDataCArray);
1321 HRESULT PutField(
1322 [in] ULONG wFlags,
1323 [in, out] PVOID pvData,
1324 [in] LPCOLESTR szFieldName,
1325 [in] VARIANT *pvarField);
1327 HRESULT PutFieldNoCopy(
1328 [in] ULONG wFlags,
1329 [in, out] PVOID pvData,
1330 [in] LPCOLESTR szFieldName,
1331 [in] VARIANT *pvarField);
1333 HRESULT GetFieldNames(
1334 [in, out] ULONG *pcNames,
1335 [out, size_is(*pcNames), length_is(*pcNames)] BSTR *rgBstrNames);
1337 BOOL IsMatchingType(
1338 [in] IRecordInfo *pRecordInfo);
1340 PVOID RecordCreate();
1342 HRESULT RecordCreateCopy(
1343 [in] PVOID pvSource,
1344 [out] PVOID *ppvDest);
1346 HRESULT RecordDestroy(
1347 [in] PVOID pvRecord);
1351 local,
1352 object,
1353 uuid(00020405-0000-0000-C000-000000000046),
1354 pointer_default(unique)
1356 interface ICreateTypeInfo : IUnknown
1358 typedef [unique] ICreateTypeInfo *LPCREATETYPEINFO;
1360 HRESULT SetGuid(
1361 [in] REFGUID guid);
1363 HRESULT SetTypeFlags(
1364 [in] UINT uTypeFlags);
1366 HRESULT SetDocString(
1367 [in] LPOLESTR pStrDoc);
1369 HRESULT SetHelpContext(
1370 [in] DWORD dwHelpContext);
1372 HRESULT SetVersion(
1373 [in] WORD wMajorVerNum,
1374 [in] WORD wMinorVerNum);
1376 HRESULT AddRefTypeInfo(
1377 [in] ITypeInfo *pTInfo,
1378 [in] HREFTYPE *phRefType);
1380 HRESULT AddFuncDesc(
1381 [in] UINT index,
1382 [in] FUNCDESC *pFuncDesc);
1384 HRESULT AddImplType(
1385 [in] UINT index,
1386 [in] HREFTYPE hRefType);
1388 HRESULT SetImplTypeFlags(
1389 [in] UINT index,
1390 [in] INT implTypeFlags);
1392 HRESULT SetAlignment(
1393 [in] WORD cbAlignment);
1395 HRESULT SetSchema(
1396 [in] LPOLESTR pStrSchema);
1398 HRESULT AddVarDesc(
1399 [in] UINT index,
1400 [in] VARDESC *pVarDesc);
1402 HRESULT SetFuncAndParamNames(
1403 [in] UINT index,
1404 [in, size_is(cNames)] LPOLESTR *rgszNames,
1405 [in] UINT cNames);
1407 HRESULT SetVarName(
1408 [in] UINT index,
1409 [in] LPOLESTR szName);
1411 HRESULT SetTypeDescAlias(
1412 [in] TYPEDESC *pTDescAlias);
1414 HRESULT DefineFuncAsDllEntry(
1415 [in] UINT index,
1416 [in] LPOLESTR szDllName,
1417 [in] LPOLESTR szProcName);
1419 HRESULT SetFuncDocString(
1420 [in] UINT index,
1421 [in] LPOLESTR szDocString);
1423 HRESULT SetVarDocString(
1424 [in] UINT index,
1425 [in] LPOLESTR szDocString);
1427 HRESULT SetFuncHelpContext(
1428 [in] UINT index,
1429 [in] DWORD dwHelpContext);
1431 HRESULT SetVarHelpContext(
1432 [in] UINT index,
1433 [in] DWORD dwHelpContext);
1435 HRESULT SetMops(
1436 [in] UINT index,
1437 [in] BSTR bstrMops);
1439 HRESULT SetTypeIdldesc(
1440 [in] IDLDESC * pIdlDesc);
1442 HRESULT LayOut();
1446 local,
1447 object,
1448 uuid(0002040E-0000-0000-C000-000000000046),
1449 pointer_default(unique)
1451 interface ICreateTypeInfo2 : ICreateTypeInfo
1453 typedef [unique] ICreateTypeInfo2 *LPCREATETYPEINFO2;
1455 HRESULT DeleteFuncDesc(
1456 [in] UINT index);
1458 HRESULT DeleteFuncDescByMemId(
1459 [in] MEMBERID memid,
1460 [in] INVOKEKIND invKind);
1462 HRESULT DeleteVarDesc(
1463 [in] UINT index);
1465 HRESULT DeleteVarDescByMemId(
1466 [in] MEMBERID memid);
1468 HRESULT DeleteImplType(
1469 [in] UINT index);
1471 HRESULT SetCustData(
1472 [in] REFGUID guid,
1473 [in] VARIANT *pVarVal);
1475 HRESULT SetFuncCustData(
1476 [in] UINT index,
1477 [in] REFGUID guid,
1478 [in] VARIANT *pVarVal);
1480 HRESULT SetParamCustData(
1481 [in] UINT indexFunc,
1482 [in] UINT indexParam,
1483 [in] REFGUID guid,
1484 [in] VARIANT *pVarVal);
1486 HRESULT SetVarCustData(
1487 [in] UINT index,
1488 [in] REFGUID guid,
1489 [in] VARIANT *pVarVal);
1491 HRESULT SetImplTypeCustData(
1492 [in] UINT index,
1493 [in] REFGUID guid,
1494 [in] VARIANT *pVarVal);
1496 HRESULT SetHelpStringContext(
1497 [in] ULONG dwHelpStringContext);
1499 HRESULT SetFuncHelpStringContext(
1500 [in] UINT index,
1501 [in] ULONG dwHelpStringContext);
1503 HRESULT SetVarHelpStringContext(
1504 [in] UINT index,
1505 [in] ULONG dwHelpStringContext);
1507 HRESULT Invalidate();
1509 HRESULT SetName(
1510 [in] LPOLESTR szName);
1514 local,
1515 object,
1516 uuid(00020406-0000-0000-C000-000000000046),
1517 pointer_default(unique)
1519 interface ICreateTypeLib : IUnknown
1521 typedef [unique] ICreateTypeLib *LPCREATETYPELIB;
1523 HRESULT CreateTypeInfo(
1524 [in] LPOLESTR szName,
1525 [in] TYPEKIND tkind,
1526 [out] ICreateTypeInfo **ppCTInfo);
1528 HRESULT SetName(
1529 [in] LPOLESTR szName);
1531 HRESULT SetVersion(
1532 [in] WORD wMajorVerNum,
1533 [in] WORD wMinorVerNum);
1535 HRESULT SetGuid(
1536 [in] REFGUID guid);
1538 HRESULT SetDocString(
1539 [in] LPOLESTR szDoc);
1541 HRESULT SetHelpFileName(
1542 [in] LPOLESTR szHelpFileName);
1544 HRESULT SetHelpContext(
1545 [in] DWORD dwHelpContext);
1547 HRESULT SetLcid(
1548 [in] LCID lcid);
1550 HRESULT SetLibFlags(
1551 [in] UINT uLibFlags);
1553 HRESULT SaveAllChanges();
1557 local,
1558 object,
1559 uuid(0002040F-0000-0000-C000-000000000046),
1560 pointer_default(unique)
1562 interface ICreateTypeLib2 : ICreateTypeLib
1564 typedef [unique] ICreateTypeLib2 *LPCREATETYPELIB2;
1566 HRESULT DeleteTypeInfo(
1567 [in] LPOLESTR szName);
1569 HRESULT SetCustData(
1570 [in] REFGUID guid,
1571 [in] VARIANT *pVarVal);
1573 HRESULT SetHelpStringContext(
1574 [in] ULONG dwHelpStringContext);
1576 HRESULT SetHelpStringDll(
1577 [in] LPOLESTR szFileName);
1581 /*****************************************************************************
1582 * IErrorLog interface
1585 object,
1586 uuid(3127ca40-446e-11ce-8135-00aa004bb851),
1587 pointer_default(unique)
1589 interface IErrorLog : IUnknown
1591 typedef IErrorLog *LPERRORLOG;
1593 HRESULT AddError(
1594 [in] LPCOLESTR pszPropName,
1595 [in] EXCEPINFO *pExcepInfo);
1599 /*****************************************************************************
1600 * IPropertyBag interface
1603 object,
1604 uuid(55272a00-42cb-11ce-8135-00aa004bb851),
1605 pointer_default(unique)
1607 interface IPropertyBag : IUnknown
1609 typedef IPropertyBag *LPPROPERTYBAG;
1611 [local]
1612 HRESULT Read(
1613 [in] LPCOLESTR pszPropName,
1614 [in, out] VARIANT *pVar,
1615 [in] IErrorLog *pErrorLog);
1617 [call_as(Read)]
1618 HRESULT RemoteRead(
1619 [in] LPCOLESTR pszPropName,
1620 [out] VARIANT *pVar,
1621 [in] IErrorLog *pErrorLog,
1622 [in] DWORD varType,
1623 [in] IUnknown *pUnkObj);
1625 HRESULT Write(
1626 [in] LPCOLESTR pszPropName,
1627 [in] VARIANT *pVar);