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
24 interface IRecordInfo;
28 pointer_default(unique)
30 interface IOleAutomationTypes
37 typedef struct tagSAFEARRAYBOUND {
40 } SAFEARRAYBOUND, *LPSAFEARRAYBOUND;
42 typedef [unique] struct _wireVARIANT *wireVARIANT;
43 typedef [unique] struct _wireBRECORD *wireBRECORD;
45 typedef struct _wireSAFEARR_BSTR {
47 [size_is(Size), ref] wireBSTR *aBstr;
50 typedef struct _wireSAFEARR_UNKNOWN {
52 [size_is(Size), ref] IUnknown **apUnknown;
55 typedef struct _wireSAFEARR_DISPATCH {
57 [size_is(Size), ref] IDispatch **apDispatch;
60 typedef struct _wireSAFEARR_VARIANT {
62 [size_is(Size), ref] wireVARIANT *aVariant;
65 typedef struct _wireSAFEARR_BRECORD {
67 [size_is(Size), ref] wireBRECORD *aRecord;
70 typedef struct _wireSAFEARR_HAVEIID {
72 [size_is(Size), ref] IUnknown **apUnknown;
76 typedef [v1_enum] enum tagSF_TYPE {
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,
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;
103 typedef [unique] struct _wireSAFEARRAY {
108 SAFEARRAYUNION uArrayStructs;
109 [size_is(cDims)] SAFEARRAYBOUND rgsabound[];
112 typedef [unique] wireSAFEARRAY *wirePSAFEARRAY;
114 typedef struct tagSAFEARRAY {
120 SAFEARRAYBOUND rgsabound[];
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 */
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")
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")
156 typedef [wire_marshal(wireVARIANT)] struct tagVARIANT VARIANT;
160 struct __tagVARIANT {
176 VARIANT_BOOL boolVal;
177 #if 0 /* illegal in C++ */
197 VARIANT_BOOL *pboolVal;
199 _VARIANT_BOOL *pbool;
209 IDispatch **ppdispVal;
211 struct __tagBRECORD {
213 IRecordInfo *pRecInfo;
222 typedef VARIANT *LPVARIANT;
223 typedef VARIANT VARIANTARG;
224 typedef VARIANTARG *LPVARIANTARG;
226 struct _wireBRECORD {
229 IRecordInfo *pRecInfo;
230 [size_is(clSize)] byte *pRecord;
233 struct _wireVARIANT {
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;
288 typedef DWORD HREFTYPE;
289 typedef DISPID MEMBERID;
291 typedef [v1_enum] enum tagTYPEKIND {
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;
313 typedef struct tagARRAYDESC {
316 [size_is(cDims)] SAFEARRAYBOUND rgbounds[];
319 typedef struct tagPARAMDESCEX {
321 VARIANTARG varDefaultValue;
322 } PARAMDESCEX, *LPPARAMDESCEX;
324 typedef struct tagPARAMDESC {
325 LPPARAMDESCEX pparamdescex;
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 {
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 {
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;")
364 typedef struct tagTYPEATTR {
368 MEMBERID memidConstructor;
369 MEMBERID memidDestructor;
370 LPOLESTR lpstrSchema;
371 ULONG cbSizeInstance;
383 } TYPEATTR, *LPTYPEATTR;
385 typedef struct tagDISPPARAMS {
386 [size_is(cArgs)] VARIANTARG *rgvarg;
387 [size_is(cNamedArgs)] DISPID *rgdispidNamedArgs;
392 cpp_quote("#if 0") /* for IDL only */
393 typedef struct tagEXCEPINFO {
397 BSTR bstrDescription;
401 ULONG pfnDeferredFillIn;
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;")
418 typedef [v1_enum] enum tagCALLCONV {
422 CC_PASCAL = CC_MSCPASCAL,
432 typedef [v1_enum] enum tagFUNCKIND {
440 typedef [v1_enum] enum tagINVOKEKIND {
442 INVOKE_PROPERTYGET = 2,
443 INVOKE_PROPERTYPUT = 4,
444 INVOKE_PROPERTYPUTREF = 8
447 typedef struct tagFUNCDESC {
449 [size_is(cScodes)] SCODE *lprgscode;
450 [size_is(cParams)] ELEMDESC *lprgelemdescParam;
458 ELEMDESC elemdescFunc;
460 } FUNCDESC, *LPFUNCDESC;
462 typedef [v1_enum] enum tagVARKIND {
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 {
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;
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
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
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
536 typedef [wire_marshal(DWORD)] struct tagCLEANLOCALSTORAGE {
537 IUnknown *pInterface;
542 typedef struct tagCUSTDATAITEM {
545 } CUSTDATAITEM, *LPCUSTDATAITEM;
547 typedef struct tagCUSTDATA {
549 [size_is(cCustData)] LPCUSTDATAITEM prgCustData;
550 } CUSTDATA, *LPCUSTDATA;
552 } /* interface IOleAutomationTypes */
554 /******************** INTERFACES ********************/
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);
580 [out] ITypeInfo **ppTInfo);
582 HRESULT GetIDsOfNames(
584 [in, size_is(cNames)] LPOLESTR *rgszNames,
587 [out, size_is(cNames)] DISPID *rgDispId);
591 [in] DISPID dispIdMember,
595 [in, out] DISPPARAMS *pDispParams,
596 [out] VARIANT *pVarResult,
597 [out] EXCEPINFO *pExcepInfo,
598 [out] UINT *puArgErr);
601 HRESULT RemoteInvoke(
602 [in] DISPID dispIdMember,
606 [in] DISPPARAMS *pDispParams,
607 [out] VARIANT *pVarResult,
608 [out] EXCEPINFO *pExcepInfo,
611 [in, size_is(cVarRef)] UINT *rgVarRefIdx,
612 [in, out, size_is(cVarRef)] VARIANTARG *rgVarRef);
617 uuid(00020404-0000-0000-C000-000000000046),
618 pointer_default(unique)
620 interface IEnumVARIANT : IUnknown
622 typedef [unique] IEnumVARIANT *LPENUMVARIANT;
627 [out] VARIANT *rgVar,
628 [out] ULONG *pCeltFetched);
633 [out, size_is(celt), length_is(*pCeltFetched)]
635 [out] ULONG *pCeltFetched);
643 [out] IEnumVARIANT **ppEnum);
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 {
660 DESCKIND_IMPLICITAPPOBJ,
664 typedef union tagBINDPTR {
665 FUNCDESC *lpfuncdesc;
668 } BINDPTR, *LPBINDPTR;
672 [in] LPOLESTR szName,
675 [out] ITypeInfo **ppTInfo,
676 [out] DESCKIND *pDescKind,
677 [out] BINDPTR *pBindPtr);
681 [in] LPOLESTR szName,
684 [out] ITypeInfo **ppTInfo,
685 [out] DESCKIND *pDescKind,
686 [out] LPFUNCDESC *ppFuncDesc,
687 [out] LPVARDESC *ppVarDesc,
688 [out] ITypeComp **ppTypeComp,
689 [out] CLEANLOCALSTORAGE *pDummy);
693 [in] LPOLESTR szName,
695 [out] ITypeInfo **ppTInfo,
696 [out] ITypeComp **ppTComp);
699 HRESULT RemoteBindType(
700 [in] LPOLESTR szName,
702 [out] ITypeInfo **ppTInfo);
707 uuid(00020401-0000-0000-C000-000000000046),
708 pointer_default(unique)
710 interface ITypeInfo : IUnknown
712 typedef [unique] ITypeInfo *LPTYPEINFO;
716 [out] TYPEATTR **ppTypeAttr);
718 [call_as(GetTypeAttr)]
719 HRESULT RemoteGetTypeAttr(
720 [out] LPTYPEATTR *ppTypeAttr,
721 [out] CLEANLOCALSTORAGE *pDummy);
724 [out] ITypeComp **ppTComp);
729 [out] FUNCDESC **ppFuncDesc);
731 [call_as(GetFuncDesc)]
732 HRESULT RemoteGetFuncDesc(
734 [out] LPFUNCDESC *ppFuncDesc,
735 [out] CLEANLOCALSTORAGE *pDummy);
740 [out] VARDESC **ppVarDesc);
742 [call_as(GetVarDesc)]
743 HRESULT RemoteGetVarDesc(
745 [out] LPVARDESC *ppVarDesc,
746 [out] CLEANLOCALSTORAGE *pDummy);
751 [out, size_is(cMaxNames), length_is(*pcNames)] BSTR *rgBstrNames,
753 [out] UINT *pcNames);
756 HRESULT RemoteGetNames(
758 [out, size_is(cMaxNames), length_is(*pcNames)] BSTR *rgBstrNames,
760 [out] UINT *pcNames);
762 HRESULT GetRefTypeOfImplType(
764 [out] HREFTYPE *pRefType);
766 HRESULT GetImplTypeFlags(
768 [out] INT *pImplTypeFlags);
771 HRESULT GetIDsOfNames(
772 [in, size_is(cNames)] LPOLESTR *rgszNames,
774 [out, size_is(cNames)] MEMBERID *pMemId);
776 [call_as(GetIDsOfNames)]
777 HRESULT LocalGetIDsOfNames();
781 [in] PVOID pvInstance,
784 [in, out] DISPPARAMS *pDispParams,
785 [out] VARIANT *pVarResult,
786 [out] EXCEPINFO *pExcepInfo,
787 [out] UINT *puArgErr);
790 HRESULT LocalInvoke();
793 HRESULT GetDocumentation(
795 [out] BSTR *pBstrName,
796 [out] BSTR *pBstrDocString,
797 [out] DWORD *pdwHelpContext,
798 [out] BSTR *pBstrHelpFile);
800 [call_as(GetDocumentation)]
801 HRESULT RemoteGetDocumentation(
803 [in] DWORD refPtrFlags,
804 [out] BSTR *pBstrName,
805 [out] BSTR *pBstrDocString,
806 [out] DWORD *pdwHelpContext,
807 [out] BSTR *pBstrHelpFile);
812 [in] INVOKEKIND invKind,
813 [out] BSTR *pBstrDllName,
814 [out] BSTR *pBstrName,
815 [out] WORD *pwOrdinal);
817 [call_as(GetDllEntry)]
818 HRESULT RemoteGetDllEntry(
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);
831 HRESULT AddressOfMember(
833 [in] INVOKEKIND invKind,
836 [call_as(AddressOfMember)]
837 HRESULT LocalAddressOfMember();
840 HRESULT CreateInstance(
841 [in] IUnknown *pUnkOuter,
843 [out, iid_is(riid)] PVOID *ppvObj);
845 [call_as(CreateInstance)]
846 HRESULT RemoteCreateInstance(
848 [out, iid_is(riid)] IUnknown **ppvObj);
852 [out] BSTR *pBstrMops);
855 HRESULT GetContainingTypeLib(
856 [out] ITypeLib **ppTLib,
859 [call_as(GetContainingTypeLib)]
860 HRESULT RemoteGetContainingTypeLib(
861 [out] ITypeLib **ppTLib,
865 void ReleaseTypeAttr(
866 [in] TYPEATTR *pTypeAttr);
868 [call_as(ReleaseTypeAttr)]
869 HRESULT LocalReleaseTypeAttr();
872 void ReleaseFuncDesc(
873 [in] FUNCDESC *pFuncDesc);
875 [call_as(ReleaseFuncDesc)]
876 HRESULT LocalReleaseFuncDesc();
880 [in] VARDESC *pVarDesc);
882 [call_as(ReleaseVarDesc)]
883 HRESULT LocalReleaseVarDesc();
888 uuid(00020412-0000-0000-C000-000000000046),
889 pointer_default(unique)
891 interface ITypeInfo2 : ITypeInfo
893 typedef [unique] ITypeInfo2 *LPTYPEINFO2;
896 [out] TYPEKIND *pTypeKind);
898 HRESULT GetTypeFlags(
899 [out] ULONG *pTypeFlags);
901 HRESULT GetFuncIndexOfMemId(
903 [in] INVOKEKIND invKind,
904 [out] UINT *pFuncIndex);
906 HRESULT GetVarIndexOfMemId(
908 [out] UINT *pVarIndex);
912 [out] VARIANT *pVarVal);
914 HRESULT GetFuncCustData(
917 [out] VARIANT *pVarVal);
919 HRESULT GetParamCustData(
921 [in] UINT indexParam,
923 [out] VARIANT *pVarVal);
925 HRESULT GetVarCustData(
928 [out] VARIANT *pVarVal);
930 HRESULT GetImplTypeCustData(
933 [out] VARIANT *pVarVal);
936 HRESULT GetDocumentation2(
939 [out] BSTR *pbstrHelpString,
940 [out] DWORD *pdwHelpStringContext,
941 [out] BSTR *pbstrHelpStringDll);
943 [call_as(GetDocumentation2)]
944 HRESULT RemoteGetDocumentation2(
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(
957 [out] CUSTDATA *pCustData);
959 HRESULT GetAllParamCustData(
961 [in] UINT indexParam,
962 [out] CUSTDATA *pCustData);
964 HRESULT GetAllVarCustData(
966 [out] CUSTDATA *pCustData);
968 HRESULT GetAllImplTypeCustData(
970 [out] CUSTDATA *pCustData);
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 {
988 typedef [v1_enum] enum tagLIBFLAGS {
989 LIBFLAG_FRESTRICTED = 0x01,
990 LIBFLAG_FCONTROL = 0x02,
991 LIBFLAG_FHIDDEN = 0x04,
992 LIBFLAG_FHASDISKIMAGE = 0x08
995 typedef struct tagTLIBATTR {
1002 } TLIBATTR, *LPTLIBATTR;
1005 UINT GetTypeInfoCount();
1007 [call_as(GetTypeInfoCount)]
1008 HRESULT RemoteGetTypeInfoCount(
1009 [out] UINT *pcTInfo);
1011 HRESULT GetTypeInfo(
1013 [out] ITypeInfo **ppTInfo);
1015 HRESULT GetTypeInfoType(
1017 [out] TYPEKIND *pTKind);
1019 HRESULT GetTypeInfoOfGuid(
1021 [out] ITypeInfo **ppTinfo);
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);
1036 HRESULT GetDocumentation(
1038 [out] BSTR *pBstrName,
1039 [out] BSTR *pBstrDocString,
1040 [out] DWORD *pdwHelpContext,
1041 [out] BSTR *pBstrHelpFile);
1043 [call_as(GetDocumentation)]
1044 HRESULT RemoteGetDocumentation(
1046 [in] DWORD refPtrFlags,
1047 [out] BSTR *pBstrName,
1048 [out] BSTR *pBstrDocString,
1049 [out] DWORD *pdwHelpContext,
1050 [out] BSTR *pBstrHelpFile);
1054 [in, out] LPOLESTR szNameBuf,
1055 [in] ULONG lHashVal,
1056 [out] BOOL *pfName);
1059 HRESULT RemoteIsName(
1060 [in] LPOLESTR szNameBuf,
1061 [in] ULONG lHashVal,
1063 [out] BSTR *pBstrLibName);
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);
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);
1083 void ReleaseTLibAttr(
1084 [in] TLIBATTR *pTLibAttr);
1086 [call_as(ReleaseTLibAttr)]
1087 HRESULT LocalReleaseTLibAttr();
1092 uuid(00020411-0000-0000-C000-000000000046),
1093 pointer_default(unique)
1095 interface ITypeLib2 : ITypeLib
1097 typedef [unique] ITypeLib2 *LPTYPELIB2;
1099 HRESULT GetCustData(
1101 [out] VARIANT *pVarVal);
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);
1114 HRESULT GetDocumentation2(
1117 [out] BSTR *pbstrHelpString,
1118 [out] DWORD *pdwHelpStringContext,
1119 [out] BSTR *pbstrHelpStringDll);
1121 [call_as(GetDocumentation2)]
1122 HRESULT RemoteGetDocumentation2(
1125 [in] DWORD refPtrFlags,
1126 [out] BSTR *pbstrHelpString,
1127 [out] DWORD *pdwHelpStringContext,
1128 [out] BSTR *pbstrHelpStringDll);
1130 HRESULT GetAllCustData(
1131 [out] CUSTDATA *pCustData);
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,
1150 CHANGEKIND_INVALIDATE,
1151 CHANGEKIND_CHANGEFAILED,
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);
1169 uuid(1CF2B120-547D-101B-8E65-08002B2BD119),
1170 pointer_default(unique)
1172 interface IErrorInfo : IUnknown
1174 typedef [unique] IErrorInfo *LPERRORINFO;
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);
1194 uuid(22F03340-547D-101B-8E65-08002B2BD119),
1195 pointer_default(unique)
1197 interface ICreateErrorInfo : IUnknown
1199 typedef [unique] ICreateErrorInfo *LPCREATEERRORINFO;
1202 [in] REFGUID rguid);
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);
1219 uuid(DF0B3D60-548F-101B-8E65-08002B2BD119),
1220 pointer_default(unique)
1222 interface ISupportErrorInfo : IUnknown
1224 typedef [unique] ISupportErrorInfo *LPSUPPORTERRORINFO;
1226 HRESULT InterfaceSupportsErrorInfo(
1232 uuid(0000002E-0000-0000-C000-000000000046)
1234 interface ITypeFactory : IUnknown
1236 HRESULT CreateFromTypeInfo(
1237 [in] ITypeInfo *pTypeInfo,
1239 [out, iid_is(riid)] IUnknown **ppv);
1245 uuid(0000002D-0000-0000-C000-000000000046)
1247 interface ITypeMarshal : IUnknown
1251 [in] DWORD dwDestContext,
1252 [in] PVOID pvDestContext,
1253 [out] ULONG *pSize);
1257 [in] DWORD dwDestContext,
1258 [in] PVOID pvDestContext,
1259 [in] ULONG cbBufferLength,
1260 [out] BYTE *pBuffer,
1261 [out] ULONG *pcbWritten);
1266 [in] ULONG cbBufferLength,
1268 [out] ULONG *pcbRead);
1277 uuid(0000002F-0000-0000-C000-000000000046)
1279 interface IRecordInfo : IUnknown
1281 typedef [unique] IRecordInfo *LPRECORDINFO;
1286 HRESULT RecordClear(
1287 [in] PVOID pvExisting);
1290 [in] PVOID pvExisting,
1297 [out] BSTR *pbstrName);
1300 [out] ULONG *pcbSize);
1302 HRESULT GetTypeInfo(
1303 [out] ITypeInfo **ppTypeInfo);
1307 [in] LPCOLESTR szFieldName,
1308 [out] VARIANT *pvarField);
1310 HRESULT GetFieldNoCopy(
1312 [in] LPCOLESTR szFieldName,
1313 [out] VARIANT *pvarField,
1314 [out] PVOID *ppvDataCArray);
1318 [in, out] PVOID pvData,
1319 [in] LPCOLESTR szFieldName,
1320 [in] VARIANT *pvarField);
1322 HRESULT PutFieldNoCopy(
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);
1348 uuid(00020405-0000-0000-C000-000000000046),
1349 pointer_default(unique)
1351 interface ICreateTypeInfo : IUnknown
1353 typedef [unique] ICreateTypeInfo *LPCREATETYPEINFO;
1358 HRESULT SetTypeFlags(
1359 [in] UINT uTypeFlags);
1361 HRESULT SetDocString(
1362 [in] LPOLESTR pStrDoc);
1364 HRESULT SetHelpContext(
1365 [in] DWORD dwHelpContext);
1368 [in] WORD wMajorVerNum,
1369 [in] WORD wMinorVerNum);
1371 HRESULT AddRefTypeInfo(
1372 [in] ITypeInfo *pTInfo,
1373 [in] HREFTYPE *phRefType);
1375 HRESULT AddFuncDesc(
1377 [in] FUNCDESC *pFuncDesc);
1379 HRESULT AddImplType(
1381 [in] HREFTYPE hRefType);
1383 HRESULT SetImplTypeFlags(
1385 [in] INT implTypeFlags);
1387 HRESULT SetAlignment(
1388 [in] WORD cbAlignment);
1391 [in] LPOLESTR pStrSchema);
1395 [in] VARDESC *pVarDesc);
1397 HRESULT SetFuncAndParamNames(
1399 [in, size_is(cNames)] LPOLESTR *rgszNames,
1404 [in] LPOLESTR szName);
1406 HRESULT SetTypeDescAlias(
1407 [in] TYPEDESC *pTDescAlias);
1409 HRESULT DefineFuncAsDllEntry(
1411 [in] LPOLESTR szDllName,
1412 [in] LPOLESTR szProcName);
1414 HRESULT SetFuncDocString(
1416 [in] LPOLESTR szDocString);
1418 HRESULT SetVarDocString(
1420 [in] LPOLESTR szDocString);
1422 HRESULT SetFuncHelpContext(
1424 [in] DWORD dwHelpContext);
1426 HRESULT SetVarHelpContext(
1428 [in] DWORD dwHelpContext);
1432 [in] BSTR bstrMops);
1434 HRESULT SetTypeIdldesc(
1435 [in] IDLDESC * pIdlDesc);
1443 uuid(0002040E-0000-0000-C000-000000000046),
1444 pointer_default(unique)
1446 interface ICreateTypeInfo2 : ICreateTypeInfo
1448 typedef [unique] ICreateTypeInfo2 *LPCREATETYPEINFO2;
1450 HRESULT DeleteFuncDesc(
1453 HRESULT DeleteFuncDescByMemId(
1454 [in] MEMBERID memid,
1455 [in] INVOKEKIND invKind);
1457 HRESULT DeleteVarDesc(
1460 HRESULT DeleteVarDescByMemId(
1461 [in] MEMBERID memid);
1463 HRESULT DeleteImplType(
1466 HRESULT SetCustData(
1468 [in] VARIANT *pVarVal);
1470 HRESULT SetFuncCustData(
1473 [in] VARIANT *pVarVal);
1475 HRESULT SetParamCustData(
1476 [in] UINT indexFunc,
1477 [in] UINT indexParam,
1479 [in] VARIANT *pVarVal);
1481 HRESULT SetVarCustData(
1484 [in] VARIANT *pVarVal);
1486 HRESULT SetImplTypeCustData(
1489 [in] VARIANT *pVarVal);
1491 HRESULT SetHelpStringContext(
1492 [in] ULONG dwHelpStringContext);
1494 HRESULT SetFuncHelpStringContext(
1496 [in] ULONG dwHelpStringContext);
1498 HRESULT SetVarHelpStringContext(
1500 [in] ULONG dwHelpStringContext);
1502 HRESULT Invalidate();
1505 [in] LPOLESTR szName);
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);
1524 [in] LPOLESTR szName);
1527 [in] WORD wMajorVerNum,
1528 [in] WORD wMinorVerNum);
1533 HRESULT SetDocString(
1534 [in] LPOLESTR szDoc);
1536 HRESULT SetHelpFileName(
1537 [in] LPOLESTR szHelpFileName);
1539 HRESULT SetHelpContext(
1540 [in] DWORD dwHelpContext);
1545 HRESULT SetLibFlags(
1546 [in] UINT uLibFlags);
1548 HRESULT SaveAllChanges();
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(
1566 [in] VARIANT *pVarVal);
1568 HRESULT SetHelpStringContext(
1569 [in] ULONG dwHelpStringContext);
1571 HRESULT SetHelpStringDll(
1572 [in] LPOLESTR szFileName);