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
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_DATADELETED
= 0x1000; /* Data in a vector has been deleted */
139 const USHORT FADF_CREATEVECTOR
= 0x2000; /* This array is a vector */
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")
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")
157 typedef [wire_marshal(wireVARIANT
)] struct tagVARIANT
VARIANT;
161 struct __tagVARIANT
{
177 VARIANT_BOOL boolVal
;
178 #if
0 /* illegal in C++ */
200 VARIANT_BOOL *pboolVal
;
202 _VARIANT_BOOL
*pbool
;
212 IDispatch
**ppdispVal
;
216 struct __tagBRECORD
{
218 IRecordInfo
*pRecInfo
;
227 typedef VARIANT *LPVARIANT
;
228 typedef VARIANT VARIANTARG
;
229 typedef VARIANTARG
*LPVARIANTARG
;
231 struct _wireBRECORD
{
234 IRecordInfo
*pRecInfo
;
235 [size_is(clSize
)] byte *pRecord
;
238 struct _wireVARIANT
{
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
;
293 typedef DWORD HREFTYPE
;
294 typedef DISPID MEMBERID
;
296 typedef [v1_enum] enum tagTYPEKIND
{
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
;
318 typedef struct tagARRAYDESC
{
321 [size_is(cDims
)] SAFEARRAYBOUND rgbounds
[];
324 typedef struct tagPARAMDESCEX
{
326 VARIANTARG varDefaultValue
;
327 } PARAMDESCEX
, *LPPARAMDESCEX
;
329 typedef struct tagPARAMDESC
{
330 LPPARAMDESCEX pparamdescex
;
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
{
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
{
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;")
369 typedef struct tagTYPEATTR
{
373 MEMBERID memidConstructor
;
374 MEMBERID memidDestructor
;
375 LPOLESTR lpstrSchema
;
376 ULONG cbSizeInstance
;
388 } TYPEATTR
, *LPTYPEATTR
;
390 typedef struct tagDISPPARAMS
{
391 [size_is(cArgs
)] VARIANTARG
*rgvarg
;
392 [size_is(cNamedArgs
)] DISPID
*rgdispidNamedArgs
;
397 cpp_quote
("#if 0") /* for IDL only */
398 typedef struct tagEXCEPINFO
{
402 BSTR bstrDescription
;
406 ULONG pfnDeferredFillIn
;
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;")
423 typedef [v1_enum] enum tagCALLCONV
{
427 CC_PASCAL
= CC_MSCPASCAL
,
437 typedef [v1_enum] enum tagFUNCKIND
{
445 typedef [v1_enum] enum tagINVOKEKIND
{
447 INVOKE_PROPERTYGET
= 2,
448 INVOKE_PROPERTYPUT
= 4,
449 INVOKE_PROPERTYPUTREF
= 8
452 typedef struct tagFUNCDESC
{
454 [size_is(cScodes
)] SCODE
*lprgscode
;
455 [size_is(cParams
)] ELEMDESC
*lprgelemdescParam
;
463 ELEMDESC elemdescFunc
;
465 } FUNCDESC
, *LPFUNCDESC
;
467 typedef [v1_enum] enum tagVARKIND
{
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
{
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
;
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
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
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
541 typedef [wire_marshal(DWORD
)] struct tagCLEANLOCALSTORAGE
{
542 IUnknown
*pInterface
;
547 typedef struct tagCUSTDATAITEM
{
550 } CUSTDATAITEM
, *LPCUSTDATAITEM
;
552 typedef struct tagCUSTDATA
{
554 [size_is(cCustData
)] LPCUSTDATAITEM prgCustData
;
555 } CUSTDATA
, *LPCUSTDATA
;
557 } /* interface IOleAutomationTypes */
559 /******************** INTERFACES ********************/
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
);
585 [out] ITypeInfo
**ppTInfo
);
587 HRESULT GetIDsOfNames
(
589 [in, size_is(cNames
)] LPOLESTR
*rgszNames
,
592 [out, size_is(cNames
)] DISPID
*rgDispId
);
596 [in] DISPID dispIdMember
,
600 [in, out] DISPPARAMS
*pDispParams
,
601 [out] VARIANT *pVarResult
,
602 [out] EXCEPINFO
*pExcepInfo
,
603 [out] UINT
*puArgErr
);
606 HRESULT RemoteInvoke
(
607 [in] DISPID dispIdMember
,
611 [in] DISPPARAMS
*pDispParams
,
612 [out] VARIANT *pVarResult
,
613 [out] EXCEPINFO
*pExcepInfo
,
616 [in, size_is(cVarRef
)] UINT
*rgVarRefIdx
,
617 [in, out, size_is(cVarRef
)] VARIANTARG
*rgVarRef
);
622 uuid(00020404-0000-0000-C000
-000000000046),
623 pointer_default(unique)
625 interface IEnumVARIANT
: IUnknown
627 typedef [unique] IEnumVARIANT
*LPENUMVARIANT
;
632 [out] VARIANT *rgVar
,
633 [out] ULONG
*pCeltFetched
);
638 [out, size_is(celt
), length_is(*pCeltFetched
)]
640 [out] ULONG
*pCeltFetched
);
648 [out] IEnumVARIANT
**ppEnum
);
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
{
665 DESCKIND_IMPLICITAPPOBJ
,
669 typedef union tagBINDPTR
{
670 FUNCDESC
*lpfuncdesc
;
673 } BINDPTR
, *LPBINDPTR
;
677 [in] LPOLESTR szName
,
680 [out] ITypeInfo
**ppTInfo
,
681 [out] DESCKIND
*pDescKind
,
682 [out] BINDPTR
*pBindPtr
);
686 [in] LPOLESTR szName
,
689 [out] ITypeInfo
**ppTInfo
,
690 [out] DESCKIND
*pDescKind
,
691 [out] LPFUNCDESC
*ppFuncDesc
,
692 [out] LPVARDESC
*ppVarDesc
,
693 [out] ITypeComp
**ppTypeComp
,
694 [out] CLEANLOCALSTORAGE
*pDummy
);
698 [in] LPOLESTR szName
,
700 [out] ITypeInfo
**ppTInfo
,
701 [out] ITypeComp
**ppTComp
);
704 HRESULT RemoteBindType
(
705 [in] LPOLESTR szName
,
707 [out] ITypeInfo
**ppTInfo
);
712 uuid(00020401-0000-0000-C000
-000000000046),
713 pointer_default(unique)
715 interface ITypeInfo
: IUnknown
717 typedef [unique] ITypeInfo
*LPTYPEINFO
;
721 [out] TYPEATTR
**ppTypeAttr
);
723 [call_as
(GetTypeAttr
)]
724 HRESULT RemoteGetTypeAttr
(
725 [out] LPTYPEATTR
*ppTypeAttr
,
726 [out] CLEANLOCALSTORAGE
*pDummy
);
729 [out] ITypeComp
**ppTComp
);
734 [out] FUNCDESC
**ppFuncDesc
);
736 [call_as
(GetFuncDesc
)]
737 HRESULT RemoteGetFuncDesc
(
739 [out] LPFUNCDESC
*ppFuncDesc
,
740 [out] CLEANLOCALSTORAGE
*pDummy
);
745 [out] VARDESC
**ppVarDesc
);
747 [call_as
(GetVarDesc
)]
748 HRESULT RemoteGetVarDesc
(
750 [out] LPVARDESC
*ppVarDesc
,
751 [out] CLEANLOCALSTORAGE
*pDummy
);
756 [out, size_is(cMaxNames
), length_is(*pcNames
)] BSTR *rgBstrNames
,
758 [out] UINT
*pcNames
);
761 HRESULT RemoteGetNames
(
763 [out, size_is(cMaxNames
), length_is(*pcNames
)] BSTR *rgBstrNames
,
765 [out] UINT
*pcNames
);
767 HRESULT GetRefTypeOfImplType
(
769 [out] HREFTYPE
*pRefType
);
771 HRESULT GetImplTypeFlags
(
773 [out] INT *pImplTypeFlags
);
776 HRESULT GetIDsOfNames
(
777 [in, size_is(cNames
)] LPOLESTR
*rgszNames
,
779 [out, size_is(cNames
)] MEMBERID
*pMemId
);
781 [call_as
(GetIDsOfNames
)]
782 HRESULT LocalGetIDsOfNames
();
786 [in] PVOID pvInstance
,
789 [in, out] DISPPARAMS
*pDispParams
,
790 [out] VARIANT *pVarResult
,
791 [out] EXCEPINFO
*pExcepInfo
,
792 [out] UINT
*puArgErr
);
795 HRESULT LocalInvoke
();
798 HRESULT GetDocumentation
(
800 [out] BSTR *pBstrName
,
801 [out] BSTR *pBstrDocString
,
802 [out] DWORD
*pdwHelpContext
,
803 [out] BSTR *pBstrHelpFile
);
805 [call_as
(GetDocumentation
)]
806 HRESULT RemoteGetDocumentation
(
808 [in] DWORD refPtrFlags
,
809 [out] BSTR *pBstrName
,
810 [out] BSTR *pBstrDocString
,
811 [out] DWORD
*pdwHelpContext
,
812 [out] BSTR *pBstrHelpFile
);
817 [in] INVOKEKIND invKind
,
818 [out] BSTR *pBstrDllName
,
819 [out] BSTR *pBstrName
,
820 [out] WORD
*pwOrdinal
);
822 [call_as
(GetDllEntry
)]
823 HRESULT RemoteGetDllEntry
(
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
);
836 HRESULT AddressOfMember
(
838 [in] INVOKEKIND invKind
,
841 [call_as
(AddressOfMember
)]
842 HRESULT LocalAddressOfMember
();
845 HRESULT CreateInstance
(
846 [in] IUnknown
*pUnkOuter
,
848 [out, iid_is(riid
)] PVOID
*ppvObj
);
850 [call_as
(CreateInstance
)]
851 HRESULT RemoteCreateInstance
(
853 [out, iid_is(riid
)] IUnknown
**ppvObj
);
857 [out] BSTR *pBstrMops
);
860 HRESULT GetContainingTypeLib
(
861 [out] ITypeLib
**ppTLib
,
864 [call_as
(GetContainingTypeLib
)]
865 HRESULT RemoteGetContainingTypeLib
(
866 [out] ITypeLib
**ppTLib
,
870 void ReleaseTypeAttr
(
871 [in] TYPEATTR
*pTypeAttr
);
873 [call_as
(ReleaseTypeAttr
)]
874 HRESULT LocalReleaseTypeAttr
();
877 void ReleaseFuncDesc
(
878 [in] FUNCDESC
*pFuncDesc
);
880 [call_as
(ReleaseFuncDesc
)]
881 HRESULT LocalReleaseFuncDesc
();
885 [in] VARDESC
*pVarDesc
);
887 [call_as
(ReleaseVarDesc
)]
888 HRESULT LocalReleaseVarDesc
();
893 uuid(00020412-0000-0000-C000
-000000000046),
894 pointer_default(unique)
896 interface ITypeInfo2
: ITypeInfo
898 typedef [unique] ITypeInfo2
*LPTYPEINFO2
;
901 [out] TYPEKIND
*pTypeKind
);
903 HRESULT GetTypeFlags
(
904 [out] ULONG
*pTypeFlags
);
906 HRESULT GetFuncIndexOfMemId
(
908 [in] INVOKEKIND invKind
,
909 [out] UINT
*pFuncIndex
);
911 HRESULT GetVarIndexOfMemId
(
913 [out] UINT
*pVarIndex
);
917 [out] VARIANT *pVarVal
);
919 HRESULT GetFuncCustData
(
922 [out] VARIANT *pVarVal
);
924 HRESULT GetParamCustData
(
926 [in] UINT indexParam
,
928 [out] VARIANT *pVarVal
);
930 HRESULT GetVarCustData
(
933 [out] VARIANT *pVarVal
);
935 HRESULT GetImplTypeCustData
(
938 [out] VARIANT *pVarVal
);
941 HRESULT GetDocumentation2
(
944 [out] BSTR *pbstrHelpString
,
945 [out] DWORD
*pdwHelpStringContext
,
946 [out] BSTR *pbstrHelpStringDll
);
948 [call_as
(GetDocumentation2
)]
949 HRESULT RemoteGetDocumentation2
(
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
(
962 [out] CUSTDATA
*pCustData
);
964 HRESULT GetAllParamCustData
(
966 [in] UINT indexParam
,
967 [out] CUSTDATA
*pCustData
);
969 HRESULT GetAllVarCustData
(
971 [out] CUSTDATA
*pCustData
);
973 HRESULT GetAllImplTypeCustData
(
975 [out] CUSTDATA
*pCustData
);
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
{
993 typedef [v1_enum] enum tagLIBFLAGS
{
994 LIBFLAG_FRESTRICTED
= 0x01,
995 LIBFLAG_FCONTROL
= 0x02,
996 LIBFLAG_FHIDDEN
= 0x04,
997 LIBFLAG_FHASDISKIMAGE
= 0x08
1000 typedef struct tagTLIBATTR
{
1007 } TLIBATTR
, *LPTLIBATTR
;
1010 UINT GetTypeInfoCount
();
1012 [call_as
(GetTypeInfoCount
)]
1013 HRESULT RemoteGetTypeInfoCount
(
1014 [out] UINT
*pcTInfo
);
1016 HRESULT GetTypeInfo
(
1018 [out] ITypeInfo
**ppTInfo
);
1020 HRESULT GetTypeInfoType
(
1022 [out] TYPEKIND
*pTKind
);
1024 HRESULT GetTypeInfoOfGuid
(
1026 [out] ITypeInfo
**ppTinfo
);
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
);
1041 HRESULT GetDocumentation
(
1043 [out] BSTR *pBstrName
,
1044 [out] BSTR *pBstrDocString
,
1045 [out] DWORD
*pdwHelpContext
,
1046 [out] BSTR *pBstrHelpFile
);
1048 [call_as
(GetDocumentation
)]
1049 HRESULT RemoteGetDocumentation
(
1051 [in] DWORD refPtrFlags
,
1052 [out] BSTR *pBstrName
,
1053 [out] BSTR *pBstrDocString
,
1054 [out] DWORD
*pdwHelpContext
,
1055 [out] BSTR *pBstrHelpFile
);
1059 [in, out] LPOLESTR szNameBuf
,
1060 [in] ULONG lHashVal
,
1061 [out] BOOL
*pfName
);
1064 HRESULT RemoteIsName
(
1065 [in] LPOLESTR szNameBuf
,
1066 [in] ULONG lHashVal
,
1068 [out] BSTR *pBstrLibName
);
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
);
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
);
1088 void ReleaseTLibAttr
(
1089 [in] TLIBATTR
*pTLibAttr
);
1091 [call_as
(ReleaseTLibAttr
)]
1092 HRESULT LocalReleaseTLibAttr
();
1097 uuid(00020411-0000-0000-C000
-000000000046),
1098 pointer_default(unique)
1100 interface ITypeLib2
: ITypeLib
1102 typedef [unique] ITypeLib2
*LPTYPELIB2
;
1104 HRESULT GetCustData
(
1106 [out] VARIANT *pVarVal
);
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
);
1119 HRESULT GetDocumentation2
(
1122 [out] BSTR *pbstrHelpString
,
1123 [out] DWORD
*pdwHelpStringContext
,
1124 [out] BSTR *pbstrHelpStringDll
);
1126 [call_as
(GetDocumentation2
)]
1127 HRESULT RemoteGetDocumentation2
(
1130 [in] DWORD refPtrFlags
,
1131 [out] BSTR *pbstrHelpString
,
1132 [out] DWORD
*pdwHelpStringContext
,
1133 [out] BSTR *pbstrHelpStringDll
);
1135 HRESULT GetAllCustData
(
1136 [out] CUSTDATA
*pCustData
);
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
,
1155 CHANGEKIND_INVALIDATE
,
1156 CHANGEKIND_CHANGEFAILED
,
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
);
1174 uuid(1CF2B120
-547D
-101B
-8E65
-08002B2BD119
),
1175 pointer_default(unique)
1177 interface IErrorInfo
: IUnknown
1179 typedef [unique] IErrorInfo
*LPERRORINFO
;
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
);
1199 uuid(22F03340
-547D
-101B
-8E65
-08002B2BD119
),
1200 pointer_default(unique)
1202 interface ICreateErrorInfo
: IUnknown
1204 typedef [unique] ICreateErrorInfo
*LPCREATEERRORINFO
;
1207 [in] REFGUID rguid
);
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
);
1224 uuid(DF0B3D60
-548F
-101B
-8E65
-08002B2BD119
),
1225 pointer_default(unique)
1227 interface ISupportErrorInfo
: IUnknown
1229 typedef [unique] ISupportErrorInfo
*LPSUPPORTERRORINFO
;
1231 HRESULT InterfaceSupportsErrorInfo
(
1237 uuid(0000002E-0000-0000-C000
-000000000046)
1239 interface ITypeFactory
: IUnknown
1241 HRESULT CreateFromTypeInfo
(
1242 [in] ITypeInfo
*pTypeInfo
,
1244 [out, iid_is(riid
)] IUnknown
**ppv
);
1250 uuid(0000002D
-0000-0000-C000
-000000000046)
1252 interface ITypeMarshal
: IUnknown
1256 [in] DWORD dwDestContext
,
1257 [in] PVOID pvDestContext
,
1258 [out] ULONG
*pSize
);
1262 [in] DWORD dwDestContext
,
1263 [in] PVOID pvDestContext
,
1264 [in] ULONG cbBufferLength
,
1265 [out] BYTE *pBuffer
,
1266 [out] ULONG
*pcbWritten
);
1271 [in] ULONG cbBufferLength
,
1273 [out] ULONG
*pcbRead
);
1282 uuid(0000002F
-0000-0000-C000
-000000000046)
1284 interface IRecordInfo
: IUnknown
1286 typedef [unique] IRecordInfo
*LPRECORDINFO
;
1291 HRESULT RecordClear
(
1292 [in] PVOID pvExisting
);
1295 [in] PVOID pvExisting
,
1302 [out] BSTR *pbstrName
);
1305 [out] ULONG
*pcbSize
);
1307 HRESULT GetTypeInfo
(
1308 [out] ITypeInfo
**ppTypeInfo
);
1312 [in] LPCOLESTR szFieldName
,
1313 [out] VARIANT *pvarField
);
1315 HRESULT GetFieldNoCopy
(
1317 [in] LPCOLESTR szFieldName
,
1318 [out] VARIANT *pvarField
,
1319 [out] PVOID
*ppvDataCArray
);
1323 [in, out] PVOID pvData
,
1324 [in] LPCOLESTR szFieldName
,
1325 [in] VARIANT *pvarField
);
1327 HRESULT PutFieldNoCopy
(
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
);
1353 uuid(00020405-0000-0000-C000
-000000000046),
1354 pointer_default(unique)
1356 interface ICreateTypeInfo
: IUnknown
1358 typedef [unique] ICreateTypeInfo
*LPCREATETYPEINFO
;
1363 HRESULT SetTypeFlags
(
1364 [in] UINT uTypeFlags
);
1366 HRESULT SetDocString
(
1367 [in] LPOLESTR pStrDoc
);
1369 HRESULT SetHelpContext
(
1370 [in] DWORD dwHelpContext
);
1373 [in] WORD wMajorVerNum
,
1374 [in] WORD wMinorVerNum
);
1376 HRESULT AddRefTypeInfo
(
1377 [in] ITypeInfo
*pTInfo
,
1378 [in] HREFTYPE
*phRefType
);
1380 HRESULT AddFuncDesc
(
1382 [in] FUNCDESC
*pFuncDesc
);
1384 HRESULT AddImplType
(
1386 [in] HREFTYPE hRefType
);
1388 HRESULT SetImplTypeFlags
(
1390 [in] INT implTypeFlags
);
1392 HRESULT SetAlignment
(
1393 [in] WORD cbAlignment
);
1396 [in] LPOLESTR pStrSchema
);
1400 [in] VARDESC
*pVarDesc
);
1402 HRESULT SetFuncAndParamNames
(
1404 [in, size_is(cNames
)] LPOLESTR
*rgszNames
,
1409 [in] LPOLESTR szName
);
1411 HRESULT SetTypeDescAlias
(
1412 [in] TYPEDESC
*pTDescAlias
);
1414 HRESULT DefineFuncAsDllEntry
(
1416 [in] LPOLESTR szDllName
,
1417 [in] LPOLESTR szProcName
);
1419 HRESULT SetFuncDocString
(
1421 [in] LPOLESTR szDocString
);
1423 HRESULT SetVarDocString
(
1425 [in] LPOLESTR szDocString
);
1427 HRESULT SetFuncHelpContext
(
1429 [in] DWORD dwHelpContext
);
1431 HRESULT SetVarHelpContext
(
1433 [in] DWORD dwHelpContext
);
1437 [in] BSTR bstrMops
);
1439 HRESULT SetTypeIdldesc
(
1440 [in] IDLDESC
* pIdlDesc
);
1448 uuid(0002040E-0000-0000-C000
-000000000046),
1449 pointer_default(unique)
1451 interface ICreateTypeInfo2
: ICreateTypeInfo
1453 typedef [unique] ICreateTypeInfo2
*LPCREATETYPEINFO2
;
1455 HRESULT DeleteFuncDesc
(
1458 HRESULT DeleteFuncDescByMemId
(
1459 [in] MEMBERID memid
,
1460 [in] INVOKEKIND invKind
);
1462 HRESULT DeleteVarDesc
(
1465 HRESULT DeleteVarDescByMemId
(
1466 [in] MEMBERID memid
);
1468 HRESULT DeleteImplType
(
1471 HRESULT SetCustData
(
1473 [in] VARIANT *pVarVal
);
1475 HRESULT SetFuncCustData
(
1478 [in] VARIANT *pVarVal
);
1480 HRESULT SetParamCustData
(
1481 [in] UINT indexFunc
,
1482 [in] UINT indexParam
,
1484 [in] VARIANT *pVarVal
);
1486 HRESULT SetVarCustData
(
1489 [in] VARIANT *pVarVal
);
1491 HRESULT SetImplTypeCustData
(
1494 [in] VARIANT *pVarVal
);
1496 HRESULT SetHelpStringContext
(
1497 [in] ULONG dwHelpStringContext
);
1499 HRESULT SetFuncHelpStringContext
(
1501 [in] ULONG dwHelpStringContext
);
1503 HRESULT SetVarHelpStringContext
(
1505 [in] ULONG dwHelpStringContext
);
1507 HRESULT Invalidate
();
1510 [in] LPOLESTR szName
);
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
);
1529 [in] LPOLESTR szName
);
1532 [in] WORD wMajorVerNum
,
1533 [in] WORD wMinorVerNum
);
1538 HRESULT SetDocString
(
1539 [in] LPOLESTR szDoc
);
1541 HRESULT SetHelpFileName
(
1542 [in] LPOLESTR szHelpFileName
);
1544 HRESULT SetHelpContext
(
1545 [in] DWORD dwHelpContext
);
1550 HRESULT SetLibFlags
(
1551 [in] UINT uLibFlags
);
1553 HRESULT SaveAllChanges
();
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
(
1571 [in] VARIANT *pVarVal
);
1573 HRESULT SetHelpStringContext
(
1574 [in] ULONG dwHelpStringContext
);
1576 HRESULT SetHelpStringDll
(
1577 [in] LPOLESTR szFileName
);
1581 /*****************************************************************************
1582 * IErrorLog interface
1586 uuid(3127ca40
-446e-11ce
-8135-00aa004bb851
),
1587 pointer_default(unique)
1589 interface IErrorLog
: IUnknown
1591 typedef IErrorLog
*LPERRORLOG
;
1594 [in] LPCOLESTR pszPropName
,
1595 [in] EXCEPINFO
*pExcepInfo
);
1599 /*****************************************************************************
1600 * IPropertyBag interface
1604 uuid(55272a00
-42cb
-11ce
-8135-00aa004bb851
),
1605 pointer_default(unique)
1607 interface IPropertyBag
: IUnknown
1609 typedef IPropertyBag
*LPPROPERTYBAG
;
1613 [in] LPCOLESTR pszPropName
,
1614 [in, out] VARIANT *pVar
,
1615 [in] IErrorLog
*pErrorLog
);
1619 [in] LPCOLESTR pszPropName
,
1620 [out] VARIANT *pVar
,
1621 [in] IErrorLog
*pErrorLog
,
1623 [in] IUnknown
*pUnkObj
);
1626 [in] LPCOLESTR pszPropName
,
1627 [in] VARIANT *pVar
);