288 lines
7.7 KiB
C
288 lines
7.7 KiB
C
/*
|
|
* Defines the COM interfaces and APIs related to OLE automation support.
|
|
*/
|
|
|
|
#ifndef __WINE_WINE_OBJ_OLEAUT_H
|
|
#define __WINE_WINE_OBJ_OLEAUT_H
|
|
|
|
#include "wine/obj_base.h"
|
|
|
|
/*****************************************************************************
|
|
* Predeclare the interfaces
|
|
*/
|
|
DEFINE_OLEGUID(IID_IDispatch, 0x00020400,0,0);
|
|
typedef struct IDispatch IDispatch,*LPDISPATCH;
|
|
|
|
DEFINE_OLEGUID(IID_ITypeInfo, 0x00020401,0,0);
|
|
typedef struct ITypeInfo ITypeInfo,*LPTYPEINFO;
|
|
|
|
DEFINE_OLEGUID(IID_ITypeLib, 0x00020402,0,0);
|
|
typedef struct ITypeLib ITypeLib,*LPTYPELIB;
|
|
|
|
DEFINE_OLEGUID(IID_ITypeComp, 0x00020403,0,0);
|
|
typedef struct ITypeComp ITypeComp,*LPTYPECOMP;
|
|
|
|
DEFINE_OLEGUID(IID_IEnumVariant, 0x00020404,0,0);
|
|
typedef struct IenumVariant IEnumVariant,*LPENUMVARIANT;
|
|
|
|
DEFINE_OLEGUID(IID_ICreateTypeInfo, 0x00020405,0,0);
|
|
typedef struct ICreateTypeInfo ICreateTypeInfo,*LPCREATETYPEINFO;
|
|
|
|
DEFINE_OLEGUID(IID_ICreateTypeLib, 0x00020406,0,0);
|
|
typedef struct ICreateTypeLib ICreateTypeLib,*LPCREATETYPELIB;
|
|
|
|
DEFINE_OLEGUID(IID_ICreateTypeInfo2,0x0002040E,0,0);
|
|
typedef struct ICreateTypeInfo2 ICreateTypeInfo2,*LPCREATETYPEINFO2;
|
|
|
|
DEFINE_OLEGUID(IID_ICreateTypeLib2, 0x0002040F,0,0);
|
|
typedef struct ICreateTypeLib2 ICreateTypeLib2,*LPCREATETYPELIB2;
|
|
|
|
DEFINE_OLEGUID(IID_ITypeChangeEvents,0x00020410,0,0);
|
|
typedef struct ITypeChangeEvents ITypeChangeEvents,*LPTYPECHANGEEVENTS;
|
|
|
|
DEFINE_OLEGUID(IID_ITypeLib2, 0x00020411,0,0);
|
|
typedef struct ITypeLib2 ITypeLib2,*LPTYPELIB2;
|
|
|
|
DEFINE_OLEGUID(IID_ITypeInfo2, 0x00020412,0,0);
|
|
typedef struct ITypeInfo2 ITypeInfo2,*LPTYPEINFO2;
|
|
|
|
DEFINE_GUID(IID_IErrorInfo, 0x1CF2B120,0x547D,0x101B,0x8E,0x65,
|
|
0x08,0x00, 0x2B,0x2B,0xD1,0x19);
|
|
typedef struct IErrorInfo IErrorInfo,*LPERRORINFO;
|
|
|
|
DEFINE_GUID(IID_ICreateErrorInfo, 0x22F03340,0x547D,0x101B,0x8E,0x65,
|
|
0x08,0x00, 0x2B,0x2B,0xD1,0x19);
|
|
typedef struct ICreateErrorInfo ICreateErrorInfo,*LPCREATEERRORINFO;
|
|
|
|
DEFINE_GUID(IID_ISupportErrorInfo, 0xDF0B3D60,0x547D,0x101B,0x8E,0x65,
|
|
0x08,0x00, 0x2B,0x2B,0xD1,0x19);
|
|
typedef struct ISupportErrorInfo ISupportErrorInfo,*LPSUPPORTERRORINFO;
|
|
|
|
/*****************************************************************************
|
|
* Automation data types
|
|
*/
|
|
|
|
/*****************************************************************
|
|
* SafeArray defines and structs
|
|
*/
|
|
|
|
#define FADF_AUTO ( 0x1 )
|
|
#define FADF_STATIC ( 0x2 )
|
|
#define FADF_EMBEDDED ( 0x4 )
|
|
#define FADF_FIXEDSIZE ( 0x10 )
|
|
#define FADF_BSTR ( 0x100 )
|
|
#define FADF_UNKNOWN ( 0x200 )
|
|
#define FADF_DISPATCH ( 0x400 )
|
|
#define FADF_VARIANT ( 0x800 )
|
|
#define FADF_RESERVED ( 0xf0e8 )
|
|
|
|
typedef struct tagSAFEARRAYBOUND
|
|
{
|
|
ULONG cElements; /* Number of elements in dimension */
|
|
LONG lLbound; /* Lower bound of dimension */
|
|
} SAFEARRAYBOUND;
|
|
|
|
typedef struct tagSAFEARRAY
|
|
{
|
|
USHORT cDims; /* Count of array dimension */
|
|
USHORT fFeatures; /* Flags describing the array */
|
|
ULONG cbElements; /* Size of each element */
|
|
ULONG cLocks; /* Number of lock on array */
|
|
PVOID pvData; /* Pointer to data valid when cLocks > 0 */
|
|
SAFEARRAYBOUND rgsabound[ 1 ]; /* One bound for each dimension */
|
|
} SAFEARRAY, *LPSAFEARRAY;
|
|
|
|
|
|
/*
|
|
* Data types for Variants.
|
|
*/
|
|
|
|
enum VARENUM {
|
|
VT_EMPTY = 0,
|
|
VT_NULL = 1,
|
|
VT_I2 = 2,
|
|
VT_I4 = 3,
|
|
VT_R4 = 4,
|
|
VT_R8 = 5,
|
|
VT_CY = 6,
|
|
VT_DATE = 7,
|
|
VT_BSTR = 8,
|
|
VT_DISPATCH = 9,
|
|
VT_ERROR = 10,
|
|
VT_BOOL = 11,
|
|
VT_VARIANT = 12,
|
|
VT_UNKNOWN = 13,
|
|
VT_DECIMAL = 14,
|
|
VT_I1 = 16,
|
|
VT_UI1 = 17,
|
|
VT_UI2 = 18,
|
|
VT_UI4 = 19,
|
|
VT_I8 = 20,
|
|
VT_UI8 = 21,
|
|
VT_INT = 22,
|
|
VT_UINT = 23,
|
|
VT_VOID = 24,
|
|
VT_HRESULT = 25,
|
|
VT_PTR = 26,
|
|
VT_SAFEARRAY = 27,
|
|
VT_CARRAY = 28,
|
|
VT_USERDEFINED = 29,
|
|
VT_LPSTR = 30,
|
|
VT_LPWSTR = 31,
|
|
VT_FILETIME = 64,
|
|
VT_BLOB = 65,
|
|
VT_STREAM = 66,
|
|
VT_STORAGE = 67,
|
|
VT_STREAMED_OBJECT = 68,
|
|
VT_STORED_OBJECT = 69,
|
|
VT_BLOB_OBJECT = 70,
|
|
VT_CF = 71,
|
|
VT_CLSID = 72,
|
|
VT_VECTOR = 0x1000,
|
|
VT_ARRAY = 0x2000,
|
|
VT_BYREF = 0x4000,
|
|
VT_RESERVED = 0x8000,
|
|
VT_ILLEGAL = 0xffff,
|
|
VT_ILLEGALMASKED = 0xfff,
|
|
VT_TYPEMASK = 0xfff
|
|
};
|
|
|
|
/* the largest valide type
|
|
*/
|
|
#define VT_MAXVALIDTYPE VT_CLSID
|
|
|
|
|
|
/*
|
|
* Declarations of the VARIANT structure and the VARIANT APIs.
|
|
*/
|
|
|
|
/* S_OK : Success.
|
|
* DISP_E_BADVARTYPE : The variant type vt in not a valid type of variant.
|
|
* DISP_E_OVERFLOW : The data pointed to by pvarSrc does not fit in the destination type.
|
|
* DISP_E_TYPEMISMATCH : The variant type vt is not a valid type of variant.
|
|
* E_INVALIDARG : One argument is invalid.
|
|
* E_OUTOFMEMORY : Memory could not be allocated for the conversion.
|
|
* DISP_E_ARRAYISLOCKED : The variant contains an array that is locked.
|
|
*/
|
|
|
|
#ifdef __cplusplus
|
|
#define _wine_tagVARIANT_UNION_NAME
|
|
#else
|
|
#define _wine_tagVARIANT_UNION_NAME u
|
|
#endif
|
|
/* end FIXME */
|
|
|
|
typedef struct tagVARIANT VARIANT, *LPVARIANT;
|
|
typedef struct tagVARIANT VARIANTARG, *LPVARIANTARG;
|
|
|
|
struct tagVARIANT {
|
|
VARTYPE vt;
|
|
WORD wReserved1;
|
|
WORD wReserved2;
|
|
WORD wReserved3;
|
|
union _wine_tagVARIANT_UNION_NAME
|
|
{
|
|
/* By value.
|
|
*/
|
|
CHAR cVal;
|
|
USHORT uiVal;
|
|
ULONG ulVal;
|
|
INT intVal;
|
|
UINT uintVal;
|
|
BYTE bVal;
|
|
short iVal;
|
|
long lVal;
|
|
float fltVal;
|
|
double dblVal;
|
|
VARIANT_BOOL boolVal;
|
|
SCODE scode;
|
|
DATE date;
|
|
BSTR bstrVal;
|
|
CY cyVal;
|
|
/*
|
|
DECIMAL decVal;
|
|
IUnknown* punkVal;
|
|
IDispatch* pdispVal;
|
|
*/
|
|
SAFEARRAY* parray;
|
|
|
|
/* By reference
|
|
*/
|
|
CHAR* pcVal;
|
|
USHORT* puiVal;
|
|
ULONG* pulVal;
|
|
INT* pintVal;
|
|
UINT* puintVal;
|
|
BYTE* pbVal;
|
|
short* piVal;
|
|
long* plVal;
|
|
float* pfltVal;
|
|
double* pdblVal;
|
|
VARIANT_BOOL* pboolVal;
|
|
SCODE* pscode;
|
|
DATE* pdate;
|
|
BSTR* pbstrVal;
|
|
VARIANT* pvarVal;
|
|
PVOID byref;
|
|
CY* pcyVal;
|
|
/*
|
|
DECIMAL* pdecVal;
|
|
IUnknown** ppunkVal;
|
|
IDispatch** ppdispVal;
|
|
*/
|
|
SAFEARRAY** pparray;
|
|
} _wine_tagVARIANT_UNION_NAME;
|
|
};
|
|
|
|
typedef LONG DISPID;
|
|
|
|
typedef struct tagDISPPARAMS
|
|
{
|
|
VARIANTARG* rgvarg;
|
|
DISPID* rgdispidNamedArgs;
|
|
UINT cArgs;
|
|
UINT cNamedArgs;
|
|
} DISPPARAMS;
|
|
|
|
typedef struct tagEXCEPINFO {
|
|
WORD wCode;
|
|
WORD wReserved;
|
|
BSTR bstrSource;
|
|
BSTR bstrDescription;
|
|
BSTR bstrHelpFile;
|
|
DWORD dwHelpContext;
|
|
PVOID pvReserved;
|
|
HRESULT (__stdcall *pfnDeferredFillIn)(struct tagEXCEPINFO *);
|
|
SCODE scode;
|
|
} EXCEPINFO, * LPEXCEPINFO;
|
|
|
|
/*****************************************************************************
|
|
* IDispatch interface
|
|
*/
|
|
#define ICOM_INTERFACE IDispatch
|
|
#define IDispatch_METHODS \
|
|
ICOM_METHOD1(HRESULT, GetTypeInfoCount, UINT*, pctinfo); \
|
|
ICOM_METHOD3(HRESULT, GetTypeInfo, UINT, iTInfo, LCID, lcid, ITypeInfo**, ppTInfo); \
|
|
ICOM_METHOD5(HRESULT, GetIDsOfNames, REFIID, riid, LPOLESTR*, rgszNames, UINT, cNames, LCID, lcid, DISPID*, rgDispId); \
|
|
ICOM_METHOD8(HRESULT, Invoke, DISPID, dispIdMember, REFIID, riid, LCID, lcid, WORD, wFlags, DISPPARAMS*, pDispParams, VARIANT*, pVarResult, EXCEPINFO*, pExepInfo, UINT*, puArgErr);
|
|
#define IDispatch_IMETHODS \
|
|
ICOM_INHERITS(IDispatch,IUnknown)
|
|
ICOM_DEFINE(IDispatch,IUnknown)
|
|
#undef ICOM_INTERFACE
|
|
|
|
#ifdef ICOM_CINTERFACE
|
|
/*** IUnknown methods ***/
|
|
#define IDispatch_QueryInterface(p,a,b) ICOM_CALL2(QueryInterface,p,a,b)
|
|
#define IDispatch_AddRef(p) ICOM_CALL (AddRef,p)
|
|
#define IDispatch_Release(p) ICOM_CALL (Release,p)
|
|
/*** IDispatch methods ***/
|
|
#define IDispatch_GetTypeInfoCount(p,a) ICOM_CALL1 (GetTypeInfoCount,p,a)
|
|
#define IDispatch_GetTypeInfo(p,a,b,c) ICOM_CALL3 (GetTypeInfo,p,b,c)
|
|
#define IDispatch_GetIDsOfNames(p,a,b,c,d,e) ICOM_CALL5 (GetIDsOfNames,p,a,b,c,d,e)
|
|
#define IDispatch_Invoke(p,a,b,c,d,e,f,g,h) ICOM_CALL8 (Invoke,p,a,b,c,d,e,f,g,h)
|
|
#endif
|
|
|
|
|
|
#endif /* __WINE_WINE_OBJ_OLEAUT_H */
|
|
|