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
);