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
("#ifdef 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
);