1631 lines
37 KiB
Plaintext
1631 lines
37 KiB
Plaintext
/*
|
|
* Copyright 2002 Ove Kaaven
|
|
*
|
|
* This library is free software; you can redistribute it and/or
|
|
* modify it under the terms of the GNU Lesser General Public
|
|
* License as published by the Free Software Foundation; either
|
|
* version 2.1 of the License, or (at your option) any later version.
|
|
*
|
|
* This library is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
* Lesser General Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU Lesser General Public
|
|
* License along with this library; if not, write to the Free Software
|
|
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
|
|
*/
|
|
|
|
#ifndef DO_NO_IMPORTS
|
|
import "objidl.idl";
|
|
#endif
|
|
|
|
interface IDispatch;
|
|
interface ITypeInfo;
|
|
interface ITypeLib;
|
|
interface IRecordInfo;
|
|
|
|
[
|
|
version(1.0),
|
|
pointer_default(unique)
|
|
]
|
|
interface IOleAutomationTypes
|
|
{
|
|
|
|
typedef CY CURRENCY;
|
|
|
|
/* Safe Array */
|
|
|
|
typedef struct tagSAFEARRAYBOUND {
|
|
ULONG cElements;
|
|
LONG lLbound;
|
|
} SAFEARRAYBOUND, *LPSAFEARRAYBOUND;
|
|
|
|
typedef [unique] struct _wireVARIANT *wireVARIANT;
|
|
typedef [unique] struct _wireBRECORD *wireBRECORD;
|
|
|
|
typedef struct _wireSAFEARR_BSTR {
|
|
ULONG Size;
|
|
[size_is(Size), ref] wireBSTR *aBstr;
|
|
} SAFEARR_BSTR;
|
|
|
|
typedef struct _wireSAFEARR_UNKNOWN {
|
|
ULONG Size;
|
|
[size_is(Size), ref] IUnknown **apUnknown;
|
|
} SAFEARR_UNKNOWN;
|
|
|
|
typedef struct _wireSAFEARR_DISPATCH {
|
|
ULONG Size;
|
|
[size_is(Size), ref] IDispatch **apDispatch;
|
|
} SAFEARR_DISPATCH;
|
|
|
|
typedef struct _wireSAFEARR_VARIANT {
|
|
ULONG Size;
|
|
[size_is(Size), ref] wireVARIANT *aVariant;
|
|
} SAFEARR_VARIANT;
|
|
|
|
typedef struct _wireSAFEARR_BRECORD {
|
|
ULONG Size;
|
|
[size_is(Size), ref] wireBRECORD *aRecord;
|
|
} SAFEARR_BRECORD;
|
|
|
|
typedef struct _wireSAFEARR_HAVEIID {
|
|
ULONG Size;
|
|
[size_is(Size), ref] IUnknown **apUnknown;
|
|
IID iid;
|
|
} SAFEARR_HAVEIID;
|
|
|
|
typedef [v1_enum] enum tagSF_TYPE {
|
|
SF_ERROR = VT_ERROR,
|
|
SF_I1 = VT_I1,
|
|
SF_I2 = VT_I2,
|
|
SF_I4 = VT_I4,
|
|
SF_I8 = VT_I8,
|
|
SF_BSTR = VT_BSTR,
|
|
SF_UNKNOWN = VT_UNKNOWN,
|
|
SF_DISPATCH = VT_DISPATCH,
|
|
SF_VARIANT = VT_VARIANT,
|
|
SF_RECORD = VT_RECORD,
|
|
SF_HAVEIID = VT_UNKNOWN|VT_RESERVED,
|
|
} SF_TYPE;
|
|
|
|
typedef union _wireSAFEARRAY_UNION switch(ULONG sfType) u {
|
|
case SF_BSTR: SAFEARR_BSTR BstrStr;
|
|
case SF_UNKNOWN: SAFEARR_UNKNOWN UnknownStr;
|
|
case SF_DISPATCH: SAFEARR_DISPATCH DispatchStr;
|
|
case SF_VARIANT: SAFEARR_VARIANT VariantStr;
|
|
case SF_RECORD: SAFEARR_BRECORD RecordStr;
|
|
case SF_HAVEIID: SAFEARR_HAVEIID HaveIidStr;
|
|
case SF_I1: BYTE_SIZEDARR ByteStr;
|
|
case SF_I2: WORD_SIZEDARR WordStr;
|
|
case SF_I4: DWORD_SIZEDARR LongStr;
|
|
case SF_I8: HYPER_SIZEDARR HyperStr;
|
|
} SAFEARRAYUNION;
|
|
|
|
typedef [unique] struct _wireSAFEARRAY {
|
|
USHORT cDims;
|
|
USHORT fFeatures;
|
|
ULONG cbElements;
|
|
ULONG cLocks;
|
|
SAFEARRAYUNION uArrayStructs;
|
|
[size_is(cDims)] SAFEARRAYBOUND rgsabound[];
|
|
} *wireSAFEARRAY;
|
|
|
|
typedef [unique] wireSAFEARRAY *wirePSAFEARRAY;
|
|
|
|
typedef struct tagSAFEARRAY {
|
|
USHORT cDims;
|
|
USHORT fFeatures;
|
|
ULONG cbElements;
|
|
ULONG cLocks;
|
|
PVOID pvData;
|
|
SAFEARRAYBOUND rgsabound[];
|
|
} SAFEARRAY;
|
|
|
|
typedef [wire_marshal(wirePSAFEARRAY)] SAFEARRAY *LPSAFEARRAY;
|
|
|
|
const USHORT FADF_AUTO = 0x0001;
|
|
const USHORT FADF_STATIC = 0x0002;
|
|
const USHORT FADF_EMBEDDED = 0x0004;
|
|
const USHORT FADF_FIXEDSIZE = 0x0010;
|
|
const USHORT FADF_RECORD = 0x0020;
|
|
const USHORT FADF_HAVEIID = 0x0040;
|
|
const USHORT FADF_HAVEVARTYPE = 0x0080;
|
|
const USHORT FADF_BSTR = 0x0100;
|
|
const USHORT FADF_UNKNOWN = 0x0200;
|
|
const USHORT FADF_DISPATCH = 0x0400;
|
|
const USHORT FADF_VARIANT = 0x0800;
|
|
const USHORT FADF_RESERVED = 0xF008;
|
|
/* Undocumented flags */
|
|
const USHORT FADF_DATADELETED = 0x1000; /* Data in a vector has been deleted */
|
|
const USHORT FADF_CREATEVECTOR = 0x2000; /* This array is a vector */
|
|
|
|
/* Variant */
|
|
|
|
cpp_quote("#if (__STDC__ && !defined(_FORCENAMELESSUNION)) || defined(NONAMELESSUNION)")
|
|
cpp_quote("#define __VARIANT_NAME_1 n1")
|
|
cpp_quote("#define __VARIANT_NAME_2 n2")
|
|
cpp_quote("#define __VARIANT_NAME_3 n3")
|
|
cpp_quote("#define __VARIANT_NAME_4 brecVal")
|
|
cpp_quote("#else")
|
|
cpp_quote("#define __tagVARIANT")
|
|
cpp_quote("#define __VARIANT_NAME_1")
|
|
cpp_quote("#define __VARIANT_NAME_2")
|
|
cpp_quote("#define __VARIANT_NAME_3")
|
|
cpp_quote("#define __tagBRECORD")
|
|
cpp_quote("#define __VARIANT_NAME_4")
|
|
cpp_quote("#endif")
|
|
|
|
typedef [wire_marshal(wireVARIANT)] struct tagVARIANT VARIANT;
|
|
|
|
struct tagVARIANT {
|
|
union {
|
|
struct __tagVARIANT {
|
|
VARTYPE vt;
|
|
WORD wReserved1;
|
|
WORD wReserved2;
|
|
WORD wReserved3;
|
|
union {
|
|
signed char cVal;
|
|
USHORT uiVal;
|
|
ULONG ulVal;
|
|
INT intVal;
|
|
UINT uintVal;
|
|
BYTE bVal;
|
|
SHORT iVal;
|
|
LONG lVal;
|
|
FLOAT fltVal;
|
|
DOUBLE dblVal;
|
|
VARIANT_BOOL boolVal;
|
|
#if 0 /* illegal in C++ */
|
|
_VARIANT_BOOL bool;
|
|
#endif
|
|
SCODE scode;
|
|
DATE date;
|
|
BSTR bstrVal;
|
|
CY cyVal;
|
|
IUnknown *punkVal;
|
|
IDispatch *pdispVal;
|
|
SAFEARRAY *parray;
|
|
LONGLONG llVal;
|
|
ULONGLONG ullVal;
|
|
signed char *pcVal;
|
|
USHORT *puiVal;
|
|
ULONG *pulVal;
|
|
INT *pintVal;
|
|
UINT *puintVal;
|
|
BYTE *pbVal;
|
|
SHORT *piVal;
|
|
LONG *plVal;
|
|
FLOAT *pfltVal;
|
|
DOUBLE *pdblVal;
|
|
VARIANT_BOOL *pboolVal;
|
|
#if 0
|
|
_VARIANT_BOOL *pbool;
|
|
#endif
|
|
SCODE *pscode;
|
|
DATE *pdate;
|
|
BSTR *pbstrVal;
|
|
VARIANT *pvarVal;
|
|
PVOID byref;
|
|
CY *pcyVal;
|
|
DECIMAL *pdecVal;
|
|
IUnknown **ppunkVal;
|
|
IDispatch **ppdispVal;
|
|
SAFEARRAY **pparray;
|
|
LONGLONG *pllVal;
|
|
ULONGLONG *pullVal;
|
|
struct __tagBRECORD {
|
|
PVOID pvRecord;
|
|
IRecordInfo *pRecInfo;
|
|
} __VARIANT_NAME_4;
|
|
} __VARIANT_NAME_3;
|
|
} __VARIANT_NAME_2;
|
|
|
|
DECIMAL decVal;
|
|
} __VARIANT_NAME_1;
|
|
};
|
|
|
|
typedef VARIANT *LPVARIANT;
|
|
typedef VARIANT VARIANTARG;
|
|
typedef VARIANTARG *LPVARIANTARG;
|
|
|
|
struct _wireBRECORD {
|
|
ULONG fFlags;
|
|
ULONG clSize;
|
|
IRecordInfo *pRecInfo;
|
|
[size_is(clSize)] byte *pRecord;
|
|
};
|
|
|
|
struct _wireVARIANT {
|
|
DWORD clSize;
|
|
DWORD rpcReserved;
|
|
USHORT vt;
|
|
USHORT wReserved1;
|
|
USHORT wReserved2;
|
|
USHORT wReserved3;
|
|
[switch_is(vt)] union {
|
|
[case(VT_EMPTY, VT_NULL)] ;
|
|
[case(VT_I1)] signed char cVal;
|
|
[case(VT_UI2)] USHORT uiVal;
|
|
[case(VT_UI4)] ULONG ulVal;
|
|
[case(VT_INT)] INT intVal;
|
|
[case(VT_UINT)] UINT uintVal;
|
|
[case(VT_UI1)] BYTE bVal;
|
|
[case(VT_I2)] SHORT iVal;
|
|
[case(VT_I4)] LONG lVal;
|
|
[case(VT_R4)] FLOAT fltVal;
|
|
[case(VT_R8)] DOUBLE dblVal;
|
|
[case(VT_BOOL)] VARIANT_BOOL boolVal;
|
|
[case(VT_ERROR)] SCODE scode;
|
|
[case(VT_DATE)] DATE date;
|
|
[case(VT_BSTR)] wireBSTR bstrVal;
|
|
[case(VT_CY)] CY cyVal;
|
|
[case(VT_DECIMAL)] DECIMAL decVal;
|
|
[case(VT_UNKNOWN)] IUnknown *punkVal;
|
|
[case(VT_DISPATCH)] IDispatch *pdispVal;
|
|
[case(VT_ARRAY)] wireSAFEARRAY parray;
|
|
[case(VT_I1|VT_BYREF)] signed char *pcVal;
|
|
[case(VT_UI2|VT_BYREF)] USHORT *puiVal;
|
|
[case(VT_UI4|VT_BYREF)] ULONG *pulVal;
|
|
[case(VT_INT|VT_BYREF)] INT *pintVal;
|
|
[case(VT_UINT|VT_BYREF)] UINT *puintVal;
|
|
[case(VT_UI1|VT_BYREF)] BYTE *pbVal;
|
|
[case(VT_I2|VT_BYREF)] SHORT *piVal;
|
|
[case(VT_I4|VT_BYREF)] LONG *plVal;
|
|
[case(VT_R4|VT_BYREF)] FLOAT *pfltVal;
|
|
[case(VT_R8|VT_BYREF)] DOUBLE *pdblVal;
|
|
[case(VT_BOOL|VT_BYREF)] VARIANT_BOOL *pboolVal;
|
|
[case(VT_ERROR|VT_BYREF)] SCODE *pscode;
|
|
[case(VT_DATE|VT_BYREF)] DATE *pdate;
|
|
[case(VT_BSTR|VT_BYREF)] wireBSTR *pbstrVal;
|
|
[case(VT_VARIANT|VT_BYREF)] wireVARIANT *pvarVal;
|
|
[case(VT_CY|VT_BYREF)] CY *pcyVal;
|
|
[case(VT_DECIMAL|VT_BYREF)] DECIMAL *pdecVal;
|
|
[case(VT_UNKNOWN|VT_BYREF)] IUnknown **ppunkVal;
|
|
[case(VT_DISPATCH|VT_BYREF)] IDispatch **ppdispVal;
|
|
[case(VT_ARRAY|VT_BYREF)] wireSAFEARRAY *pparray;
|
|
[case(VT_RECORD, VT_RECORD|VT_BYREF)] wireBRECORD brecVal;
|
|
} DUMMYUNIONNAME;
|
|
};
|
|
|
|
/* Dispatch */
|
|
|
|
typedef LONG DISPID;
|
|
typedef DWORD HREFTYPE;
|
|
typedef DISPID MEMBERID;
|
|
|
|
typedef [v1_enum] enum tagTYPEKIND {
|
|
TKIND_ENUM = 0,
|
|
TKIND_RECORD,
|
|
TKIND_MODULE,
|
|
TKIND_INTERFACE,
|
|
TKIND_DISPATCH,
|
|
TKIND_COCLASS,
|
|
TKIND_ALIAS,
|
|
TKIND_UNION,
|
|
TKIND_MAX
|
|
} TYPEKIND;
|
|
|
|
typedef struct tagTYPEDESC {
|
|
[switch_is(vt)] union {
|
|
[case(VT_PTR, VT_SAFEARRAY)] struct tagTYPEDESC *lptdesc;
|
|
[case(VT_CARRAY)] struct tagARRAYDESC *lpadesc;
|
|
[case(VT_USERDEFINED)] HREFTYPE hreftype;
|
|
[default] ;
|
|
} DUMMYUNIONNAME;
|
|
VARTYPE vt;
|
|
} TYPEDESC;
|
|
|
|
typedef struct tagARRAYDESC {
|
|
TYPEDESC tdescElem;
|
|
USHORT cDims;
|
|
[size_is(cDims)] SAFEARRAYBOUND rgbounds[];
|
|
} ARRAYDESC;
|
|
|
|
typedef struct tagPARAMDESCEX {
|
|
ULONG cBytes;
|
|
VARIANTARG varDefaultValue;
|
|
} PARAMDESCEX, *LPPARAMDESCEX;
|
|
|
|
typedef struct tagPARAMDESC {
|
|
LPPARAMDESCEX pparamdescex;
|
|
USHORT wParamFlags;
|
|
} PARAMDESC, *LPPARAMDESC;
|
|
|
|
const USHORT PARAMFLAG_NONE = 0x00;
|
|
const USHORT PARAMFLAG_FIN = 0x01;
|
|
const USHORT PARAMFLAG_FOUT = 0x02;
|
|
const USHORT PARAMFLAG_FLCID = 0x04;
|
|
const USHORT PARAMFLAG_FRETVAL = 0x08;
|
|
const USHORT PARAMFLAG_FOPT = 0x10;
|
|
const USHORT PARAMFLAG_FHASDEFAULT = 0x20;
|
|
const USHORT PARAMFLAG_FHASCUSTDATA = 0x40;
|
|
|
|
typedef struct tagIDLDESC {
|
|
ULONG dwReserved;
|
|
USHORT wIDLFlags;
|
|
} IDLDESC, *LPIDLDESC;
|
|
|
|
const USHORT IDLFLAG_NONE = PARAMFLAG_NONE;
|
|
const USHORT IDLFLAG_FIN = PARAMFLAG_FIN;
|
|
const USHORT IDLFLAG_FOUT = PARAMFLAG_FOUT;
|
|
const USHORT IDLFLAG_FLCID = PARAMFLAG_FLCID;
|
|
const USHORT IDLFLAG_FRETVAL = PARAMFLAG_FRETVAL;
|
|
|
|
cpp_quote("#if 0") /* for IDL only */
|
|
typedef struct tagELEMDESC {
|
|
TYPEDESC tdesc;
|
|
PARAMDESC paramdesc;
|
|
} ELEMDESC;
|
|
cpp_quote("#else") /* C/C++ defs */
|
|
cpp_quote("typedef struct tagELEMDESC {")
|
|
cpp_quote(" TYPEDESC tdesc;")
|
|
cpp_quote(" union {")
|
|
cpp_quote(" IDLDESC idldesc;")
|
|
cpp_quote(" PARAMDESC paramdesc;")
|
|
cpp_quote(" } DUMMYUNIONNAME;")
|
|
cpp_quote("} ELEMDESC, *LPELEMDESC;")
|
|
cpp_quote("#endif")
|
|
|
|
typedef struct tagTYPEATTR {
|
|
GUID guid;
|
|
LCID lcid;
|
|
DWORD dwReserved;
|
|
MEMBERID memidConstructor;
|
|
MEMBERID memidDestructor;
|
|
LPOLESTR lpstrSchema;
|
|
ULONG cbSizeInstance;
|
|
TYPEKIND typekind;
|
|
WORD cFuncs;
|
|
WORD cVars;
|
|
WORD cImplTypes;
|
|
WORD cbSizeVft;
|
|
WORD cbAlignment;
|
|
WORD wTypeFlags;
|
|
WORD wMajorVerNum;
|
|
WORD wMinorVerNum;
|
|
TYPEDESC tdescAlias;
|
|
IDLDESC idldescType;
|
|
} TYPEATTR, *LPTYPEATTR;
|
|
|
|
typedef struct tagDISPPARAMS {
|
|
[size_is(cArgs)] VARIANTARG *rgvarg;
|
|
[size_is(cNamedArgs)] DISPID *rgdispidNamedArgs;
|
|
UINT cArgs;
|
|
UINT cNamedArgs;
|
|
} DISPPARAMS;
|
|
|
|
cpp_quote("#if 0") /* for IDL only */
|
|
typedef struct tagEXCEPINFO {
|
|
WORD wCode;
|
|
WORD wReserved;
|
|
BSTR bstrSource;
|
|
BSTR bstrDescription;
|
|
BSTR bstrHelpFile;
|
|
DWORD dwHelpContext;
|
|
ULONG pvReserved;
|
|
ULONG pfnDeferredFillIn;
|
|
SCODE scode;
|
|
} EXCEPINFO;
|
|
cpp_quote("#else")
|
|
cpp_quote("typedef struct tagEXCEPINFO {")
|
|
cpp_quote(" WORD wCode;")
|
|
cpp_quote(" WORD wReserved;")
|
|
cpp_quote(" BSTR bstrSource;")
|
|
cpp_quote(" BSTR bstrDescription;")
|
|
cpp_quote(" BSTR bstrHelpFile;")
|
|
cpp_quote(" DWORD dwHelpContext;")
|
|
cpp_quote(" PVOID pvReserved;")
|
|
cpp_quote(" HRESULT (__stdcall *pfnDeferredFillIn)(struct tagEXCEPINFO *);")
|
|
cpp_quote(" SCODE scode;")
|
|
cpp_quote("} EXCEPINFO, *LPEXCEPINFO;")
|
|
cpp_quote("#endif")
|
|
|
|
typedef [v1_enum] enum tagCALLCONV {
|
|
CC_FASTCALL = 0,
|
|
CC_CDECL = 1,
|
|
CC_MSCPASCAL,
|
|
CC_PASCAL = CC_MSCPASCAL,
|
|
CC_MACPASCAL,
|
|
CC_STDCALL,
|
|
CC_FPFASTCALL,
|
|
CC_SYSCALL,
|
|
CC_MPWCDECL,
|
|
CC_MPWPASCAL,
|
|
CC_MAX
|
|
} CALLCONV;
|
|
|
|
typedef [v1_enum] enum tagFUNCKIND {
|
|
FUNC_VIRTUAL,
|
|
FUNC_PUREVIRTUAL,
|
|
FUNC_NONVIRTUAL,
|
|
FUNC_STATIC,
|
|
FUNC_DISPATCH
|
|
} FUNCKIND;
|
|
|
|
typedef [v1_enum] enum tagINVOKEKIND {
|
|
INVOKE_FUNC = 1,
|
|
INVOKE_PROPERTYGET = 2,
|
|
INVOKE_PROPERTYPUT = 4,
|
|
INVOKE_PROPERTYPUTREF = 8
|
|
} INVOKEKIND;
|
|
|
|
typedef struct tagFUNCDESC {
|
|
MEMBERID memid;
|
|
[size_is(cScodes)] SCODE *lprgscode;
|
|
[size_is(cParams)] ELEMDESC *lprgelemdescParam;
|
|
FUNCKIND funckind;
|
|
INVOKEKIND invkind;
|
|
CALLCONV callconv;
|
|
SHORT cParams;
|
|
SHORT cParamsOpt;
|
|
SHORT oVft;
|
|
SHORT cScodes;
|
|
ELEMDESC elemdescFunc;
|
|
WORD wFuncFlags;
|
|
} FUNCDESC, *LPFUNCDESC;
|
|
|
|
typedef [v1_enum] enum tagVARKIND {
|
|
VAR_PERINSTANCE,
|
|
VAR_STATIC,
|
|
VAR_CONST,
|
|
VAR_DISPATCH
|
|
} VARKIND;
|
|
|
|
const USHORT IMPLTYPEFLAG_FDEFAULT = 0x1;
|
|
const USHORT IMPLTYPEFLAG_FSOURCE = 0x2;
|
|
const USHORT IMPLTYPEFLAG_FRESTRICTED = 0x4;
|
|
const USHORT IMPLTYPEFLAG_FDEFAULTVTABLE = 0x8;
|
|
|
|
typedef struct tagVARDESC {
|
|
MEMBERID memid;
|
|
LPOLESTR lpstrSchema;
|
|
[switch_is(varkind)] union {
|
|
[case(VAR_PERINSTANCE, VAR_DISPATCH, VAR_STATIC)] ULONG oInst;
|
|
[case(VAR_CONST)] VARIANT *lpvarValue;
|
|
} DUMMYUNIONNAME;
|
|
ELEMDESC elemdescVar;
|
|
WORD wVarFlags;
|
|
VARKIND varkind;
|
|
} VARDESC, *LPVARDESC;
|
|
|
|
typedef enum tagTYPEFLAGS {
|
|
TYPEFLAG_FAPPOBJECT = 0x0001,
|
|
TYPEFLAG_FCANCREATE = 0x0002,
|
|
TYPEFLAG_FLICENSED = 0x0004,
|
|
TYPEFLAG_FPREDECLID = 0x0008,
|
|
TYPEFLAG_FHIDDEN = 0x0010,
|
|
TYPEFLAG_FCONTROL = 0x0020,
|
|
TYPEFLAG_FDUAL = 0x0040,
|
|
TYPEFLAG_FNONEXTENSIBLE = 0x0080,
|
|
TYPEFLAG_FOLEAUTOMATION = 0x0100,
|
|
TYPEFLAG_FRESTRICTED = 0x0200,
|
|
TYPEFLAG_FAGGREGATABLE = 0x0400,
|
|
TYPEFLAG_FREPLACEABLE = 0x0800,
|
|
TYPEFLAG_FDISPATCHABLE = 0x1000,
|
|
TYPEFLAG_FREVERSEBIND = 0x2000,
|
|
TYPEFLAG_FPROXY = 0x4000
|
|
} TYPEFLAGS;
|
|
|
|
typedef enum tagFUNCFLAGS {
|
|
FUNCFLAG_FRESTRICTED = 0x0001,
|
|
FUNCFLAG_FSOURCE = 0x0002,
|
|
FUNCFLAG_FBINDABLE = 0x0004,
|
|
FUNCFLAG_FREQUESTEDIT = 0x0008,
|
|
FUNCFLAG_FDISPLAYBIND = 0x0010,
|
|
FUNCFLAG_FDEFAULTBIND = 0x0020,
|
|
FUNCFLAG_FHIDDEN = 0x0040,
|
|
FUNCFLAG_FUSESGETLASTERROR = 0x0080,
|
|
FUNCFLAG_FDEFAULTCOLLELEM = 0x0100,
|
|
FUNCFLAG_FUIDEFAULT = 0x0200,
|
|
FUNCFLAG_FNONBROWSABLE = 0x0400,
|
|
FUNCFLAG_FREPLACEABLE = 0x0800,
|
|
FUNCFLAG_FIMMEDIATEBIND = 0x1000
|
|
} FUNCFLAGS;
|
|
|
|
typedef enum tagVARFLAGS {
|
|
VARFLAG_FREADONLY = 0x0001,
|
|
VARFLAG_FSOURCE = 0x0002,
|
|
VARFLAG_FBINDABLE = 0x0004,
|
|
VARFLAG_FREQUESTEDIT = 0x0008,
|
|
VARFLAG_FDISPLAYBIND = 0x0010,
|
|
VARFLAG_FDEFAULTBIND = 0x0020,
|
|
VARFLAG_FHIDDEN = 0x0040,
|
|
VARFLAG_FRESTRICTED = 0x0080,
|
|
VARFLAG_FDEFAULTCOLLELEM = 0x0100,
|
|
VARFLAG_FUIDEFAULT = 0x0200,
|
|
VARFLAG_FNONBROWSABLE = 0x0400,
|
|
VARFLAG_FREPLACEABLE = 0x0800,
|
|
VARFLAG_FIMMEDIATEBIND = 0x1000
|
|
} VARFLAGS;
|
|
|
|
typedef [wire_marshal(DWORD)] struct tagCLEANLOCALSTORAGE {
|
|
IUnknown *pInterface;
|
|
PVOID pStorage;
|
|
DWORD flags;
|
|
} CLEANLOCALSTORAGE;
|
|
|
|
typedef struct tagCUSTDATAITEM {
|
|
GUID guid;
|
|
VARIANTARG varValue;
|
|
} CUSTDATAITEM, *LPCUSTDATAITEM;
|
|
|
|
typedef struct tagCUSTDATA {
|
|
DWORD cCustData;
|
|
[size_is(cCustData)] LPCUSTDATAITEM prgCustData;
|
|
} CUSTDATA, *LPCUSTDATA;
|
|
|
|
} /* interface IOleAutomationTypes */
|
|
|
|
/******************** INTERFACES ********************/
|
|
|
|
[
|
|
object,
|
|
uuid(00020400-0000-0000-C000-000000000046),
|
|
pointer_default(unique)
|
|
]
|
|
interface IDispatch : IUnknown
|
|
{
|
|
typedef [unique] IDispatch *LPDISPATCH;
|
|
|
|
const DISPID DISPID_UNKNOWN = -1;
|
|
const DISPID DISPID_VALUE = 0;
|
|
const DISPID DISPID_PROPERTYPUT = -3;
|
|
const DISPID DISPID_NEWENUM = -4;
|
|
const DISPID DISPID_EVALUATE = -5;
|
|
const DISPID DISPID_CONSTRUCTOR = -6;
|
|
const DISPID DISPID_DESTRUCTOR = -7;
|
|
const DISPID DISPID_COLLECT = -8;
|
|
|
|
HRESULT GetTypeInfoCount(
|
|
[out] UINT *pctinfo);
|
|
|
|
HRESULT GetTypeInfo(
|
|
[in] UINT iTInfo,
|
|
[in] LCID lcid,
|
|
[out] ITypeInfo **ppTInfo);
|
|
|
|
HRESULT GetIDsOfNames(
|
|
[in] REFIID riid,
|
|
[in, size_is(cNames)] LPOLESTR *rgszNames,
|
|
[in] UINT cNames,
|
|
[in] LCID lcid,
|
|
[out, size_is(cNames)] DISPID *rgDispId);
|
|
|
|
[local]
|
|
HRESULT Invoke(
|
|
[in] DISPID dispIdMember,
|
|
[in] REFIID riid,
|
|
[in] LCID lcid,
|
|
[in] WORD wFlags,
|
|
[in, out] DISPPARAMS *pDispParams,
|
|
[out] VARIANT *pVarResult,
|
|
[out] EXCEPINFO *pExcepInfo,
|
|
[out] UINT *puArgErr);
|
|
|
|
[call_as(Invoke)]
|
|
HRESULT RemoteInvoke(
|
|
[in] DISPID dispIdMember,
|
|
[in] REFIID riid,
|
|
[in] LCID lcid,
|
|
[in] DWORD dwFlags,
|
|
[in] DISPPARAMS *pDispParams,
|
|
[out] VARIANT *pVarResult,
|
|
[out] EXCEPINFO *pExcepInfo,
|
|
[out] UINT *pArgErr,
|
|
[in] UINT cVarRef,
|
|
[in, size_is(cVarRef)] UINT *rgVarRefIdx,
|
|
[in, out, size_is(cVarRef)] VARIANTARG *rgVarRef);
|
|
}
|
|
|
|
[
|
|
object,
|
|
uuid(00020404-0000-0000-C000-000000000046),
|
|
pointer_default(unique)
|
|
]
|
|
interface IEnumVARIANT : IUnknown
|
|
{
|
|
typedef [unique] IEnumVARIANT *LPENUMVARIANT;
|
|
|
|
[local]
|
|
HRESULT Next(
|
|
[in] ULONG celt,
|
|
[out] VARIANT *rgVar,
|
|
[out] ULONG *pCeltFetched);
|
|
|
|
[call_as(Next)]
|
|
HRESULT RemoteNext(
|
|
[in] ULONG celt,
|
|
[out, size_is(celt), length_is(*pCeltFetched)]
|
|
VARIANT *rgVar,
|
|
[out] ULONG *pCeltFetched);
|
|
|
|
HRESULT Skip(
|
|
[in] ULONG celt);
|
|
|
|
HRESULT Reset();
|
|
|
|
HRESULT Clone(
|
|
[out] IEnumVARIANT **ppEnum);
|
|
}
|
|
|
|
[
|
|
object,
|
|
uuid(00020403-0000-0000-C000-000000000046),
|
|
pointer_default(unique)
|
|
]
|
|
interface ITypeComp : IUnknown
|
|
{
|
|
typedef [unique] ITypeComp *LPTYPECOMP;
|
|
|
|
typedef [v1_enum] enum tagDESCKIND {
|
|
DESCKIND_NONE = 0,
|
|
DESCKIND_FUNCDESC,
|
|
DESCKIND_VARDESC,
|
|
DESCKIND_TYPECOMP,
|
|
DESCKIND_IMPLICITAPPOBJ,
|
|
DESCKIND_MAX
|
|
} DESCKIND;
|
|
|
|
typedef union tagBINDPTR {
|
|
FUNCDESC *lpfuncdesc;
|
|
VARDESC *lpvardesc;
|
|
ITypeComp *lptcomp;
|
|
} BINDPTR, *LPBINDPTR;
|
|
|
|
[local]
|
|
HRESULT Bind(
|
|
[in] LPOLESTR szName,
|
|
[in] ULONG lHashVal,
|
|
[in] WORD wFlags,
|
|
[out] ITypeInfo **ppTInfo,
|
|
[out] DESCKIND *pDescKind,
|
|
[out] BINDPTR *pBindPtr);
|
|
|
|
[call_as(Bind)]
|
|
HRESULT RemoteBind(
|
|
[in] LPOLESTR szName,
|
|
[in] ULONG lHashVal,
|
|
[in] WORD wFlags,
|
|
[out] ITypeInfo **ppTInfo,
|
|
[out] DESCKIND *pDescKind,
|
|
[out] LPFUNCDESC *ppFuncDesc,
|
|
[out] LPVARDESC *ppVarDesc,
|
|
[out] ITypeComp **ppTypeComp,
|
|
[out] CLEANLOCALSTORAGE *pDummy);
|
|
|
|
[local]
|
|
HRESULT BindType(
|
|
[in] LPOLESTR szName,
|
|
[in] ULONG lHashVal,
|
|
[out] ITypeInfo **ppTInfo,
|
|
[out] ITypeComp **ppTComp);
|
|
|
|
[call_as(BindType)]
|
|
HRESULT RemoteBindType(
|
|
[in] LPOLESTR szName,
|
|
[in] ULONG lHashVal,
|
|
[out] ITypeInfo **ppTInfo);
|
|
}
|
|
|
|
[
|
|
object,
|
|
uuid(00020401-0000-0000-C000-000000000046),
|
|
pointer_default(unique)
|
|
]
|
|
interface ITypeInfo : IUnknown
|
|
{
|
|
typedef [unique] ITypeInfo *LPTYPEINFO;
|
|
|
|
[local]
|
|
HRESULT GetTypeAttr(
|
|
[out] TYPEATTR **ppTypeAttr);
|
|
|
|
[call_as(GetTypeAttr)]
|
|
HRESULT RemoteGetTypeAttr(
|
|
[out] LPTYPEATTR *ppTypeAttr,
|
|
[out] CLEANLOCALSTORAGE *pDummy);
|
|
|
|
HRESULT GetTypeComp(
|
|
[out] ITypeComp **ppTComp);
|
|
|
|
[local]
|
|
HRESULT GetFuncDesc(
|
|
[in] UINT index,
|
|
[out] FUNCDESC **ppFuncDesc);
|
|
|
|
[call_as(GetFuncDesc)]
|
|
HRESULT RemoteGetFuncDesc(
|
|
[in] UINT index,
|
|
[out] LPFUNCDESC *ppFuncDesc,
|
|
[out] CLEANLOCALSTORAGE *pDummy);
|
|
|
|
[local]
|
|
HRESULT GetVarDesc(
|
|
[in] UINT index,
|
|
[out] VARDESC **ppVarDesc);
|
|
|
|
[call_as(GetVarDesc)]
|
|
HRESULT RemoteGetVarDesc(
|
|
[in] UINT index,
|
|
[out] LPVARDESC *ppVarDesc,
|
|
[out] CLEANLOCALSTORAGE *pDummy);
|
|
|
|
[local]
|
|
HRESULT GetNames(
|
|
[in] MEMBERID memid,
|
|
[out, size_is(cMaxNames), length_is(*pcNames)] BSTR *rgBstrNames,
|
|
[in] UINT cMaxNames,
|
|
[out] UINT *pcNames);
|
|
|
|
[call_as(GetNames)]
|
|
HRESULT RemoteGetNames(
|
|
[in] MEMBERID memid,
|
|
[out, size_is(cMaxNames), length_is(*pcNames)] BSTR *rgBstrNames,
|
|
[in] UINT cMaxNames,
|
|
[out] UINT *pcNames);
|
|
|
|
HRESULT GetRefTypeOfImplType(
|
|
[in] UINT index,
|
|
[out] HREFTYPE *pRefType);
|
|
|
|
HRESULT GetImplTypeFlags(
|
|
[in] UINT index,
|
|
[out] INT *pImplTypeFlags);
|
|
|
|
[local]
|
|
HRESULT GetIDsOfNames(
|
|
[in, size_is(cNames)] LPOLESTR *rgszNames,
|
|
[in] UINT cNames,
|
|
[out, size_is(cNames)] MEMBERID *pMemId);
|
|
|
|
[call_as(GetIDsOfNames)]
|
|
HRESULT LocalGetIDsOfNames();
|
|
|
|
[local]
|
|
HRESULT Invoke(
|
|
[in] PVOID pvInstance,
|
|
[in] MEMBERID memid,
|
|
[in] WORD wFlags,
|
|
[in, out] DISPPARAMS *pDispParams,
|
|
[out] VARIANT *pVarResult,
|
|
[out] EXCEPINFO *pExcepInfo,
|
|
[out] UINT *puArgErr);
|
|
|
|
[call_as(Invoke)]
|
|
HRESULT LocalInvoke();
|
|
|
|
[local]
|
|
HRESULT GetDocumentation(
|
|
[in] MEMBERID memid,
|
|
[out] BSTR *pBstrName,
|
|
[out] BSTR *pBstrDocString,
|
|
[out] DWORD *pdwHelpContext,
|
|
[out] BSTR *pBstrHelpFile);
|
|
|
|
[call_as(GetDocumentation)]
|
|
HRESULT RemoteGetDocumentation(
|
|
[in] MEMBERID memid,
|
|
[in] DWORD refPtrFlags,
|
|
[out] BSTR *pBstrName,
|
|
[out] BSTR *pBstrDocString,
|
|
[out] DWORD *pdwHelpContext,
|
|
[out] BSTR *pBstrHelpFile);
|
|
|
|
[local]
|
|
HRESULT GetDllEntry(
|
|
[in] MEMBERID memid,
|
|
[in] INVOKEKIND invKind,
|
|
[out] BSTR *pBstrDllName,
|
|
[out] BSTR *pBstrName,
|
|
[out] WORD *pwOrdinal);
|
|
|
|
[call_as(GetDllEntry)]
|
|
HRESULT RemoteGetDllEntry(
|
|
[in] MEMBERID memid,
|
|
[in] INVOKEKIND invKind,
|
|
[in] DWORD refPtrFlags,
|
|
[out] BSTR *pBstrDllName,
|
|
[out] BSTR *pBstrName,
|
|
[out] WORD *pwOrdinal);
|
|
|
|
HRESULT GetRefTypeInfo(
|
|
[in] HREFTYPE hRefType,
|
|
[out] ITypeInfo **ppTInfo);
|
|
|
|
[local]
|
|
HRESULT AddressOfMember(
|
|
[in] MEMBERID memid,
|
|
[in] INVOKEKIND invKind,
|
|
[out] PVOID *ppv);
|
|
|
|
[call_as(AddressOfMember)]
|
|
HRESULT LocalAddressOfMember();
|
|
|
|
[local]
|
|
HRESULT CreateInstance(
|
|
[in] IUnknown *pUnkOuter,
|
|
[in] REFIID riid,
|
|
[out, iid_is(riid)] PVOID *ppvObj);
|
|
|
|
[call_as(CreateInstance)]
|
|
HRESULT RemoteCreateInstance(
|
|
[in] REFIID riid,
|
|
[out, iid_is(riid)] IUnknown **ppvObj);
|
|
|
|
HRESULT GetMops(
|
|
[in] MEMBERID memid,
|
|
[out] BSTR *pBstrMops);
|
|
|
|
[local]
|
|
HRESULT GetContainingTypeLib(
|
|
[out] ITypeLib **ppTLib,
|
|
[out] UINT *pIndex);
|
|
|
|
[call_as(GetContainingTypeLib)]
|
|
HRESULT RemoteGetContainingTypeLib(
|
|
[out] ITypeLib **ppTLib,
|
|
[out] UINT *pIndex);
|
|
|
|
[local]
|
|
void ReleaseTypeAttr(
|
|
[in] TYPEATTR *pTypeAttr);
|
|
|
|
[call_as(ReleaseTypeAttr)]
|
|
HRESULT LocalReleaseTypeAttr();
|
|
|
|
[local]
|
|
void ReleaseFuncDesc(
|
|
[in] FUNCDESC *pFuncDesc);
|
|
|
|
[call_as(ReleaseFuncDesc)]
|
|
HRESULT LocalReleaseFuncDesc();
|
|
|
|
[local]
|
|
void ReleaseVarDesc(
|
|
[in] VARDESC *pVarDesc);
|
|
|
|
[call_as(ReleaseVarDesc)]
|
|
HRESULT LocalReleaseVarDesc();
|
|
}
|
|
|
|
[
|
|
object,
|
|
uuid(00020412-0000-0000-C000-000000000046),
|
|
pointer_default(unique)
|
|
]
|
|
interface ITypeInfo2 : ITypeInfo
|
|
{
|
|
typedef [unique] ITypeInfo2 *LPTYPEINFO2;
|
|
|
|
HRESULT GetTypeKind(
|
|
[out] TYPEKIND *pTypeKind);
|
|
|
|
HRESULT GetTypeFlags(
|
|
[out] ULONG *pTypeFlags);
|
|
|
|
HRESULT GetFuncIndexOfMemId(
|
|
[in] MEMBERID memid,
|
|
[in] INVOKEKIND invKind,
|
|
[out] UINT *pFuncIndex);
|
|
|
|
HRESULT GetVarIndexOfMemId(
|
|
[in] MEMBERID memid,
|
|
[out] UINT *pVarIndex);
|
|
|
|
HRESULT GetCustData(
|
|
[in] REFGUID guid,
|
|
[out] VARIANT *pVarVal);
|
|
|
|
HRESULT GetFuncCustData(
|
|
[in] UINT index,
|
|
[in] REFGUID guid,
|
|
[out] VARIANT *pVarVal);
|
|
|
|
HRESULT GetParamCustData(
|
|
[in] UINT indexFunc,
|
|
[in] UINT indexParam,
|
|
[in] REFGUID guid,
|
|
[out] VARIANT *pVarVal);
|
|
|
|
HRESULT GetVarCustData(
|
|
[in] UINT index,
|
|
[in] REFGUID guid,
|
|
[out] VARIANT *pVarVal);
|
|
|
|
HRESULT GetImplTypeCustData(
|
|
[in] UINT index,
|
|
[in] REFGUID guid,
|
|
[out] VARIANT *pVarVal);
|
|
|
|
[local]
|
|
HRESULT GetDocumentation2(
|
|
[in] MEMBERID memid,
|
|
[in] LCID lcid,
|
|
[out] BSTR *pbstrHelpString,
|
|
[out] DWORD *pdwHelpStringContext,
|
|
[out] BSTR *pbstrHelpStringDll);
|
|
|
|
[call_as(GetDocumentation2)]
|
|
HRESULT RemoteGetDocumentation2(
|
|
[in] MEMBERID memid,
|
|
[in] LCID lcid,
|
|
[in] DWORD refPtrFlags,
|
|
[out] BSTR *pbstrHelpString,
|
|
[out] DWORD *pdwHelpStringContext,
|
|
[out] BSTR *pbstrHelpStringDll);
|
|
|
|
HRESULT GetAllCustData(
|
|
[out] CUSTDATA *pCustData);
|
|
|
|
HRESULT GetAllFuncCustData(
|
|
[in] UINT index,
|
|
[out] CUSTDATA *pCustData);
|
|
|
|
HRESULT GetAllParamCustData(
|
|
[in] UINT indexFunc,
|
|
[in] UINT indexParam,
|
|
[out] CUSTDATA *pCustData);
|
|
|
|
HRESULT GetAllVarCustData(
|
|
[in] UINT index,
|
|
[out] CUSTDATA *pCustData);
|
|
|
|
HRESULT GetAllImplTypeCustData(
|
|
[in] UINT index,
|
|
[out] CUSTDATA *pCustData);
|
|
}
|
|
|
|
[
|
|
object,
|
|
uuid(00020402-0000-0000-C000-000000000046),
|
|
pointer_default(unique)
|
|
]
|
|
interface ITypeLib : IUnknown
|
|
{
|
|
typedef [unique] ITypeLib *LPTYPELIB;
|
|
|
|
typedef [v1_enum] enum tagSYSKIND {
|
|
SYS_WIN16 = 0,
|
|
SYS_WIN32,
|
|
SYS_MAC
|
|
} SYSKIND;
|
|
|
|
typedef [v1_enum] enum tagLIBFLAGS {
|
|
LIBFLAG_FRESTRICTED = 0x01,
|
|
LIBFLAG_FCONTROL = 0x02,
|
|
LIBFLAG_FHIDDEN = 0x04,
|
|
LIBFLAG_FHASDISKIMAGE = 0x08
|
|
} LIBFLAGS;
|
|
|
|
typedef struct tagTLIBATTR {
|
|
GUID guid;
|
|
LCID lcid;
|
|
SYSKIND syskind;
|
|
WORD wMajorVerNum;
|
|
WORD wMinorVerNum;
|
|
WORD wLibFlags;
|
|
} TLIBATTR, *LPTLIBATTR;
|
|
|
|
[local]
|
|
UINT GetTypeInfoCount();
|
|
|
|
[call_as(GetTypeInfoCount)]
|
|
HRESULT RemoteGetTypeInfoCount(
|
|
[out] UINT *pcTInfo);
|
|
|
|
HRESULT GetTypeInfo(
|
|
[in] UINT index,
|
|
[out] ITypeInfo **ppTInfo);
|
|
|
|
HRESULT GetTypeInfoType(
|
|
[in] UINT index,
|
|
[out] TYPEKIND *pTKind);
|
|
|
|
HRESULT GetTypeInfoOfGuid(
|
|
[in] REFGUID guid,
|
|
[out] ITypeInfo **ppTinfo);
|
|
|
|
[local]
|
|
HRESULT GetLibAttr(
|
|
[out] TLIBATTR **ppTLibAttr);
|
|
|
|
[call_as(GetLibAttr)]
|
|
HRESULT RemoteGetLibAttr(
|
|
[out] LPTLIBATTR *ppTLibAttr,
|
|
[out] CLEANLOCALSTORAGE *pDummy);
|
|
|
|
HRESULT GetTypeComp(
|
|
[out] ITypeComp **ppTComp);
|
|
|
|
[local]
|
|
HRESULT GetDocumentation(
|
|
[in] INT index,
|
|
[out] BSTR *pBstrName,
|
|
[out] BSTR *pBstrDocString,
|
|
[out] DWORD *pdwHelpContext,
|
|
[out] BSTR *pBstrHelpFile);
|
|
|
|
[call_as(GetDocumentation)]
|
|
HRESULT RemoteGetDocumentation(
|
|
[in] INT index,
|
|
[in] DWORD refPtrFlags,
|
|
[out] BSTR *pBstrName,
|
|
[out] BSTR *pBstrDocString,
|
|
[out] DWORD *pdwHelpContext,
|
|
[out] BSTR *pBstrHelpFile);
|
|
|
|
[local]
|
|
HRESULT IsName(
|
|
[in, out] LPOLESTR szNameBuf,
|
|
[in] ULONG lHashVal,
|
|
[out] BOOL *pfName);
|
|
|
|
[call_as(IsName)]
|
|
HRESULT RemoteIsName(
|
|
[in] LPOLESTR szNameBuf,
|
|
[in] ULONG lHashVal,
|
|
[out] BOOL *pfName,
|
|
[out] BSTR *pBstrLibName);
|
|
|
|
[local]
|
|
HRESULT FindName(
|
|
[in, out] LPOLESTR szNameBuf,
|
|
[in] ULONG lHashVal,
|
|
[out, size_is(*pcFound), length_is(*pcFound)] ITypeInfo **ppTInfo,
|
|
[out, size_is(*pcFound), length_is(*pcFound)] MEMBERID *rgMemId,
|
|
[in, out] USHORT *pcFound);
|
|
|
|
[call_as(FindName)]
|
|
HRESULT RemoteFindName(
|
|
[in] LPOLESTR szNameBuf,
|
|
[in] ULONG lHashVal,
|
|
[out, size_is(*pcFound), length_is(*pcFound)] ITypeInfo **ppTInfo,
|
|
[out, size_is(*pcFound), length_is(*pcFound)] MEMBERID *rgMemId,
|
|
[in, out] USHORT *pcFound,
|
|
[out] BSTR *pBstrLibName);
|
|
|
|
[local]
|
|
void ReleaseTLibAttr(
|
|
[in] TLIBATTR *pTLibAttr);
|
|
|
|
[call_as(ReleaseTLibAttr)]
|
|
HRESULT LocalReleaseTLibAttr();
|
|
}
|
|
|
|
[
|
|
object,
|
|
uuid(00020411-0000-0000-C000-000000000046),
|
|
pointer_default(unique)
|
|
]
|
|
interface ITypeLib2 : ITypeLib
|
|
{
|
|
typedef [unique] ITypeLib2 *LPTYPELIB2;
|
|
|
|
HRESULT GetCustData(
|
|
[in] REFGUID guid,
|
|
[out] VARIANT *pVarVal);
|
|
|
|
[local]
|
|
HRESULT GetLibStatistics(
|
|
[out] ULONG *pcUniqueNames,
|
|
[out] ULONG *pcchUniqueNames);
|
|
|
|
[call_as(GetLibStatistics)]
|
|
HRESULT RemoteGetLibStatistics(
|
|
[out] ULONG *pcUniqueNames,
|
|
[out] ULONG *pcchUniqueNames);
|
|
|
|
[local]
|
|
HRESULT GetDocumentation2(
|
|
[in] INT index,
|
|
[in] LCID lcid,
|
|
[out] BSTR *pbstrHelpString,
|
|
[out] DWORD *pdwHelpStringContext,
|
|
[out] BSTR *pbstrHelpStringDll);
|
|
|
|
[call_as(GetDocumentation2)]
|
|
HRESULT RemoteGetDocumentation2(
|
|
[in] INT index,
|
|
[in] LCID lcid,
|
|
[in] DWORD refPtrFlags,
|
|
[out] BSTR *pbstrHelpString,
|
|
[out] DWORD *pdwHelpStringContext,
|
|
[out] BSTR *pbstrHelpStringDll);
|
|
|
|
HRESULT GetAllCustData(
|
|
[out] CUSTDATA *pCustData);
|
|
}
|
|
|
|
[
|
|
local,
|
|
object,
|
|
uuid(00020410-0000-0000-C000-000000000046),
|
|
pointer_default(unique)
|
|
]
|
|
interface ITypeChangeEvents : IUnknown
|
|
{
|
|
typedef [unique] ITypeChangeEvents *LPTYPECHANGEEVENTS;
|
|
|
|
typedef enum tagCHANGEKIND {
|
|
CHANGEKIND_ADDMEMBER,
|
|
CHANGEKIND_DELETEMEMBER,
|
|
CHANGEKIND_SETNAMES,
|
|
CHANGEKIND_SETDOCUMENTATION,
|
|
CHANGEKIND_GENERAL,
|
|
CHANGEKIND_INVALIDATE,
|
|
CHANGEKIND_CHANGEFAILED,
|
|
CHANGEKIND_MAX
|
|
} CHANGEKIND;
|
|
|
|
HRESULT RequestTypeChange(
|
|
[in] CHANGEKIND changeKind,
|
|
[in] ITypeInfo *pTInfoBefore,
|
|
[in] LPOLESTR pStrName,
|
|
[out] INT *pfCancel);
|
|
|
|
HRESULT AfterTypeChange(
|
|
[in] CHANGEKIND changeKind,
|
|
[in] ITypeInfo *pTInfoAfter,
|
|
[in] LPOLESTR pStrName);
|
|
}
|
|
|
|
[
|
|
object,
|
|
uuid(1CF2B120-547D-101B-8E65-08002B2BD119),
|
|
pointer_default(unique)
|
|
]
|
|
interface IErrorInfo : IUnknown
|
|
{
|
|
typedef [unique] IErrorInfo *LPERRORINFO;
|
|
|
|
HRESULT GetGUID(
|
|
[out] GUID *pGUID);
|
|
|
|
HRESULT GetSource(
|
|
[out] BSTR *pBstrSource);
|
|
|
|
HRESULT GetDescription(
|
|
[out] BSTR *pBstrDescription);
|
|
|
|
HRESULT GetHelpFile(
|
|
[out] BSTR *pBstrHelpFile);
|
|
|
|
HRESULT GetHelpContext(
|
|
[out] DWORD *pdwHelpContext);
|
|
}
|
|
|
|
[
|
|
object,
|
|
uuid(22F03340-547D-101B-8E65-08002B2BD119),
|
|
pointer_default(unique)
|
|
]
|
|
interface ICreateErrorInfo : IUnknown
|
|
{
|
|
typedef [unique] ICreateErrorInfo *LPCREATEERRORINFO;
|
|
|
|
HRESULT SetGUID(
|
|
[in] REFGUID rguid);
|
|
|
|
HRESULT SetSource(
|
|
[in] LPOLESTR szSource);
|
|
|
|
HRESULT SetDescription(
|
|
[in] LPOLESTR szDescription);
|
|
|
|
HRESULT SetHelpFile(
|
|
[in] LPOLESTR szHelpFile);
|
|
|
|
HRESULT SetHelpContext(
|
|
[in] DWORD dwHelpContext);
|
|
}
|
|
|
|
[
|
|
object,
|
|
uuid(DF0B3D60-548F-101B-8E65-08002B2BD119),
|
|
pointer_default(unique)
|
|
]
|
|
interface ISupportErrorInfo : IUnknown
|
|
{
|
|
typedef [unique] ISupportErrorInfo *LPSUPPORTERRORINFO;
|
|
|
|
HRESULT InterfaceSupportsErrorInfo(
|
|
[in] REFIID riid);
|
|
}
|
|
|
|
[
|
|
object,
|
|
uuid(0000002E-0000-0000-C000-000000000046)
|
|
]
|
|
interface ITypeFactory : IUnknown
|
|
{
|
|
HRESULT CreateFromTypeInfo(
|
|
[in] ITypeInfo *pTypeInfo,
|
|
[in] REFIID riid,
|
|
[out, iid_is(riid)] IUnknown **ppv);
|
|
}
|
|
|
|
[
|
|
local,
|
|
object,
|
|
uuid(0000002D-0000-0000-C000-000000000046)
|
|
]
|
|
interface ITypeMarshal : IUnknown
|
|
{
|
|
HRESULT Size(
|
|
[in] PVOID pvType,
|
|
[in] DWORD dwDestContext,
|
|
[in] PVOID pvDestContext,
|
|
[out] ULONG *pSize);
|
|
|
|
HRESULT Marshal(
|
|
[in] PVOID pvType,
|
|
[in] DWORD dwDestContext,
|
|
[in] PVOID pvDestContext,
|
|
[in] ULONG cbBufferLength,
|
|
[out] BYTE *pBuffer,
|
|
[out] ULONG *pcbWritten);
|
|
|
|
HRESULT Unmarshal(
|
|
[out] PVOID pvType,
|
|
[in] DWORD dwFlags,
|
|
[in] ULONG cbBufferLength,
|
|
[in] BYTE *pBuffer,
|
|
[out] ULONG *pcbRead);
|
|
|
|
HRESULT Free(
|
|
[in] PVOID pvType);
|
|
}
|
|
|
|
[
|
|
local,
|
|
object,
|
|
uuid(0000002F-0000-0000-C000-000000000046)
|
|
]
|
|
interface IRecordInfo : IUnknown
|
|
{
|
|
typedef [unique] IRecordInfo *LPRECORDINFO;
|
|
|
|
HRESULT RecordInit(
|
|
[out] PVOID pvNew);
|
|
|
|
HRESULT RecordClear(
|
|
[in] PVOID pvExisting);
|
|
|
|
HRESULT RecordCopy(
|
|
[in] PVOID pvExisting,
|
|
[out] PVOID pvNew);
|
|
|
|
HRESULT GetGuid(
|
|
[out] GUID *pguid);
|
|
|
|
HRESULT GetName(
|
|
[out] BSTR *pbstrName);
|
|
|
|
HRESULT GetSize(
|
|
[out] ULONG *pcbSize);
|
|
|
|
HRESULT GetTypeInfo(
|
|
[out] ITypeInfo **ppTypeInfo);
|
|
|
|
HRESULT GetField(
|
|
[in] PVOID pvData,
|
|
[in] LPCOLESTR szFieldName,
|
|
[out] VARIANT *pvarField);
|
|
|
|
HRESULT GetFieldNoCopy(
|
|
[in] PVOID pvData,
|
|
[in] LPCOLESTR szFieldName,
|
|
[out] VARIANT *pvarField,
|
|
[out] PVOID *ppvDataCArray);
|
|
|
|
HRESULT PutField(
|
|
[in] ULONG wFlags,
|
|
[in, out] PVOID pvData,
|
|
[in] LPCOLESTR szFieldName,
|
|
[in] VARIANT *pvarField);
|
|
|
|
HRESULT PutFieldNoCopy(
|
|
[in] ULONG wFlags,
|
|
[in, out] PVOID pvData,
|
|
[in] LPCOLESTR szFieldName,
|
|
[in] VARIANT *pvarField);
|
|
|
|
HRESULT GetFieldNames(
|
|
[in, out] ULONG *pcNames,
|
|
[out, size_is(*pcNames), length_is(*pcNames)] BSTR *rgBstrNames);
|
|
|
|
BOOL IsMatchingType(
|
|
[in] IRecordInfo *pRecordInfo);
|
|
|
|
PVOID RecordCreate();
|
|
|
|
HRESULT RecordCreateCopy(
|
|
[in] PVOID pvSource,
|
|
[out] PVOID *ppvDest);
|
|
|
|
HRESULT RecordDestroy(
|
|
[in] PVOID pvRecord);
|
|
}
|
|
|
|
[
|
|
local,
|
|
object,
|
|
uuid(00020405-0000-0000-C000-000000000046),
|
|
pointer_default(unique)
|
|
]
|
|
interface ICreateTypeInfo : IUnknown
|
|
{
|
|
typedef [unique] ICreateTypeInfo *LPCREATETYPEINFO;
|
|
|
|
HRESULT SetGuid(
|
|
[in] REFGUID guid);
|
|
|
|
HRESULT SetTypeFlags(
|
|
[in] UINT uTypeFlags);
|
|
|
|
HRESULT SetDocString(
|
|
[in] LPOLESTR pStrDoc);
|
|
|
|
HRESULT SetHelpContext(
|
|
[in] DWORD dwHelpContext);
|
|
|
|
HRESULT SetVersion(
|
|
[in] WORD wMajorVerNum,
|
|
[in] WORD wMinorVerNum);
|
|
|
|
HRESULT AddRefTypeInfo(
|
|
[in] ITypeInfo *pTInfo,
|
|
[in] HREFTYPE *phRefType);
|
|
|
|
HRESULT AddFuncDesc(
|
|
[in] UINT index,
|
|
[in] FUNCDESC *pFuncDesc);
|
|
|
|
HRESULT AddImplType(
|
|
[in] UINT index,
|
|
[in] HREFTYPE hRefType);
|
|
|
|
HRESULT SetImplTypeFlags(
|
|
[in] UINT index,
|
|
[in] INT implTypeFlags);
|
|
|
|
HRESULT SetAlignment(
|
|
[in] WORD cbAlignment);
|
|
|
|
HRESULT SetSchema(
|
|
[in] LPOLESTR pStrSchema);
|
|
|
|
HRESULT AddVarDesc(
|
|
[in] UINT index,
|
|
[in] VARDESC *pVarDesc);
|
|
|
|
HRESULT SetFuncAndParamNames(
|
|
[in] UINT index,
|
|
[in, size_is(cNames)] LPOLESTR *rgszNames,
|
|
[in] UINT cNames);
|
|
|
|
HRESULT SetVarName(
|
|
[in] UINT index,
|
|
[in] LPOLESTR szName);
|
|
|
|
HRESULT SetTypeDescAlias(
|
|
[in] TYPEDESC *pTDescAlias);
|
|
|
|
HRESULT DefineFuncAsDllEntry(
|
|
[in] UINT index,
|
|
[in] LPOLESTR szDllName,
|
|
[in] LPOLESTR szProcName);
|
|
|
|
HRESULT SetFuncDocString(
|
|
[in] UINT index,
|
|
[in] LPOLESTR szDocString);
|
|
|
|
HRESULT SetVarDocString(
|
|
[in] UINT index,
|
|
[in] LPOLESTR szDocString);
|
|
|
|
HRESULT SetFuncHelpContext(
|
|
[in] UINT index,
|
|
[in] DWORD dwHelpContext);
|
|
|
|
HRESULT SetVarHelpContext(
|
|
[in] UINT index,
|
|
[in] DWORD dwHelpContext);
|
|
|
|
HRESULT SetMops(
|
|
[in] UINT index,
|
|
[in] BSTR bstrMops);
|
|
|
|
HRESULT SetTypeIdldesc(
|
|
[in] IDLDESC * pIdlDesc);
|
|
|
|
HRESULT LayOut();
|
|
}
|
|
|
|
[
|
|
local,
|
|
object,
|
|
uuid(0002040E-0000-0000-C000-000000000046),
|
|
pointer_default(unique)
|
|
]
|
|
interface ICreateTypeInfo2 : ICreateTypeInfo
|
|
{
|
|
typedef [unique] ICreateTypeInfo2 *LPCREATETYPEINFO2;
|
|
|
|
HRESULT DeleteFuncDesc(
|
|
[in] UINT index);
|
|
|
|
HRESULT DeleteFuncDescByMemId(
|
|
[in] MEMBERID memid,
|
|
[in] INVOKEKIND invKind);
|
|
|
|
HRESULT DeleteVarDesc(
|
|
[in] UINT index);
|
|
|
|
HRESULT DeleteVarDescByMemId(
|
|
[in] MEMBERID memid);
|
|
|
|
HRESULT DeleteImplType(
|
|
[in] UINT index);
|
|
|
|
HRESULT SetCustData(
|
|
[in] REFGUID guid,
|
|
[in] VARIANT *pVarVal);
|
|
|
|
HRESULT SetFuncCustData(
|
|
[in] UINT index,
|
|
[in] REFGUID guid,
|
|
[in] VARIANT *pVarVal);
|
|
|
|
HRESULT SetParamCustData(
|
|
[in] UINT indexFunc,
|
|
[in] UINT indexParam,
|
|
[in] REFGUID guid,
|
|
[in] VARIANT *pVarVal);
|
|
|
|
HRESULT SetVarCustData(
|
|
[in] UINT index,
|
|
[in] REFGUID guid,
|
|
[in] VARIANT *pVarVal);
|
|
|
|
HRESULT SetImplTypeCustData(
|
|
[in] UINT index,
|
|
[in] REFGUID guid,
|
|
[in] VARIANT *pVarVal);
|
|
|
|
HRESULT SetHelpStringContext(
|
|
[in] ULONG dwHelpStringContext);
|
|
|
|
HRESULT SetFuncHelpStringContext(
|
|
[in] UINT index,
|
|
[in] ULONG dwHelpStringContext);
|
|
|
|
HRESULT SetVarHelpStringContext(
|
|
[in] UINT index,
|
|
[in] ULONG dwHelpStringContext);
|
|
|
|
HRESULT Invalidate();
|
|
|
|
HRESULT SetName(
|
|
[in] LPOLESTR szName);
|
|
}
|
|
|
|
[
|
|
local,
|
|
object,
|
|
uuid(00020406-0000-0000-C000-000000000046),
|
|
pointer_default(unique)
|
|
]
|
|
interface ICreateTypeLib : IUnknown
|
|
{
|
|
typedef [unique] ICreateTypeLib *LPCREATETYPELIB;
|
|
|
|
HRESULT CreateTypeInfo(
|
|
[in] LPOLESTR szName,
|
|
[in] TYPEKIND tkind,
|
|
[out] ICreateTypeInfo **ppCTInfo);
|
|
|
|
HRESULT SetName(
|
|
[in] LPOLESTR szName);
|
|
|
|
HRESULT SetVersion(
|
|
[in] WORD wMajorVerNum,
|
|
[in] WORD wMinorVerNum);
|
|
|
|
HRESULT SetGuid(
|
|
[in] REFGUID guid);
|
|
|
|
HRESULT SetDocString(
|
|
[in] LPOLESTR szDoc);
|
|
|
|
HRESULT SetHelpFileName(
|
|
[in] LPOLESTR szHelpFileName);
|
|
|
|
HRESULT SetHelpContext(
|
|
[in] DWORD dwHelpContext);
|
|
|
|
HRESULT SetLcid(
|
|
[in] LCID lcid);
|
|
|
|
HRESULT SetLibFlags(
|
|
[in] UINT uLibFlags);
|
|
|
|
HRESULT SaveAllChanges();
|
|
}
|
|
|
|
[
|
|
local,
|
|
object,
|
|
uuid(0002040F-0000-0000-C000-000000000046),
|
|
pointer_default(unique)
|
|
]
|
|
interface ICreateTypeLib2 : ICreateTypeLib
|
|
{
|
|
typedef [unique] ICreateTypeLib2 *LPCREATETYPELIB2;
|
|
|
|
HRESULT DeleteTypeInfo(
|
|
[in] LPOLESTR szName);
|
|
|
|
HRESULT SetCustData(
|
|
[in] REFGUID guid,
|
|
[in] VARIANT *pVarVal);
|
|
|
|
HRESULT SetHelpStringContext(
|
|
[in] ULONG dwHelpStringContext);
|
|
|
|
HRESULT SetHelpStringDll(
|
|
[in] LPOLESTR szFileName);
|
|
}
|
|
|
|
|
|
/*****************************************************************************
|
|
* IErrorLog interface
|
|
*/
|
|
[
|
|
object,
|
|
uuid(3127ca40-446e-11ce-8135-00aa004bb851),
|
|
pointer_default(unique)
|
|
]
|
|
interface IErrorLog : IUnknown
|
|
{
|
|
typedef IErrorLog *LPERRORLOG;
|
|
|
|
HRESULT AddError(
|
|
[in] LPCOLESTR pszPropName,
|
|
[in] EXCEPINFO *pExcepInfo);
|
|
}
|
|
|
|
|
|
/*****************************************************************************
|
|
* IPropertyBag interface
|
|
*/
|
|
[
|
|
object,
|
|
uuid(55272a00-42cb-11ce-8135-00aa004bb851),
|
|
pointer_default(unique)
|
|
]
|
|
interface IPropertyBag : IUnknown
|
|
{
|
|
typedef IPropertyBag *LPPROPERTYBAG;
|
|
|
|
[local]
|
|
HRESULT Read(
|
|
[in] LPCOLESTR pszPropName,
|
|
[in, out] VARIANT *pVar,
|
|
[in] IErrorLog *pErrorLog);
|
|
|
|
[call_as(Read)]
|
|
HRESULT RemoteRead(
|
|
[in] LPCOLESTR pszPropName,
|
|
[out] VARIANT *pVar,
|
|
[in] IErrorLog *pErrorLog,
|
|
[in] DWORD varType,
|
|
[in] IUnknown *pUnkObj);
|
|
|
|
HRESULT Write(
|
|
[in] LPCOLESTR pszPropName,
|
|
[in] VARIANT *pVar);
|
|
}
|