2 * Defines the COM interfaces and APIs related to OLE automation support.
4 * Depends on 'obj_base.h'.
7 #ifndef __WINE_WINE_OBJ_OLEAUT_H
8 #define __WINE_WINE_OBJ_OLEAUT_H
13 /*****************************************************************************
14 * Predeclare the interfaces
16 DEFINE_OLEGUID(IID_IDispatch, 0x00020400,0,0);
17 typedef struct IDispatch IDispatch,*LPDISPATCH;
19 DEFINE_OLEGUID(IID_ITypeInfo, 0x00020401,0,0);
20 typedef struct ITypeInfo ITypeInfo,*LPTYPEINFO;
22 DEFINE_OLEGUID(IID_ITypeLib, 0x00020402,0,0);
23 typedef struct ITypeLib ITypeLib,*LPTYPELIB;
25 DEFINE_OLEGUID(IID_ITypeComp, 0x00020403,0,0);
26 typedef struct ITypeComp ITypeComp,*LPTYPECOMP;
28 DEFINE_OLEGUID(IID_IEnumVariant, 0x00020404,0,0);
29 typedef struct IenumVariant IEnumVariant,*LPENUMVARIANT;
31 DEFINE_OLEGUID(IID_ICreateTypeInfo, 0x00020405,0,0);
32 typedef struct ICreateTypeInfo ICreateTypeInfo,*LPCREATETYPEINFO;
34 DEFINE_OLEGUID(IID_ICreateTypeLib, 0x00020406,0,0);
35 typedef struct ICreateTypeLib ICreateTypeLib,*LPCREATETYPELIB;
37 DEFINE_OLEGUID(IID_ICreateTypeInfo2,0x0002040E,0,0);
38 typedef struct ICreateTypeInfo2 ICreateTypeInfo2,*LPCREATETYPEINFO2;
40 DEFINE_OLEGUID(IID_ICreateTypeLib2, 0x0002040F,0,0);
41 typedef struct ICreateTypeLib2 ICreateTypeLib2,*LPCREATETYPELIB2;
43 DEFINE_OLEGUID(IID_ITypeChangeEvents,0x00020410,0,0);
44 typedef struct ITypeChangeEvents ITypeChangeEvents,*LPTYPECHANGEEVENTS;
46 DEFINE_OLEGUID(IID_ITypeLib2, 0x00020411,0,0);
47 typedef struct ITypeLib2 ITypeLib2,*LPTYPELIB2;
49 DEFINE_OLEGUID(IID_ITypeInfo2, 0x00020412,0,0);
50 typedef struct ITypeInfo2 ITypeInfo2,*LPTYPEINFO2;
52 DEFINE_GUID(IID_IErrorInfo, 0x1CF2B120,0x547D,0x101B,0x8E,0x65,
53 0x08,0x00, 0x2B,0x2B,0xD1,0x19);
54 typedef struct IErrorInfo IErrorInfo,*LPERRORINFO;
56 DEFINE_GUID(IID_ICreateErrorInfo, 0x22F03340,0x547D,0x101B,0x8E,0x65,
57 0x08,0x00, 0x2B,0x2B,0xD1,0x19);
58 typedef struct ICreateErrorInfo ICreateErrorInfo,*LPCREATEERRORINFO;
60 DEFINE_GUID(IID_ISupportErrorInfo, 0xDF0B3D60,0x547D,0x101B,0x8E,0x65,
61 0x08,0x00, 0x2B,0x2B,0xD1,0x19);
62 typedef struct ISupportErrorInfo ISupportErrorInfo,*LPSUPPORTERRORINFO;
64 /*****************************************************************************
65 * Automation data types
68 /*****************************************************************
69 * SafeArray defines and structs
72 #define FADF_AUTO ( 0x1 )
73 #define FADF_STATIC ( 0x2 )
74 #define FADF_EMBEDDED ( 0x4 )
75 #define FADF_FIXEDSIZE ( 0x10 )
76 #define FADF_BSTR ( 0x100 )
77 #define FADF_UNKNOWN ( 0x200 )
78 #define FADF_DISPATCH ( 0x400 )
79 #define FADF_VARIANT ( 0x800 )
80 #define FADF_RESERVED ( 0xf0e8 )
82 typedef struct tagSAFEARRAYBOUND
84 ULONG cElements; /* Number of elements in dimension */
85 LONG lLbound; /* Lower bound of dimension */
88 typedef struct tagSAFEARRAY
90 USHORT cDims; /* Count of array dimension */
91 USHORT fFeatures; /* Flags describing the array */
92 ULONG cbElements; /* Size of each element */
93 ULONG cLocks; /* Number of lock on array */
94 PVOID pvData; /* Pointer to data valid when cLocks > 0 */
95 SAFEARRAYBOUND rgsabound[ 1 ]; /* One bound for each dimension */
96 } SAFEARRAY, *LPSAFEARRAY;
100 * Data types for Variants.
139 VT_STREAMED_OBJECT = 68,
140 VT_STORED_OBJECT = 69,
147 VT_RESERVED = 0x8000,
149 VT_ILLEGALMASKED = 0xfff,
153 /* the largest valide type
155 #define VT_MAXVALIDTYPE VT_CLSID
159 * Declarations of the VARIANT structure and the VARIANT APIs.
163 * DISP_E_BADVARTYPE : The variant type vt in not a valid type of variant.
164 * DISP_E_OVERFLOW : The data pointed to by pvarSrc does not fit in the destination type.
165 * DISP_E_TYPEMISMATCH : The variant type vt is not a valid type of variant.
166 * E_INVALIDARG : One argument is invalid.
167 * E_OUTOFMEMORY : Memory could not be allocated for the conversion.
168 * DISP_E_ARRAYISLOCKED : The variant contains an array that is locked.
172 #define _wine_tagVARIANT_UNION_NAME
174 #define _wine_tagVARIANT_UNION_NAME u
178 typedef struct tagVARIANT VARIANT, *LPVARIANT;
179 typedef struct tagVARIANT VARIANTARG, *LPVARIANTARG;
186 union _wine_tagVARIANT_UNION_NAME
200 VARIANT_BOOL boolVal;
224 VARIANT_BOOL* pboolVal;
234 IDispatch** ppdispVal;
237 } _wine_tagVARIANT_UNION_NAME;
242 typedef struct tagDISPPARAMS
245 DISPID* rgdispidNamedArgs;
250 typedef struct tagEXCEPINFO {
254 BSTR bstrDescription;
258 HRESULT (__stdcall *pfnDeferredFillIn)(struct tagEXCEPINFO *);
260 } EXCEPINFO, * LPEXCEPINFO;
262 /*****************************************************************************
263 * IDispatch interface
265 #define ICOM_INTERFACE IDispatch
266 #define IDispatch_METHODS \
267 ICOM_METHOD1(HRESULT, GetTypeInfoCount, UINT*, pctinfo); \
268 ICOM_METHOD3(HRESULT, GetTypeInfo, UINT, iTInfo, LCID, lcid, ITypeInfo**, ppTInfo); \
269 ICOM_METHOD5(HRESULT, GetIDsOfNames, REFIID, riid, LPOLESTR*, rgszNames, UINT, cNames, LCID, lcid, DISPID*, rgDispId); \
270 ICOM_METHOD8(HRESULT, Invoke, DISPID, dispIdMember, REFIID, riid, LCID, lcid, WORD, wFlags, DISPPARAMS*, pDispParams, VARIANT*, pVarResult, EXCEPINFO*, pExepInfo, UINT*, puArgErr);
271 #define IDispatch_IMETHODS \
272 ICOM_INHERITS(IDispatch,IUnknown)
273 ICOM_DEFINE(IDispatch,IUnknown)
274 #undef ICOM_INTERFACE
276 #ifdef ICOM_CINTERFACE
277 /*** IUnknown methods ***/
278 #define IDispatch_QueryInterface(p,a,b) ICOM_CALL2(QueryInterface,p,a,b)
279 #define IDispatch_AddRef(p) ICOM_CALL (AddRef,p)
280 #define IDispatch_Release(p) ICOM_CALL (Release,p)
281 /*** IDispatch methods ***/
282 #define IDispatch_GetTypeInfoCount(p,a) ICOM_CALL1 (GetTypeInfoCount,p,a)
283 #define IDispatch_GetTypeInfo(p,a,b,c) ICOM_CALL3 (GetTypeInfo,p,b,c)
284 #define IDispatch_GetIDsOfNames(p,a,b,c,d,e) ICOM_CALL5 (GetIDsOfNames,p,a,b,c,d,e)
285 #define IDispatch_Invoke(p,a,b,c,d,e,f,g,h) ICOM_CALL8 (Invoke,p,a,b,c,d,e,f,g,h)
289 #endif /* __WINE_WINE_OBJ_OLEAUT_H */