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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
26 interface IRecordInfo;
30 pointer_default(unique)
32 interface IOleAutomationTypes
39 typedef struct tagSAFEARRAYBOUND {
42 } SAFEARRAYBOUND, *LPSAFEARRAYBOUND;
44 typedef [unique] struct _wireVARIANT *wireVARIANT;
45 typedef [unique] struct _wireBRECORD *wireBRECORD;
47 typedef struct _wireSAFEARR_BSTR {
49 [size_is(Size), ref] wireBSTR *aBstr;
52 typedef struct _wireSAFEARR_UNKNOWN {
54 [size_is(Size), ref] IUnknown **apUnknown;
57 typedef struct _wireSAFEARR_DISPATCH {
59 [size_is(Size), ref] IDispatch **apDispatch;
62 typedef struct _wireSAFEARR_VARIANT {
64 [size_is(Size), ref] wireVARIANT *aVariant;
67 typedef struct _wireSAFEARR_BRECORD {
69 [size_is(Size), ref] wireBRECORD *aRecord;
72 typedef struct _wireSAFEARR_HAVEIID {
74 [size_is(Size), ref] IUnknown **apUnknown;
78 typedef [v1_enum] enum tagSF_TYPE {
85 SF_UNKNOWN = VT_UNKNOWN,
86 SF_DISPATCH = VT_DISPATCH,
87 SF_VARIANT = VT_VARIANT,
88 SF_RECORD = VT_RECORD,
89 SF_HAVEIID = VT_UNKNOWN|VT_RESERVED,
92 typedef union _wireSAFEARRAY_UNION switch(ULONG sfType) u {
93 case SF_BSTR: SAFEARR_BSTR BstrStr;
94 case SF_UNKNOWN: SAFEARR_UNKNOWN UnknownStr;
95 case SF_DISPATCH: SAFEARR_DISPATCH DispatchStr;
96 case SF_VARIANT: SAFEARR_VARIANT VariantStr;
97 case SF_RECORD: SAFEARR_BRECORD RecordStr;
98 case SF_HAVEIID: SAFEARR_HAVEIID HaveIidStr;
99 case SF_I1: BYTE_SIZEDARR ByteStr;
100 case SF_I2: WORD_SIZEDARR WordStr;
101 case SF_I4: DWORD_SIZEDARR LongStr;
102 case SF_I8: HYPER_SIZEDARR HyperStr;
105 typedef [unique] struct _wireSAFEARRAY {
110 SAFEARRAYUNION uArrayStructs;
111 [size_is(cDims)] SAFEARRAYBOUND rgsabound[];
114 typedef [unique] wireSAFEARRAY *wirePSAFEARRAY;
116 typedef struct tagSAFEARRAY {
122 SAFEARRAYBOUND rgsabound[];
125 typedef [wire_marshal(wirePSAFEARRAY)] SAFEARRAY *LPSAFEARRAY;
127 const USHORT FADF_AUTO = 0x0001;
128 const USHORT FADF_STATIC = 0x0002;
129 const USHORT FADF_EMBEDDED = 0x0004;
130 const USHORT FADF_FIXEDSIZE = 0x0010;
131 const USHORT FADF_RECORD = 0x0020;
132 const USHORT FADF_HAVEIID = 0x0040;
133 const USHORT FADF_HAVEVARTYPE = 0x0080;
134 const USHORT FADF_BSTR = 0x0100;
135 const USHORT FADF_UNKNOWN = 0x0200;
136 const USHORT FADF_DISPATCH = 0x0400;
137 const USHORT FADF_VARIANT = 0x0800;
138 const USHORT FADF_RESERVED = 0xF008;
139 /* Undocumented flags */
140 const USHORT FADF_DATADELETED = 0x1000; /* Data in a vector has been deleted */
141 const USHORT FADF_CREATEVECTOR = 0x2000; /* This array is a vector */
145 cpp_quote("#if (__STDC__ && !defined(_FORCENAMELESSUNION)) || defined(NONAMELESSUNION)")
146 cpp_quote("#define __VARIANT_NAME_1 n1")
147 cpp_quote("#define __VARIANT_NAME_2 n2")
148 cpp_quote("#define __VARIANT_NAME_3 n3")
149 cpp_quote("#define __VARIANT_NAME_4 brecVal")
151 cpp_quote("#define __tagVARIANT")
152 cpp_quote("#define __VARIANT_NAME_1")
153 cpp_quote("#define __VARIANT_NAME_2")
154 cpp_quote("#define __VARIANT_NAME_3")
155 cpp_quote("#define __tagBRECORD")
156 cpp_quote("#define __VARIANT_NAME_4")
159 typedef [wire_marshal(wireVARIANT)] struct tagVARIANT VARIANT;
163 struct __tagVARIANT {
179 VARIANT_BOOL boolVal;
180 #if 0 /* illegal in C++ */
202 VARIANT_BOOL *pboolVal;
204 _VARIANT_BOOL *pbool;
214 IDispatch **ppdispVal;
218 struct __tagBRECORD {
220 IRecordInfo *pRecInfo;
229 typedef VARIANT *LPVARIANT;
230 typedef VARIANT VARIANTARG;
231 typedef VARIANTARG *LPVARIANTARG;
234 typedef const VARIANT *REFVARIANT;
235 cpp_quote("#elif !defined(_REFVARIANT_DEFINED)")
236 cpp_quote("#define _REFVARIANT_DEFINED")
237 cpp_quote("#ifdef __cplusplus")
238 cpp_quote("#define REFVARIANT const VARIANT &")
240 cpp_quote("#define REFVARIANT const VARIANT *__MIDL_CONST")
244 struct _wireBRECORD {
247 IRecordInfo *pRecInfo;
248 [size_is(clSize)] byte *pRecord;
251 struct _wireVARIANT {
258 [switch_is(vt)] union {
259 [case(VT_EMPTY, VT_NULL)] ;
260 [case(VT_I1)] signed char cVal;
261 [case(VT_UI2)] USHORT uiVal;
262 [case(VT_UI4)] ULONG ulVal;
263 [case(VT_INT)] INT intVal;
264 [case(VT_UINT)] UINT uintVal;
265 [case(VT_UI1)] BYTE bVal;
266 [case(VT_I2)] SHORT iVal;
267 [case(VT_I4)] LONG lVal;
268 [case(VT_R4)] FLOAT fltVal;
269 [case(VT_R8)] DOUBLE dblVal;
270 [case(VT_BOOL)] VARIANT_BOOL boolVal;
271 [case(VT_ERROR)] SCODE scode;
272 [case(VT_DATE)] DATE date;
273 [case(VT_BSTR)] wireBSTR bstrVal;
274 [case(VT_CY)] CY cyVal;
275 [case(VT_DECIMAL)] DECIMAL decVal;
276 [case(VT_UNKNOWN)] IUnknown *punkVal;
277 [case(VT_DISPATCH)] IDispatch *pdispVal;
278 [case(VT_ARRAY)] wireSAFEARRAY parray;
279 [case(VT_I1|VT_BYREF)] signed char *pcVal;
280 [case(VT_UI2|VT_BYREF)] USHORT *puiVal;
281 [case(VT_UI4|VT_BYREF)] ULONG *pulVal;
282 [case(VT_INT|VT_BYREF)] INT *pintVal;
283 [case(VT_UINT|VT_BYREF)] UINT *puintVal;
284 [case(VT_UI1|VT_BYREF)] BYTE *pbVal;
285 [case(VT_I2|VT_BYREF)] SHORT *piVal;
286 [case(VT_I4|VT_BYREF)] LONG *plVal;
287 [case(VT_R4|VT_BYREF)] FLOAT *pfltVal;
288 [case(VT_R8|VT_BYREF)] DOUBLE *pdblVal;
289 [case(VT_BOOL|VT_BYREF)] VARIANT_BOOL *pboolVal;
290 [case(VT_ERROR|VT_BYREF)] SCODE *pscode;
291 [case(VT_DATE|VT_BYREF)] DATE *pdate;
292 [case(VT_BSTR|VT_BYREF)] wireBSTR *pbstrVal;
293 [case(VT_VARIANT|VT_BYREF)] wireVARIANT *pvarVal;
294 [case(VT_CY|VT_BYREF)] CY *pcyVal;
295 [case(VT_DECIMAL|VT_BYREF)] DECIMAL *pdecVal;
296 [case(VT_UNKNOWN|VT_BYREF)] IUnknown **ppunkVal;
297 [case(VT_DISPATCH|VT_BYREF)] IDispatch **ppdispVal;
298 [case(VT_ARRAY|VT_BYREF)] wireSAFEARRAY *pparray;
299 [case(VT_RECORD, VT_RECORD|VT_BYREF)] wireBRECORD brecVal;
306 typedef DWORD HREFTYPE;
307 typedef DISPID MEMBERID;
309 typedef [v1_enum] enum tagTYPEKIND {
321 typedef struct tagTYPEDESC {
322 [switch_is(vt)] union {
323 [case(VT_PTR, VT_SAFEARRAY)] struct tagTYPEDESC *lptdesc;
324 [case(VT_CARRAY)] struct tagARRAYDESC *lpadesc;
325 [case(VT_USERDEFINED)] HREFTYPE hreftype;
331 typedef struct tagARRAYDESC {
334 [size_is(cDims)] SAFEARRAYBOUND rgbounds[];
337 typedef struct tagPARAMDESCEX {
339 VARIANTARG varDefaultValue;
340 } PARAMDESCEX, *LPPARAMDESCEX;
342 typedef struct tagPARAMDESC {
343 LPPARAMDESCEX pparamdescex;
345 } PARAMDESC, *LPPARAMDESC;
347 const USHORT PARAMFLAG_NONE = 0x00;
348 const USHORT PARAMFLAG_FIN = 0x01;
349 const USHORT PARAMFLAG_FOUT = 0x02;
350 const USHORT PARAMFLAG_FLCID = 0x04;
351 const USHORT PARAMFLAG_FRETVAL = 0x08;
352 const USHORT PARAMFLAG_FOPT = 0x10;
353 const USHORT PARAMFLAG_FHASDEFAULT = 0x20;
354 const USHORT PARAMFLAG_FHASCUSTDATA = 0x40;
356 typedef struct tagIDLDESC {
357 ULONG_PTR dwReserved;
359 } IDLDESC, *LPIDLDESC;
361 const USHORT IDLFLAG_NONE = PARAMFLAG_NONE;
362 const USHORT IDLFLAG_FIN = PARAMFLAG_FIN;
363 const USHORT IDLFLAG_FOUT = PARAMFLAG_FOUT;
364 const USHORT IDLFLAG_FLCID = PARAMFLAG_FLCID;
365 const USHORT IDLFLAG_FRETVAL = PARAMFLAG_FRETVAL;
367 cpp_quote("#if 0") /* for IDL only */
368 typedef struct tagELEMDESC {
372 cpp_quote("#else") /* C/C++ defs */
373 cpp_quote("typedef struct tagELEMDESC {")
374 cpp_quote(" TYPEDESC tdesc;")
375 cpp_quote(" union {")
376 cpp_quote(" IDLDESC idldesc;")
377 cpp_quote(" PARAMDESC paramdesc;")
378 cpp_quote(" } DUMMYUNIONNAME;")
379 cpp_quote("} ELEMDESC, *LPELEMDESC;")
382 typedef struct tagTYPEATTR {
386 MEMBERID memidConstructor;
387 MEMBERID memidDestructor;
388 LPOLESTR lpstrSchema;
389 ULONG cbSizeInstance;
401 } TYPEATTR, *LPTYPEATTR;
403 typedef struct tagDISPPARAMS {
404 [size_is(cArgs)] VARIANTARG *rgvarg;
405 [size_is(cNamedArgs)] DISPID *rgdispidNamedArgs;
410 cpp_quote("#if 0") /* for IDL only */
411 typedef struct tagEXCEPINFO {
415 BSTR bstrDescription;
418 ULONG_PTR pvReserved;
419 ULONG_PTR pfnDeferredFillIn;
423 cpp_quote("typedef struct tagEXCEPINFO {")
424 cpp_quote(" WORD wCode;")
425 cpp_quote(" WORD wReserved;")
426 cpp_quote(" BSTR bstrSource;")
427 cpp_quote(" BSTR bstrDescription;")
428 cpp_quote(" BSTR bstrHelpFile;")
429 cpp_quote(" DWORD dwHelpContext;")
430 cpp_quote(" PVOID pvReserved;")
431 cpp_quote(" HRESULT (__stdcall *pfnDeferredFillIn)(struct tagEXCEPINFO *);")
432 cpp_quote(" SCODE scode;")
433 cpp_quote("} EXCEPINFO, *LPEXCEPINFO;")
436 typedef [v1_enum] enum tagCALLCONV {
440 CC_PASCAL = CC_MSCPASCAL,
450 typedef [v1_enum] enum tagFUNCKIND {
458 typedef [v1_enum] enum tagINVOKEKIND {
460 INVOKE_PROPERTYGET = 2,
461 INVOKE_PROPERTYPUT = 4,
462 INVOKE_PROPERTYPUTREF = 8
465 typedef struct tagFUNCDESC {
467 [size_is(cScodes)] SCODE *lprgscode;
468 [size_is(cParams)] ELEMDESC *lprgelemdescParam;
476 ELEMDESC elemdescFunc;
478 } FUNCDESC, *LPFUNCDESC;
480 typedef [v1_enum] enum tagVARKIND {
487 const USHORT IMPLTYPEFLAG_FDEFAULT = 0x1;
488 const USHORT IMPLTYPEFLAG_FSOURCE = 0x2;
489 const USHORT IMPLTYPEFLAG_FRESTRICTED = 0x4;
490 const USHORT IMPLTYPEFLAG_FDEFAULTVTABLE = 0x8;
492 typedef struct tagVARDESC {
494 LPOLESTR lpstrSchema;
495 [switch_is(varkind)] union {
496 [case(VAR_PERINSTANCE, VAR_DISPATCH, VAR_STATIC)] ULONG oInst;
497 [case(VAR_CONST)] VARIANT *lpvarValue;
499 ELEMDESC elemdescVar;
502 } VARDESC, *LPVARDESC;
504 typedef enum tagTYPEFLAGS {
505 TYPEFLAG_FAPPOBJECT = 0x0001,
506 TYPEFLAG_FCANCREATE = 0x0002,
507 TYPEFLAG_FLICENSED = 0x0004,
508 TYPEFLAG_FPREDECLID = 0x0008,
509 TYPEFLAG_FHIDDEN = 0x0010,
510 TYPEFLAG_FCONTROL = 0x0020,
511 TYPEFLAG_FDUAL = 0x0040,
512 TYPEFLAG_FNONEXTENSIBLE = 0x0080,
513 TYPEFLAG_FOLEAUTOMATION = 0x0100,
514 TYPEFLAG_FRESTRICTED = 0x0200,
515 TYPEFLAG_FAGGREGATABLE = 0x0400,
516 TYPEFLAG_FREPLACEABLE = 0x0800,
517 TYPEFLAG_FDISPATCHABLE = 0x1000,
518 TYPEFLAG_FREVERSEBIND = 0x2000,
519 TYPEFLAG_FPROXY = 0x4000
522 typedef enum tagFUNCFLAGS {
523 FUNCFLAG_FRESTRICTED = 0x0001,
524 FUNCFLAG_FSOURCE = 0x0002,
525 FUNCFLAG_FBINDABLE = 0x0004,
526 FUNCFLAG_FREQUESTEDIT = 0x0008,
527 FUNCFLAG_FDISPLAYBIND = 0x0010,
528 FUNCFLAG_FDEFAULTBIND = 0x0020,
529 FUNCFLAG_FHIDDEN = 0x0040,
530 FUNCFLAG_FUSESGETLASTERROR = 0x0080,
531 FUNCFLAG_FDEFAULTCOLLELEM = 0x0100,
532 FUNCFLAG_FUIDEFAULT = 0x0200,
533 FUNCFLAG_FNONBROWSABLE = 0x0400,
534 FUNCFLAG_FREPLACEABLE = 0x0800,
535 FUNCFLAG_FIMMEDIATEBIND = 0x1000
538 typedef enum tagVARFLAGS {
539 VARFLAG_FREADONLY = 0x0001,
540 VARFLAG_FSOURCE = 0x0002,
541 VARFLAG_FBINDABLE = 0x0004,
542 VARFLAG_FREQUESTEDIT = 0x0008,
543 VARFLAG_FDISPLAYBIND = 0x0010,
544 VARFLAG_FDEFAULTBIND = 0x0020,
545 VARFLAG_FHIDDEN = 0x0040,
546 VARFLAG_FRESTRICTED = 0x0080,
547 VARFLAG_FDEFAULTCOLLELEM = 0x0100,
548 VARFLAG_FUIDEFAULT = 0x0200,
549 VARFLAG_FNONBROWSABLE = 0x0400,
550 VARFLAG_FREPLACEABLE = 0x0800,
551 VARFLAG_FIMMEDIATEBIND = 0x1000
554 typedef [wire_marshal(DWORD)] struct tagCLEANLOCALSTORAGE {
555 IUnknown *pInterface;
560 typedef struct tagCUSTDATAITEM {
563 } CUSTDATAITEM, *LPCUSTDATAITEM;
565 typedef struct tagCUSTDATA {
567 [size_is(cCustData)] LPCUSTDATAITEM prgCustData;
568 } CUSTDATA, *LPCUSTDATA;
570 } /* interface IOleAutomationTypes */
572 /******************** INTERFACES ********************/
576 uuid(00020400-0000-0000-C000-000000000046),
577 pointer_default(unique)
579 interface IDispatch : IUnknown
581 typedef [unique] IDispatch *LPDISPATCH;
583 const DISPID DISPID_UNKNOWN = -1;
584 const DISPID DISPID_VALUE = 0;
585 const DISPID DISPID_PROPERTYPUT = -3;
586 const DISPID DISPID_NEWENUM = -4;
587 const DISPID DISPID_EVALUATE = -5;
588 const DISPID DISPID_CONSTRUCTOR = -6;
589 const DISPID DISPID_DESTRUCTOR = -7;
590 const DISPID DISPID_COLLECT = -8;
592 HRESULT GetTypeInfoCount(
593 [out] UINT *pctinfo);
598 [out] ITypeInfo **ppTInfo);
600 HRESULT GetIDsOfNames(
602 [in, size_is(cNames)] LPOLESTR *rgszNames,
605 [out, size_is(cNames)] DISPID *rgDispId);
609 [in] DISPID dispIdMember,
613 [in, out] DISPPARAMS *pDispParams,
614 [out] VARIANT *pVarResult,
615 [out] EXCEPINFO *pExcepInfo,
616 [out] UINT *puArgErr);
619 HRESULT RemoteInvoke(
620 [in] DISPID dispIdMember,
624 [in] DISPPARAMS *pDispParams,
625 [out] VARIANT *pVarResult,
626 [out] EXCEPINFO *pExcepInfo,
629 [in, size_is(cVarRef)] UINT *rgVarRefIdx,
630 [in, out, size_is(cVarRef)] VARIANTARG *rgVarRef);
635 uuid(00020404-0000-0000-C000-000000000046),
636 pointer_default(unique)
638 interface IEnumVARIANT : IUnknown
640 typedef [unique] IEnumVARIANT *LPENUMVARIANT;
645 [out] VARIANT *rgVar,
646 [out] ULONG *pCeltFetched);
651 [out, size_is(celt), length_is(*pCeltFetched)]
653 [out] ULONG *pCeltFetched);
661 [out] IEnumVARIANT **ppEnum);
666 uuid(00020403-0000-0000-C000-000000000046),
667 pointer_default(unique)
669 interface ITypeComp : IUnknown
671 typedef [unique] ITypeComp *LPTYPECOMP;
673 typedef [v1_enum] enum tagDESCKIND {
678 DESCKIND_IMPLICITAPPOBJ,
682 typedef union tagBINDPTR {
683 FUNCDESC *lpfuncdesc;
686 } BINDPTR, *LPBINDPTR;
690 [in] LPOLESTR szName,
693 [out] ITypeInfo **ppTInfo,
694 [out] DESCKIND *pDescKind,
695 [out] BINDPTR *pBindPtr);
699 [in] LPOLESTR szName,
702 [out] ITypeInfo **ppTInfo,
703 [out] DESCKIND *pDescKind,
704 [out] LPFUNCDESC *ppFuncDesc,
705 [out] LPVARDESC *ppVarDesc,
706 [out] ITypeComp **ppTypeComp,
707 [out] CLEANLOCALSTORAGE *pDummy);
711 [in] LPOLESTR szName,
713 [out] ITypeInfo **ppTInfo,
714 [out] ITypeComp **ppTComp);
717 HRESULT RemoteBindType(
718 [in] LPOLESTR szName,
720 [out] ITypeInfo **ppTInfo);
725 uuid(00020401-0000-0000-C000-000000000046),
726 pointer_default(unique)
728 interface ITypeInfo : IUnknown
730 typedef [unique] ITypeInfo *LPTYPEINFO;
734 [out] TYPEATTR **ppTypeAttr);
736 [call_as(GetTypeAttr)]
737 HRESULT RemoteGetTypeAttr(
738 [out] LPTYPEATTR *ppTypeAttr,
739 [out] CLEANLOCALSTORAGE *pDummy);
742 [out] ITypeComp **ppTComp);
747 [out] FUNCDESC **ppFuncDesc);
749 [call_as(GetFuncDesc)]
750 HRESULT RemoteGetFuncDesc(
752 [out] LPFUNCDESC *ppFuncDesc,
753 [out] CLEANLOCALSTORAGE *pDummy);
758 [out] VARDESC **ppVarDesc);
760 [call_as(GetVarDesc)]
761 HRESULT RemoteGetVarDesc(
763 [out] LPVARDESC *ppVarDesc,
764 [out] CLEANLOCALSTORAGE *pDummy);
769 [out, size_is(cMaxNames), length_is(*pcNames)] BSTR *rgBstrNames,
771 [out] UINT *pcNames);
774 HRESULT RemoteGetNames(
776 [out, size_is(cMaxNames), length_is(*pcNames)] BSTR *rgBstrNames,
778 [out] UINT *pcNames);
780 HRESULT GetRefTypeOfImplType(
782 [out] HREFTYPE *pRefType);
784 HRESULT GetImplTypeFlags(
786 [out] INT *pImplTypeFlags);
789 HRESULT GetIDsOfNames(
790 [in, size_is(cNames)] LPOLESTR *rgszNames,
792 [out, size_is(cNames)] MEMBERID *pMemId);
794 [call_as(GetIDsOfNames)]
795 HRESULT LocalGetIDsOfNames();
799 [in] PVOID pvInstance,
802 [in, out] DISPPARAMS *pDispParams,
803 [out] VARIANT *pVarResult,
804 [out] EXCEPINFO *pExcepInfo,
805 [out] UINT *puArgErr);
808 HRESULT LocalInvoke();
811 HRESULT GetDocumentation(
813 [out] BSTR *pBstrName,
814 [out] BSTR *pBstrDocString,
815 [out] DWORD *pdwHelpContext,
816 [out] BSTR *pBstrHelpFile);
818 [call_as(GetDocumentation)]
819 HRESULT RemoteGetDocumentation(
821 [in] DWORD refPtrFlags,
822 [out] BSTR *pBstrName,
823 [out] BSTR *pBstrDocString,
824 [out] DWORD *pdwHelpContext,
825 [out] BSTR *pBstrHelpFile);
830 [in] INVOKEKIND invKind,
831 [out] BSTR *pBstrDllName,
832 [out] BSTR *pBstrName,
833 [out] WORD *pwOrdinal);
835 [call_as(GetDllEntry)]
836 HRESULT RemoteGetDllEntry(
838 [in] INVOKEKIND invKind,
839 [in] DWORD refPtrFlags,
840 [out] BSTR *pBstrDllName,
841 [out] BSTR *pBstrName,
842 [out] WORD *pwOrdinal);
844 HRESULT GetRefTypeInfo(
845 [in] HREFTYPE hRefType,
846 [out] ITypeInfo **ppTInfo);
849 HRESULT AddressOfMember(
851 [in] INVOKEKIND invKind,
854 [call_as(AddressOfMember)]
855 HRESULT LocalAddressOfMember();
858 HRESULT CreateInstance(
859 [in] IUnknown *pUnkOuter,
861 [out, iid_is(riid)] PVOID *ppvObj);
863 [call_as(CreateInstance)]
864 HRESULT RemoteCreateInstance(
866 [out, iid_is(riid)] IUnknown **ppvObj);
870 [out] BSTR *pBstrMops);
873 HRESULT GetContainingTypeLib(
874 [out] ITypeLib **ppTLib,
877 [call_as(GetContainingTypeLib)]
878 HRESULT RemoteGetContainingTypeLib(
879 [out] ITypeLib **ppTLib,
883 void ReleaseTypeAttr(
884 [in] TYPEATTR *pTypeAttr);
886 [call_as(ReleaseTypeAttr)]
887 HRESULT LocalReleaseTypeAttr();
890 void ReleaseFuncDesc(
891 [in] FUNCDESC *pFuncDesc);
893 [call_as(ReleaseFuncDesc)]
894 HRESULT LocalReleaseFuncDesc();
898 [in] VARDESC *pVarDesc);
900 [call_as(ReleaseVarDesc)]
901 HRESULT LocalReleaseVarDesc();
906 uuid(00020412-0000-0000-C000-000000000046),
907 pointer_default(unique)
909 interface ITypeInfo2 : ITypeInfo
911 typedef [unique] ITypeInfo2 *LPTYPEINFO2;
914 [out] TYPEKIND *pTypeKind);
916 HRESULT GetTypeFlags(
917 [out] ULONG *pTypeFlags);
919 HRESULT GetFuncIndexOfMemId(
921 [in] INVOKEKIND invKind,
922 [out] UINT *pFuncIndex);
924 HRESULT GetVarIndexOfMemId(
926 [out] UINT *pVarIndex);
930 [out] VARIANT *pVarVal);
932 HRESULT GetFuncCustData(
935 [out] VARIANT *pVarVal);
937 HRESULT GetParamCustData(
939 [in] UINT indexParam,
941 [out] VARIANT *pVarVal);
943 HRESULT GetVarCustData(
946 [out] VARIANT *pVarVal);
948 HRESULT GetImplTypeCustData(
951 [out] VARIANT *pVarVal);
954 HRESULT GetDocumentation2(
957 [out] BSTR *pbstrHelpString,
958 [out] DWORD *pdwHelpStringContext,
959 [out] BSTR *pbstrHelpStringDll);
961 [call_as(GetDocumentation2)]
962 HRESULT RemoteGetDocumentation2(
965 [in] DWORD refPtrFlags,
966 [out] BSTR *pbstrHelpString,
967 [out] DWORD *pdwHelpStringContext,
968 [out] BSTR *pbstrHelpStringDll);
970 HRESULT GetAllCustData(
971 [out] CUSTDATA *pCustData);
973 HRESULT GetAllFuncCustData(
975 [out] CUSTDATA *pCustData);
977 HRESULT GetAllParamCustData(
979 [in] UINT indexParam,
980 [out] CUSTDATA *pCustData);
982 HRESULT GetAllVarCustData(
984 [out] CUSTDATA *pCustData);
986 HRESULT GetAllImplTypeCustData(
988 [out] CUSTDATA *pCustData);
993 uuid(00020402-0000-0000-C000-000000000046),
994 pointer_default(unique)
996 interface ITypeLib : IUnknown
998 typedef [unique] ITypeLib *LPTYPELIB;
1000 typedef [v1_enum] enum tagSYSKIND {
1007 typedef [v1_enum] enum tagLIBFLAGS {
1008 LIBFLAG_FRESTRICTED = 0x01,
1009 LIBFLAG_FCONTROL = 0x02,
1010 LIBFLAG_FHIDDEN = 0x04,
1011 LIBFLAG_FHASDISKIMAGE = 0x08
1014 typedef struct tagTLIBATTR {
1021 } TLIBATTR, *LPTLIBATTR;
1024 UINT GetTypeInfoCount();
1026 [call_as(GetTypeInfoCount)]
1027 HRESULT RemoteGetTypeInfoCount(
1028 [out] UINT *pcTInfo);
1030 HRESULT GetTypeInfo(
1032 [out] ITypeInfo **ppTInfo);
1034 HRESULT GetTypeInfoType(
1036 [out] TYPEKIND *pTKind);
1038 HRESULT GetTypeInfoOfGuid(
1040 [out] ITypeInfo **ppTinfo);
1044 [out] TLIBATTR **ppTLibAttr);
1046 [call_as(GetLibAttr)]
1047 HRESULT RemoteGetLibAttr(
1048 [out] LPTLIBATTR *ppTLibAttr,
1049 [out] CLEANLOCALSTORAGE *pDummy);
1051 HRESULT GetTypeComp(
1052 [out] ITypeComp **ppTComp);
1055 HRESULT GetDocumentation(
1057 [out] BSTR *pBstrName,
1058 [out] BSTR *pBstrDocString,
1059 [out] DWORD *pdwHelpContext,
1060 [out] BSTR *pBstrHelpFile);
1062 [call_as(GetDocumentation)]
1063 HRESULT RemoteGetDocumentation(
1065 [in] DWORD refPtrFlags,
1066 [out] BSTR *pBstrName,
1067 [out] BSTR *pBstrDocString,
1068 [out] DWORD *pdwHelpContext,
1069 [out] BSTR *pBstrHelpFile);
1073 [in, out] LPOLESTR szNameBuf,
1074 [in] ULONG lHashVal,
1075 [out] BOOL *pfName);
1078 HRESULT RemoteIsName(
1079 [in] LPOLESTR szNameBuf,
1080 [in] ULONG lHashVal,
1082 [out] BSTR *pBstrLibName);
1086 [in, out] LPOLESTR szNameBuf,
1087 [in] ULONG lHashVal,
1088 [out, size_is(*pcFound), length_is(*pcFound)] ITypeInfo **ppTInfo,
1089 [out, size_is(*pcFound), length_is(*pcFound)] MEMBERID *rgMemId,
1090 [in, out] USHORT *pcFound);
1093 HRESULT RemoteFindName(
1094 [in] LPOLESTR szNameBuf,
1095 [in] ULONG lHashVal,
1096 [out, size_is(*pcFound), length_is(*pcFound)] ITypeInfo **ppTInfo,
1097 [out, size_is(*pcFound), length_is(*pcFound)] MEMBERID *rgMemId,
1098 [in, out] USHORT *pcFound,
1099 [out] BSTR *pBstrLibName);
1102 void ReleaseTLibAttr(
1103 [in] TLIBATTR *pTLibAttr);
1105 [call_as(ReleaseTLibAttr)]
1106 HRESULT LocalReleaseTLibAttr();
1111 uuid(00020411-0000-0000-C000-000000000046),
1112 pointer_default(unique)
1114 interface ITypeLib2 : ITypeLib
1116 typedef [unique] ITypeLib2 *LPTYPELIB2;
1118 HRESULT GetCustData(
1120 [out] VARIANT *pVarVal);
1123 HRESULT GetLibStatistics(
1124 [out] ULONG *pcUniqueNames,
1125 [out] ULONG *pcchUniqueNames);
1127 [call_as(GetLibStatistics)]
1128 HRESULT RemoteGetLibStatistics(
1129 [out] ULONG *pcUniqueNames,
1130 [out] ULONG *pcchUniqueNames);
1133 HRESULT GetDocumentation2(
1136 [out] BSTR *pbstrHelpString,
1137 [out] DWORD *pdwHelpStringContext,
1138 [out] BSTR *pbstrHelpStringDll);
1140 [call_as(GetDocumentation2)]
1141 HRESULT RemoteGetDocumentation2(
1144 [in] DWORD refPtrFlags,
1145 [out] BSTR *pbstrHelpString,
1146 [out] DWORD *pdwHelpStringContext,
1147 [out] BSTR *pbstrHelpStringDll);
1149 HRESULT GetAllCustData(
1150 [out] CUSTDATA *pCustData);
1156 uuid(00020410-0000-0000-C000-000000000046),
1157 pointer_default(unique)
1159 interface ITypeChangeEvents : IUnknown
1161 typedef [unique] ITypeChangeEvents *LPTYPECHANGEEVENTS;
1163 typedef enum tagCHANGEKIND {
1164 CHANGEKIND_ADDMEMBER,
1165 CHANGEKIND_DELETEMEMBER,
1166 CHANGEKIND_SETNAMES,
1167 CHANGEKIND_SETDOCUMENTATION,
1169 CHANGEKIND_INVALIDATE,
1170 CHANGEKIND_CHANGEFAILED,
1174 HRESULT RequestTypeChange(
1175 [in] CHANGEKIND changeKind,
1176 [in] ITypeInfo *pTInfoBefore,
1177 [in] LPOLESTR pStrName,
1178 [out] INT *pfCancel);
1180 HRESULT AfterTypeChange(
1181 [in] CHANGEKIND changeKind,
1182 [in] ITypeInfo *pTInfoAfter,
1183 [in] LPOLESTR pStrName);
1188 uuid(1CF2B120-547D-101B-8E65-08002B2BD119),
1189 pointer_default(unique)
1191 interface IErrorInfo : IUnknown
1193 typedef [unique] IErrorInfo *LPERRORINFO;
1199 [out] BSTR *pBstrSource);
1201 HRESULT GetDescription(
1202 [out] BSTR *pBstrDescription);
1204 HRESULT GetHelpFile(
1205 [out] BSTR *pBstrHelpFile);
1207 HRESULT GetHelpContext(
1208 [out] DWORD *pdwHelpContext);
1213 uuid(22F03340-547D-101B-8E65-08002B2BD119),
1214 pointer_default(unique)
1216 interface ICreateErrorInfo : IUnknown
1218 typedef [unique] ICreateErrorInfo *LPCREATEERRORINFO;
1221 [in] REFGUID rguid);
1224 [in] LPOLESTR szSource);
1226 HRESULT SetDescription(
1227 [in] LPOLESTR szDescription);
1229 HRESULT SetHelpFile(
1230 [in] LPOLESTR szHelpFile);
1232 HRESULT SetHelpContext(
1233 [in] DWORD dwHelpContext);
1238 uuid(DF0B3D60-548F-101B-8E65-08002B2BD119),
1239 pointer_default(unique)
1241 interface ISupportErrorInfo : IUnknown
1243 typedef [unique] ISupportErrorInfo *LPSUPPORTERRORINFO;
1245 HRESULT InterfaceSupportsErrorInfo(
1251 uuid(0000002E-0000-0000-C000-000000000046)
1253 interface ITypeFactory : IUnknown
1255 HRESULT CreateFromTypeInfo(
1256 [in] ITypeInfo *pTypeInfo,
1258 [out, iid_is(riid)] IUnknown **ppv);
1264 uuid(0000002D-0000-0000-C000-000000000046)
1266 interface ITypeMarshal : IUnknown
1270 [in] DWORD dwDestContext,
1271 [in] PVOID pvDestContext,
1272 [out] ULONG *pSize);
1276 [in] DWORD dwDestContext,
1277 [in] PVOID pvDestContext,
1278 [in] ULONG cbBufferLength,
1279 [out] BYTE *pBuffer,
1280 [out] ULONG *pcbWritten);
1285 [in] ULONG cbBufferLength,
1287 [out] ULONG *pcbRead);
1296 uuid(0000002F-0000-0000-C000-000000000046)
1298 interface IRecordInfo : IUnknown
1300 typedef [unique] IRecordInfo *LPRECORDINFO;
1305 HRESULT RecordClear(
1306 [in] PVOID pvExisting);
1309 [in] PVOID pvExisting,
1316 [out] BSTR *pbstrName);
1319 [out] ULONG *pcbSize);
1321 HRESULT GetTypeInfo(
1322 [out] ITypeInfo **ppTypeInfo);
1326 [in] LPCOLESTR szFieldName,
1327 [out] VARIANT *pvarField);
1329 HRESULT GetFieldNoCopy(
1331 [in] LPCOLESTR szFieldName,
1332 [out] VARIANT *pvarField,
1333 [out] PVOID *ppvDataCArray);
1337 [in, out] PVOID pvData,
1338 [in] LPCOLESTR szFieldName,
1339 [in] VARIANT *pvarField);
1341 HRESULT PutFieldNoCopy(
1343 [in, out] PVOID pvData,
1344 [in] LPCOLESTR szFieldName,
1345 [in] VARIANT *pvarField);
1347 HRESULT GetFieldNames(
1348 [in, out] ULONG *pcNames,
1349 [out, size_is(*pcNames), length_is(*pcNames)] BSTR *rgBstrNames);
1351 BOOL IsMatchingType(
1352 [in] IRecordInfo *pRecordInfo);
1354 PVOID RecordCreate();
1356 HRESULT RecordCreateCopy(
1357 [in] PVOID pvSource,
1358 [out] PVOID *ppvDest);
1360 HRESULT RecordDestroy(
1361 [in] PVOID pvRecord);
1367 uuid(00020405-0000-0000-C000-000000000046),
1368 pointer_default(unique)
1370 interface ICreateTypeInfo : IUnknown
1372 typedef [unique] ICreateTypeInfo *LPCREATETYPEINFO;
1377 HRESULT SetTypeFlags(
1378 [in] UINT uTypeFlags);
1380 HRESULT SetDocString(
1381 [in] LPOLESTR pStrDoc);
1383 HRESULT SetHelpContext(
1384 [in] DWORD dwHelpContext);
1387 [in] WORD wMajorVerNum,
1388 [in] WORD wMinorVerNum);
1390 HRESULT AddRefTypeInfo(
1391 [in] ITypeInfo *pTInfo,
1392 [in] HREFTYPE *phRefType);
1394 HRESULT AddFuncDesc(
1396 [in] FUNCDESC *pFuncDesc);
1398 HRESULT AddImplType(
1400 [in] HREFTYPE hRefType);
1402 HRESULT SetImplTypeFlags(
1404 [in] INT implTypeFlags);
1406 HRESULT SetAlignment(
1407 [in] WORD cbAlignment);
1410 [in] LPOLESTR pStrSchema);
1414 [in] VARDESC *pVarDesc);
1416 HRESULT SetFuncAndParamNames(
1418 [in, size_is(cNames)] LPOLESTR *rgszNames,
1423 [in] LPOLESTR szName);
1425 HRESULT SetTypeDescAlias(
1426 [in] TYPEDESC *pTDescAlias);
1428 HRESULT DefineFuncAsDllEntry(
1430 [in] LPOLESTR szDllName,
1431 [in] LPOLESTR szProcName);
1433 HRESULT SetFuncDocString(
1435 [in] LPOLESTR szDocString);
1437 HRESULT SetVarDocString(
1439 [in] LPOLESTR szDocString);
1441 HRESULT SetFuncHelpContext(
1443 [in] DWORD dwHelpContext);
1445 HRESULT SetVarHelpContext(
1447 [in] DWORD dwHelpContext);
1451 [in] BSTR bstrMops);
1453 HRESULT SetTypeIdldesc(
1454 [in] IDLDESC * pIdlDesc);
1462 uuid(0002040E-0000-0000-C000-000000000046),
1463 pointer_default(unique)
1465 interface ICreateTypeInfo2 : ICreateTypeInfo
1467 typedef [unique] ICreateTypeInfo2 *LPCREATETYPEINFO2;
1469 HRESULT DeleteFuncDesc(
1472 HRESULT DeleteFuncDescByMemId(
1473 [in] MEMBERID memid,
1474 [in] INVOKEKIND invKind);
1476 HRESULT DeleteVarDesc(
1479 HRESULT DeleteVarDescByMemId(
1480 [in] MEMBERID memid);
1482 HRESULT DeleteImplType(
1485 HRESULT SetCustData(
1487 [in] VARIANT *pVarVal);
1489 HRESULT SetFuncCustData(
1492 [in] VARIANT *pVarVal);
1494 HRESULT SetParamCustData(
1495 [in] UINT indexFunc,
1496 [in] UINT indexParam,
1498 [in] VARIANT *pVarVal);
1500 HRESULT SetVarCustData(
1503 [in] VARIANT *pVarVal);
1505 HRESULT SetImplTypeCustData(
1508 [in] VARIANT *pVarVal);
1510 HRESULT SetHelpStringContext(
1511 [in] ULONG dwHelpStringContext);
1513 HRESULT SetFuncHelpStringContext(
1515 [in] ULONG dwHelpStringContext);
1517 HRESULT SetVarHelpStringContext(
1519 [in] ULONG dwHelpStringContext);
1521 HRESULT Invalidate();
1524 [in] LPOLESTR szName);
1530 uuid(00020406-0000-0000-C000-000000000046),
1531 pointer_default(unique)
1533 interface ICreateTypeLib : IUnknown
1535 typedef [unique] ICreateTypeLib *LPCREATETYPELIB;
1537 HRESULT CreateTypeInfo(
1538 [in] LPOLESTR szName,
1539 [in] TYPEKIND tkind,
1540 [out] ICreateTypeInfo **ppCTInfo);
1543 [in] LPOLESTR szName);
1546 [in] WORD wMajorVerNum,
1547 [in] WORD wMinorVerNum);
1552 HRESULT SetDocString(
1553 [in] LPOLESTR szDoc);
1555 HRESULT SetHelpFileName(
1556 [in] LPOLESTR szHelpFileName);
1558 HRESULT SetHelpContext(
1559 [in] DWORD dwHelpContext);
1564 HRESULT SetLibFlags(
1565 [in] UINT uLibFlags);
1567 HRESULT SaveAllChanges();
1573 uuid(0002040F-0000-0000-C000-000000000046),
1574 pointer_default(unique)
1576 interface ICreateTypeLib2 : ICreateTypeLib
1578 typedef [unique] ICreateTypeLib2 *LPCREATETYPELIB2;
1580 HRESULT DeleteTypeInfo(
1581 [in] LPOLESTR szName);
1583 HRESULT SetCustData(
1585 [in] VARIANT *pVarVal);
1587 HRESULT SetHelpStringContext(
1588 [in] ULONG dwHelpStringContext);
1590 HRESULT SetHelpStringDll(
1591 [in] LPOLESTR szFileName);
1595 /*****************************************************************************
1596 * IErrorLog interface
1600 uuid(3127ca40-446e-11ce-8135-00aa004bb851),
1601 pointer_default(unique)
1603 interface IErrorLog : IUnknown
1605 typedef IErrorLog *LPERRORLOG;
1608 [in] LPCOLESTR pszPropName,
1609 [in] EXCEPINFO *pExcepInfo);
1613 /*****************************************************************************
1614 * IPropertyBag interface
1618 uuid(55272a00-42cb-11ce-8135-00aa004bb851),
1619 pointer_default(unique)
1621 interface IPropertyBag : IUnknown
1623 typedef IPropertyBag *LPPROPERTYBAG;
1627 [in] LPCOLESTR pszPropName,
1628 [in, out] VARIANT *pVar,
1629 [in] IErrorLog *pErrorLog);
1633 [in] LPCOLESTR pszPropName,
1634 [out] VARIANT *pVar,
1635 [in] IErrorLog *pErrorLog,
1637 [in] IUnknown *pUnkObj);
1640 [in] LPCOLESTR pszPropName,
1641 [in] VARIANT *pVar);