Moved some definitions to their proper include file.
diff --git a/include/mapidefs.h b/include/mapidefs.h
index 19f94ef..082f5d6 100644
--- a/include/mapidefs.h
+++ b/include/mapidefs.h
@@ -3,14 +3,21 @@
#include "wintypes.h"
-typedef union tagCY CY;
-
-union tagCY{
+#ifndef _tagCY_DEFINED
+#define _tagCY_DEFINED
+typedef union tagCY
+{
struct {
+#ifdef BIG_ENDIAN
+ long Hi;
+ long Lo;
+#else
unsigned long Lo;
long Hi;
+#endif
} u;
LONGLONG int64;
-};
+} CY;
+#endif /* _tagCY_DEFINED */
#endif /*__WINE_MAPIDEFS_H*/
diff --git a/include/objbase.h b/include/objbase.h
index 3335a31..b41f35c 100644
--- a/include/objbase.h
+++ b/include/objbase.h
@@ -18,102 +18,5 @@
/* the following depend on obj_moniker.h */
#include "wine/obj_dataobject.h"
-/* FIXME: the following should be moved to one of the wine/obj_XXX.h headers */
-
-/*****************************************************************************
- * CoXXX API
- */
-/* FIXME: more CoXXX functions are missing */
-DWORD WINAPI CoBuildVersion(void);
-
-typedef enum tagCOINIT
-{
- COINIT_APARTMENTTHREADED = 0x2, /* Apartment model */
- COINIT_MULTITHREADED = 0x0, /* OLE calls objects on any thread */
- COINIT_DISABLE_OLE1DDE = 0x4, /* Don't use DDE for Ole1 support */
- COINIT_SPEED_OVER_MEMORY = 0x8 /* Trade memory for speed */
-} COINIT;
-
-HRESULT WINAPI CoInitialize16(LPVOID lpReserved);
-HRESULT WINAPI CoInitialize32(LPVOID lpReserved);
-#define CoInitialize WINELIB_NAME(CoInitialize)
-
-HRESULT WINAPI CoInitializeEx32(LPVOID lpReserved, DWORD dwCoInit);
-#define CoInitializeEx WINELIB_NAME(CoInitializeEx)
-
-void WINAPI CoUninitialize16(void);
-void WINAPI CoUninitialize32(void);
-#define CoUninitialize WINELIB_NAME(CoUninitialize)
-
-HRESULT WINAPI CoCreateGuid(GUID *pguid);
-
-/* class registration flags; passed to CoRegisterClassObject */
-typedef enum tagREGCLS
-{
- REGCLS_SINGLEUSE = 0,
- REGCLS_MULTIPLEUSE = 1,
- REGCLS_MULTI_SEPARATE = 2,
- REGCLS_SUSPENDED = 4
-} REGCLS;
-
-HRESULT WINAPI CoRegisterClassObject16(REFCLSID rclsid, LPUNKNOWN pUnk, DWORD dwClsContext, DWORD flags, LPDWORD lpdwRegister);
-HRESULT WINAPI CoRegisterClassObject32(REFCLSID rclsid,LPUNKNOWN pUnk,DWORD dwClsContext,DWORD flags,LPDWORD lpdwRegister);
-#define CoRegisterClassObject WINELIB_NAME(CoRegisterClassObject)
-
-HRESULT WINAPI CoRevokeClassObject32(DWORD dwRegister);
-#define CoRevokeClassObject WINELIB_NAME(CoRevokeClassObject)
-
-HRESULT WINAPI CoGetClassObject(REFCLSID rclsid, DWORD dwClsContext,LPVOID pvReserved, REFIID iid, LPVOID *ppv);
-
-
-HRESULT WINAPI CoCreateInstance(REFCLSID rclsid,LPUNKNOWN pUnkOuter,DWORD dwClsContext,REFIID iid,LPVOID *ppv);
-void WINAPI CoFreeLibrary(HINSTANCE32 hLibrary);
-void WINAPI CoFreeAllLibraries(void);
-void WINAPI CoFreeUnusedLibraries(void);
-HRESULT WINAPI CoFileTimeNow(FILETIME *lpFileTime);
-LPVOID WINAPI CoTaskMemAlloc(ULONG size);
-void WINAPI CoTaskMemFree(LPVOID ptr);
-HINSTANCE32 WINAPI CoLoadLibrary(LPOLESTR16 lpszLibName, BOOL32 bAutoFree);
-
-HRESULT WINAPI CoLockObjectExternal16(LPUNKNOWN pUnk,BOOL16 fLock,BOOL16 fLastUnlockReleases);
-HRESULT WINAPI CoLockObjectExternal32(LPUNKNOWN pUnk,BOOL32 fLock,BOOL32 fLastUnlockReleases);
-#define CoLockObjectExternal WINELIB_NAME(CoLockObjectExternal)
-
-
-/* internal Wine stuff */
-
-
-/*****************************************************************************
- * IClassFactory interface
- */
-
-typedef struct _IClassFactory {
- /* IUnknown fields */
- ICOM_VTABLE(IClassFactory)* lpvtbl;
- DWORD ref;
-} _IClassFactory;
-
-HRESULT WINE_StringFromCLSID(const CLSID *id, LPSTR);
-
-
-/*****************************************************************************
- * IMalloc interface
- */
-/* private prototypes for the constructors */
-LPMALLOC16 IMalloc16_Constructor(void);
-LPMALLOC32 IMalloc32_Constructor(void);
-
-
-/*****************************************************************************
- * IUnknown interface
- */
-
-typedef struct _IUnknown {
- /* IUnknown fields */
- ICOM_VTABLE(IUnknown)* lpvtbl;
- DWORD ref;
-} _IUnknown;
-
-LPUNKNOWN IUnknown_Constructor(void);
#endif /* __WINE_OBJBASE_H */
diff --git a/include/ole.h b/include/ole.h
index a71dfe5..5cd4d9c 100644
--- a/include/ole.h
+++ b/include/ole.h
@@ -19,7 +19,6 @@
#define OLESTR32(x) L##x /* probably wrong */
#define OLESTR WINELIB_NAME(OLESTR)
-typedef unsigned short VARTYPE;
typedef LONG DISPID;
/* object types */
@@ -281,39 +280,4 @@
void WINAPI CoFreeUnusedLibraries(void);
void WINAPI CoFreeAllLibraries(void);
-typedef enum tagCALLCONV {
- CC_CDECL = 1,
- CC_MSCPASCAL = CC_CDECL + 1,
- CC_PASCAL = CC_MSCPASCAL,
- CC_MACPASCAL = CC_PASCAL + 1,
- CC_STDCALL = CC_MACPASCAL + 1,
- CC_RESERVED = CC_STDCALL + 1,
- CC_SYSCALL = CC_RESERVED + 1,
- CC_MPWCDECL = CC_SYSCALL + 1,
- CC_MPWPASCAL = CC_MPWCDECL + 1,
- CC_MAX = CC_MPWPASCAL + 1
-} CALLCONV;
-
-typedef struct tagPARAMDATA {
- OLECHAR16 * szName; /* parameter name */
- VARTYPE vt; /* parameter type */
-} PARAMDATA, * LPPARAMDATA;
-
-typedef struct tagMETHODDATA {
- OLECHAR16 * szName; /* method name */
- PARAMDATA * ppdata; /* pointer to an array of PARAMDATAs */
- DISPID dispid; /* method ID */
- UINT16 iMeth; /* method index */
- CALLCONV cc; /* calling convention */
- UINT16 cArgs; /* count of arguments */
- WORD wFlags; /* same wFlags as on IDispatch::Invoke() */
- VARTYPE vtReturn;
-} METHODDATA, * LPMETHODDATA;
-
-typedef struct tagINTERFACEDATA {
- METHODDATA * pmethdata; /* pointer to an array of METHODDATAs */
- UINT16 cMembers; /* count of members */
-} INTERFACEDATA, * LPINTERFACEDATA;
-
-
#endif /* __WINE_OLE_H */
diff --git a/include/oleauto.h b/include/oleauto.h
index ec344ff..483bbcf 100644
--- a/include/oleauto.h
+++ b/include/oleauto.h
@@ -150,14 +150,6 @@
* Data types for Variants.
*/
-/*
- * 0 == FALSE and -1 == TRUE
- */
-typedef short VARIANT_BOOL;
-
-#define VARIANT_TRUE ((VARIANT_BOOL)0xFFFF)
-#define VARIANT_FALSE ((VARIANT_BOOL)0x0000)
-
enum VARENUM {
VT_EMPTY = 0,
VT_NULL = 1,
@@ -830,4 +822,39 @@
#define VarUintFromDec32 VarUI4FromDec32
#define VarUintFromInt32 VarUI4FromI432
+
+typedef enum tagCALLCONV {
+ CC_CDECL = 1,
+ CC_MSCPASCAL = CC_CDECL + 1,
+ CC_PASCAL = CC_MSCPASCAL,
+ CC_MACPASCAL = CC_PASCAL + 1,
+ CC_STDCALL = CC_MACPASCAL + 1,
+ CC_RESERVED = CC_STDCALL + 1,
+ CC_SYSCALL = CC_RESERVED + 1,
+ CC_MPWCDECL = CC_SYSCALL + 1,
+ CC_MPWPASCAL = CC_MPWCDECL + 1,
+ CC_MAX = CC_MPWPASCAL + 1
+} CALLCONV;
+
+typedef struct tagPARAMDATA {
+ OLECHAR16 * szName; /* parameter name */
+ VARTYPE vt; /* parameter type */
+} PARAMDATA, * LPPARAMDATA;
+
+typedef struct tagMETHODDATA {
+ OLECHAR16 * szName; /* method name */
+ PARAMDATA * ppdata; /* pointer to an array of PARAMDATAs */
+ DISPID dispid; /* method ID */
+ UINT16 iMeth; /* method index */
+ CALLCONV cc; /* calling convention */
+ UINT16 cArgs; /* count of arguments */
+ WORD wFlags; /* same wFlags as on IDispatch::Invoke() */
+ VARTYPE vtReturn;
+} METHODDATA, * LPMETHODDATA;
+
+typedef struct tagINTERFACEDATA {
+ METHODDATA * pmethdata; /* pointer to an array of METHODDATAs */
+ UINT16 cMembers; /* count of members */
+} INTERFACEDATA, * LPINTERFACEDATA;
+
#endif /*__WINE_OLEAUTO_H*/
diff --git a/include/winbase.h b/include/winbase.h
index a4c8ec1..7960fa9 100644
--- a/include/winbase.h
+++ b/include/winbase.h
@@ -164,28 +164,18 @@
BOOL32 bInheritHandle;
} SECURITY_ATTRIBUTES, *LPSECURITY_ATTRIBUTES;
-typedef WORD SECURITY_DESCRIPTOR_CONTROL;
-
-/* The security descriptor structure */
-typedef struct {
- BYTE Revision;
- BYTE Sbz1;
- SECURITY_DESCRIPTOR_CONTROL Control;
- PSID Owner;
- PSID Group;
- PACL Sacl;
- PACL Dacl;
-} SECURITY_DESCRIPTOR, *PSECURITY_DESCRIPTOR;
-
typedef DWORD SECURITY_INFORMATION;
+#ifndef _FILETIME_
+#define _FILETIME_
/* 64 bit number of 100 nanoseconds intervals since January 1, 1601 */
typedef struct
{
DWORD dwLowDateTime;
DWORD dwHighDateTime;
} FILETIME, *LPFILETIME;
+#endif /* _FILETIME_ */
/* Find* structures */
typedef struct
diff --git a/include/wine/obj_moniker.h b/include/wine/obj_moniker.h
index 91565dd..a41c165 100644
--- a/include/wine/obj_moniker.h
+++ b/include/wine/obj_moniker.h
@@ -35,7 +35,6 @@
DEFINE_OLEGUID(IID_IRunningObjectTable, 0x00000010L, 0, 0);
typedef struct IRunningObjectTable IRunningObjectTable,*LPRUNNINGOBJECTTABLE;
-typedef struct COSERVERINFO COSERVERINFO; // must be defined !
/*********************************************************************************
diff --git a/include/wine/obj_propertystorage.h b/include/wine/obj_propertystorage.h
index 837daa1..cec645c 100644
--- a/include/wine/obj_propertystorage.h
+++ b/include/wine/obj_propertystorage.h
@@ -25,28 +25,411 @@
/*****************************************************************************
+ * Predeclare the structures
+ */
+
+typedef struct tagSTATPROPSETSTG STATPROPSETSTG;
+typedef struct tagSTATPROPSTG STATPROPSTG;
+
+
+/*****************************************************************************
+ * PROPSPEC structure
+ */
+
+// Reserved global Property IDs
+#define PID_DICTIONARY ( 0 )
+
+#define PID_CODEPAGE ( 0x1 )
+
+#define PID_FIRST_USABLE ( 0x2 )
+
+#define PID_FIRST_NAME_DEFAULT ( 0xfff )
+
+#define PID_LOCALE ( 0x80000000 )
+
+#define PID_MODIFY_TIME ( 0x80000001 )
+
+#define PID_SECURITY ( 0x80000002 )
+
+#define PID_ILLEGAL ( 0xffffffff )
+
+// Property IDs for the SummaryInformation Property Set
+
+#define PIDSI_TITLE 0x00000002L // VT_LPSTR
+#define PIDSI_SUBJECT 0x00000003L // VT_LPSTR
+#define PIDSI_AUTHOR 0x00000004L // VT_LPSTR
+#define PIDSI_KEYWORDS 0x00000005L // VT_LPSTR
+#define PIDSI_COMMENTS 0x00000006L // VT_LPSTR
+#define PIDSI_TEMPLATE 0x00000007L // VT_LPSTR
+#define PIDSI_LASTAUTHOR 0x00000008L // VT_LPSTR
+#define PIDSI_REVNUMBER 0x00000009L // VT_LPSTR
+#define PIDSI_EDITTIME 0x0000000aL // VT_FILETIME (UTC)
+#define PIDSI_LASTPRINTED 0x0000000bL // VT_FILETIME (UTC)
+#define PIDSI_CREATE_DTM 0x0000000cL // VT_FILETIME (UTC)
+#define PIDSI_LASTSAVE_DTM 0x0000000dL // VT_FILETIME (UTC)
+#define PIDSI_PAGECOUNT 0x0000000eL // VT_I4
+#define PIDSI_WORDCOUNT 0x0000000fL // VT_I4
+#define PIDSI_CHARCOUNT 0x00000010L // VT_I4
+#define PIDSI_THUMBNAIL 0x00000011L // VT_CF
+#define PIDSI_APPNAME 0x00000012L // VT_LPSTR
+#define PIDSI_DOC_SECURITY 0x00000013L // VT_I4
+#define PRSPEC_INVALID ( 0xffffffff )
+
+
+#define PRSPEC_LPWSTR ( 0 )
+#define PRSPEC_PROPID ( 1 )
+
+typedef struct tagPROPSPEC
+{
+ ULONG ulKind;
+ union
+ {
+ PROPID propid;
+ LPOLESTR32 lpwstr;
+ } u;
+} PROPSPEC;
+
+
+/*****************************************************************************
+ * STATPROPSETSTG structure
+ */
+/* Macros for parsing the OS Version of the Property Set Header */
+#define PROPSETHDR_OSVER_KIND(dwOSVer) HIWORD( (dwOSVer) )
+#define PROPSETHDR_OSVER_MAJOR(dwOSVer) LOBYTE(LOWORD( (dwOSVer) ))
+#define PROPSETHDR_OSVER_MINOR(dwOSVer) HIBYTE(LOWORD( (dwOSVer) ))
+#define PROPSETHDR_OSVERSION_UNKNOWN 0xFFFFFFFF
+
+struct tagSTATPROPSETSTG
+{
+ FMTID fmtid;
+ CLSID clsid;
+ DWORD grfFlags;
+ FILETIME mtime;
+ FILETIME ctime;
+ FILETIME atime;
+ DWORD dwOSVersion;
+};
+
+
+/*****************************************************************************
+ * STATPROPSTG structure
+ */
+struct tagSTATPROPSTG
+{
+ LPOLESTR32 lpwstrName;
+ PROPID propid;
+ VARTYPE vt;
+};
+
+
+/*****************************************************************************
* IEnumSTATPROPSETSTG interface
*/
-/* FIXME: not implemented */
+#define ICOM_INTERFACE IEnumSTATPROPSETSTG
+#define IEnumSTATPROPSETSTG_METHODS \
+ ICOM_METHOD3(HRESULT,Next, ULONG,celt, STATPROPSETSTG*,rgelt, ULONG*,pceltFethed); \
+ ICOM_METHOD1(HRESULT,Skip, ULONG,celt); \
+ ICOM_METHOD (HRESULT,Reset); \
+ ICOM_METHOD1(HRESULT,Clone, IEnumSTATPROPSETSTG**,ppenum);
+#define IEnumSTATPROPSETSTG_IMETHODS \
+ ICOM_INHERITS(IEnumSTATPROPSETSTG,IUnknown)
+ICOM_DEFINE(IEnumSTATPROPSETSTG,IUnknown)
+#undef ICOM_INTERFACE
+
+#ifdef ICOM_CINTERFACE
+/*** IUnknown methods ***/
+#define IEnumSTATPROPSETSTG_QueryInterface(p,a,b) ICOM_CALL2(QueryInterface,p,a,b)
+#define IEnumSTATPROPSETSTG_AddRef(p) ICOM_CALL (AddRef,p)
+#define IEnumSTATPROPSETSTG_Release(p) ICOM_CALL (Release,p)
+/*** IEnumSTATPROPSETSTG methods ***/
+#define IEnumSTATPROPSETSTG_Next(p,a,b,c) ICOM_CALL3(Next,p,a,b,c)
+#define IEnumSTATPROPSETSTG_Skip(p,a) ICOM_CALL1(Skip,p,a)
+#define IEnumSTATPROPSETSTG_Reset(p) ICOM_CALL (Reset,p)
+#define IEnumSTATPROPSETSTG_Clone(p,a) ICOM_CALL1(Clone,p,a)
+#endif
/*****************************************************************************
* IEnumSTATPROPSTG interface
*/
-/* FIXME: not implemented */
+#define ICOM_INTERFACE IEnumSTATPROPSTG
+#define IEnumSTATPROPSTG_METHODS \
+ ICOM_METHOD3(HRESULT,Next, ULONG,celt, STATPROPSTG*,rgelt, ULONG*,pceltFethed); \
+ ICOM_METHOD1(HRESULT,Skip, ULONG,celt); \
+ ICOM_METHOD (HRESULT,Reset); \
+ ICOM_METHOD1(HRESULT,Clone, IEnumSTATPROPSTG**,ppenum);
+#define IEnumSTATPROPSTG_IMETHODS \
+ ICOM_INHERITS(IEnumSTATPROPSTG,IUnknown)
+ICOM_DEFINE(IEnumSTATPROPSTG,IUnknown)
+#undef ICOM_INTERFACE
+
+#ifdef ICOM_CINTERFACE
+/*** IUnknown methods ***/
+#define IEnumSTATPROPSTG_QueryInterface(p,a,b) ICOM_CALL2(QueryInterface,p,a,b)
+#define IEnumSTATPROPSTG_AddRef(p) ICOM_CALL (AddRef,p)
+#define IEnumSTATPROPSTG_Release(p) ICOM_CALL (Release,p)
+/*** IEnumSTATPROPSTG methods ***/
+#define IEnumSTATPROPSTG_Next(p,a,b,c) ICOM_CALL3(Next,p,a,b,c)
+#define IEnumSTATPROPSTG_Skip(p,a) ICOM_CALL1(Skip,p,a)
+#define IEnumSTATPROPSTG_Reset(p) ICOM_CALL (Reset,p)
+#define IEnumSTATPROPSTG_Clone(p,a) ICOM_CALL1(Clone,p,a)
+#endif
/*****************************************************************************
* IPropertySetStorage interface
*/
-/* FIXME: not implemented */
+#define ICOM_INTERFACE IPropertySetStorage
+#define IPropertySetStorage_METHODS \
+ ICOM_METHOD5(HRESULT,Create, REFFMTID,rfmtid, const CLSID*,pclsid, DWORD,grfFlags, DWORD,grfMode, IPropertyStorage**,ppprstg); \
+ ICOM_METHOD3(HRESULT,Open, REFFMTID,rfmtid, DWORD,grfMode, IPropertyStorage**,ppprstg); \
+ ICOM_METHOD1(HRESULT,Delete, REFFMTID,rfmtid); \
+ ICOM_METHOD1(HRESULT,Enum, IEnumSTATPROPSETSTG**,ppenum);
+#define IPropertySetStorage_IMETHODS \
+ ICOM_INHERITS(IPropertySetStorage,IUnknown)
+ICOM_DEFINE(IPropertySetStorage,IUnknown)
+#undef ICOM_INTERFACE
+
+#ifdef ICOM_CINTERFACE
+/*** IUnknown methods ***/
+#define IPropertySetStorage_QueryInterface(p,a,b) ICOM_CALL2(QueryInterface,p,a,b)
+#define IPropertySetStorage_AddRef(p) ICOM_CALL (AddRef,p)
+#define IPropertySetStorage_Release(p) ICOM_CALL (Release,p)
+/*** IPropertySetStorage methods ***/
+#define IPropertySetStorage_Create(p,a,b,c,d,e) ICOM_CALL5(Create,p,a,b,c,d,e)
+#define IPropertySetStorage_Open(p,a,b,c) ICOM_CALL3(Open,p,a,b,c)
+#define IPropertySetStorage_Delete(p,a) ICOM_CALL1(Delete,p,a)
+#define IPropertySetStorage_Enum(p,a) ICOM_CALL1(Enum,p,a)
+#endif
/*****************************************************************************
* IPropertyStorage interface
*/
-/* FIXME: not implemented */
+typedef struct tagPROPVARIANT PROPVARIANT,*LPPROPVARIANT;
+// Flags for IPropertySetStorage::Create
+#define PROPSETFLAG_DEFAULT ( 0 )
+#define PROPSETFLAG_NONSIMPLE ( 1 )
+#define PROPSETFLAG_ANSI ( 2 )
+
+typedef struct tagCAUB
+{
+ ULONG cElems;
+ unsigned char *pElems;
+} CAUB;
+
+typedef struct tagCAI
+{
+ ULONG cElems;
+ short *pElems;
+} CAI;
+
+typedef struct tagCAUI
+{
+ ULONG cElems;
+ USHORT *pElems;
+} CAUI;
+
+typedef struct tagCAL
+{
+ ULONG cElems;
+ long *pElems;
+} CAL;
+
+typedef struct tagCAUL
+{
+ ULONG cElems;
+ ULONG *pElems;
+} CAUL;
+
+typedef struct tagCAFLT
+{
+ ULONG cElems;
+ float *pElems;
+} CAFLT;
+
+typedef struct tagCADBL
+{
+ ULONG cElems;
+ double *pElems;
+} CADBL;
+
+typedef struct tagCACY
+{
+ ULONG cElems;
+ CY *pElems;
+} CACY;
+
+typedef struct tagCADATE
+{
+ ULONG cElems;
+ DATE *pElems;
+} CADATE;
+
+typedef struct tagCABSTR
+{
+ ULONG cElems;
+ BSTR32 *pElems;
+} CABSTR;
+
+typedef struct tagCABOOL
+{
+ ULONG cElems;
+ VARIANT_BOOL *pElems;
+} CABOOL;
+
+typedef struct tagCASCODE
+{
+ ULONG cElems;
+ SCODE *pElems;
+} CASCODE;
+
+typedef struct tagCAPROPVARIANT
+{
+ ULONG cElems;
+ PROPVARIANT *pElems;
+} CAPROPVARIANT;
+
+typedef struct tagCAH
+{
+ ULONG cElems;
+ LARGE_INTEGER *pElems;
+} CAH;
+
+typedef struct tagCAUH
+{
+ ULONG cElems;
+ ULARGE_INTEGER *pElems;
+} CAUH;
+
+typedef struct tagCALPSTR
+{
+ ULONG cElems;
+ LPSTR *pElems;
+} CALPSTR;
+
+typedef struct tagCALPWSTR
+{
+ ULONG cElems;
+ LPWSTR *pElems;
+} CALPWSTR;
+
+typedef struct tagCAFILETIME
+{
+ ULONG cElems;
+ FILETIME *pElems;
+} CAFILETIME;
+
+typedef struct tagCACLIPDATA
+{
+ ULONG cElems;
+ CLIPDATA *pElems;
+} CACLIPDATA;
+
+typedef struct tagCACLSID
+{
+ ULONG cElems;
+ CLSID *pElems;
+} CACLSID;
+
+struct tagPROPVARIANT
+{
+ VARTYPE vt;
+ WORD wReserved1;
+ WORD wReserved2;
+ WORD wReserved3;
+ union
+ {
+ /* Empty union arm */
+ UCHAR bVal;
+ short iVal;
+ USHORT uiVal;
+ VARIANT_BOOL boolVal;
+#ifndef __cplusplus
+ /* FIXME: bool is reserved in C++, how can we deal with that ? */
+ _VARIANT_BOOL bool;
+#endif
+ long lVal;
+ ULONG ulVal;
+ float fltVal;
+ SCODE scode;
+ LARGE_INTEGER hVal;
+ ULARGE_INTEGER uhVal;
+ double dblVal;
+ CY cyVal;
+ DATE date;
+ FILETIME filetime;
+ CLSID *puuid;
+ BLOB blob;
+ CLIPDATA *pclipdata;
+ IStream32 *pStream;
+ IStorage32 *pStorage;
+ BSTR32 bstrVal;
+ LPSTR pszVal;
+ LPWSTR pwszVal;
+ CAUB caub;
+ CAI cai;
+ CAUI caui;
+ CABOOL cabool;
+ CAL cal;
+ CAUL caul;
+ CAFLT caflt;
+ CASCODE cascode;
+ CAH cah;
+ CAUH cauh;
+ CADBL cadbl;
+ CACY cacy;
+ CADATE cadate;
+ CAFILETIME cafiletime;
+ CACLSID cauuid;
+ CACLIPDATA caclipdata;
+ CABSTR cabstr;
+ CALPSTR calpstr;
+ CALPWSTR calpwstr;
+ CAPROPVARIANT capropvar;
+ } u;
+};
+
+
+#define ICOM_INTERFACE IPropertyStorage
+#define IPropertyStorage_METHODS \
+ ICOM_METHOD3(HRESULT,ReadMultiple, ULONG,cpspec, const PROPSPEC*,rgpspec, PROPVARIANT*,rgpropvar); \
+ ICOM_METHOD4(HRESULT,WriteMultiple, ULONG,cpspec, const PROPSPEC*,rgpspec, const PROPVARIANT*,rgpropvar, PROPID,propidNameFirst); \
+ ICOM_METHOD2(HRESULT,DeleteMultiple, ULONG,cpspec, const PROPSPEC*,rgpspec); \
+ ICOM_METHOD2(HRESULT,ReadPropertyNames, const PROPID*,rgpropid, LPOLESTR32*,rglpwstrName); \
+ ICOM_METHOD3(HRESULT,WritePropertyNames, ULONG,cpropid, const PROPID*,rgpropid, LPOLESTR32*,rglpwstrName); \
+ ICOM_METHOD2(HRESULT,DeletePropertyNames, ULONG,cpropid, const PROPID*,rgpropid); \
+ ICOM_METHOD1(HRESULT,Commit, DWORD,grfCommitFlags); \
+ ICOM_METHOD (HRESULT,Revert); \
+ ICOM_METHOD1(HRESULT,Enum, IEnumSTATPROPSTG**,ppenum); \
+ ICOM_METHOD3(HRESULT,SetTimes, const FILETIME*,pctime, const FILETIME*,patime, const FILETIME*,pmtime); \
+ ICOM_METHOD1(HRESULT,SetClass, REFCLSID,clsid); \
+ ICOM_METHOD1(HRESULT,Stat, STATPROPSETSTG*,pstatpsstg);
+#define IPropertyStorage_IMETHODS \
+ ICOM_INHERITS(IPropertyStorage,IUnknown)
+ICOM_DEFINE(IPropertyStorage,IUnknown)
+#undef ICOM_INTERFACE
+
+#ifdef ICOM_CINTERFACE
+/*** IUnknown methods ***/
+#define IPropertyStorage_QueryInterface(p,a,b) ICOM_CALL2(QueryInterface,p,a,b)
+#define IPropertyStorage_AddRef(p) ICOM_CALL (AddRef,p)
+#define IPropertyStorage_Release(p) ICOM_CALL (Release,p)
+/*** IPropertyStorage methods ***/
+#define IPropertyStorage_ReadMultiple(p,a,b,c) ICOM_CALL3(ReadMultiple,p,a,b,c)
+#define IPropertyStorage_WriteMultiple(p,a,b,c,d) ICOM_CALL4(WriteMultiple,p,a,b,c,d)
+#define IPropertyStorage_DeleteMultiple(p,a,b) ICOM_CALL2(DeleteMultiple,p,a,b)
+#define IPropertyStorage_ReadPropertyNames(p,a,b) ICOM_CALL2(ReadPropertyNames,p,a,b)
+#define IPropertyStorage_WritePropertyNames(p,a,b,c) ICOM_CALL3(WritePropertyNames,p,a,b,c)
+#define IPropertyStorage_DeletePropertyNames(p,a,b) ICOM_CALL2(DeletePropertyNames,p,a,b)
+#define IPropertyStorage_Commit(p,a) ICOM_CALL1(Commit,p,a)
+#define IPropertyStorage_Revert(p) ICOM_CALL (Revert,p)
+#define IPropertyStorage_Enum(p,a) ICOM_CALL1(Enum,p,a)
+#define IPropertyStorage_SetTimes(p,a,b,c) ICOM_CALL3(SetTimes,p,a,b,c)
+#define IPropertyStorage_SetClass(p,a) ICOM_CALL1(SetClass,p,a)
+#define IPropertyStorage_Stat(p,a) ICOM_CALL1(Stat,p,a)
+#endif
#endif /* __WINE_WINE_OBJ_PROPERTYSTORAGE_H */
diff --git a/include/winnt.h b/include/winnt.h
index 601c85a..4f125cb 100644
--- a/include/winnt.h
+++ b/include/winnt.h
@@ -315,17 +315,6 @@
PCONTEXT ContextRecord;
} EXCEPTION_POINTERS, *PEXCEPTION_POINTERS;
-typedef struct {
- BYTE Value[6];
-} SID_IDENTIFIER_AUTHORITY,*PSID_IDENTIFIER_AUTHORITY;
-
-typedef struct _SID {
- BYTE Revision;
- BYTE SubAuthorityCount;
- SID_IDENTIFIER_AUTHORITY IdentifierAuthority;
- DWORD SubAuthority[1];
-} SID,*PSID;
-
#pragma pack(4)
/*
@@ -366,6 +355,47 @@
TokenStatistics
} TOKEN_INFORMATION_CLASS;
+#ifndef _SECURITY_DEFINED
+#define _SECURITY_DEFINED
+
+typedef struct {
+ BYTE Value[6];
+} SID_IDENTIFIER_AUTHORITY,*PSID_IDENTIFIER_AUTHORITY;
+
+typedef struct _SID {
+ BYTE Revision;
+ BYTE SubAuthorityCount;
+ SID_IDENTIFIER_AUTHORITY IdentifierAuthority;
+ DWORD SubAuthority[1];
+} SID,*PSID;
+
+/*
+ * ACL
+ */
+
+typedef struct _ACL {
+ BYTE AclRevision;
+ BYTE Sbz1;
+ WORD AclSize;
+ WORD AceCount;
+ WORD Sbz2;
+} ACL, *PACL;
+
+typedef WORD SECURITY_DESCRIPTOR_CONTROL;
+
+/* The security descriptor structure */
+typedef struct {
+ BYTE Revision;
+ BYTE Sbz1;
+ SECURITY_DESCRIPTOR_CONTROL Control;
+ PSID Owner;
+ PSID Group;
+ PACL Sacl;
+ PACL Dacl;
+} SECURITY_DESCRIPTOR, *PSECURITY_DESCRIPTOR;
+
+#endif /* _SECURITY_DEFINED */
+
/*
* SID_AND_ATTRIBUTES
*/
@@ -441,18 +471,6 @@
} TOKEN_PRIMARY_GROUP;
/*
- * ACL
- */
-
-typedef struct _ACL {
- BYTE AclRevision;
- BYTE Sbz1;
- WORD AclSize;
- WORD AceCount;
- WORD Sbz2;
-} ACL, *PACL;
-
-/*
* TOKEN_DEFAULT_DACL
*/
@@ -490,6 +508,7 @@
} SECURITY_IMPERSONATION_LEVEL;
+
/*
* TOKEN_STATISTICS
*/
diff --git a/include/wintypes.h b/include/wintypes.h
index e2445b4..8091331 100644
--- a/include/wintypes.h
+++ b/include/wintypes.h
@@ -106,7 +106,6 @@
typedef unsigned short BOOL16;
typedef int BOOL32;
typedef double DATE;
-typedef long SCODE;
typedef long LONG_PTR;
typedef unsigned long ULONG_PTR;
typedef double DOUBLE;
diff --git a/include/wtypes.h b/include/wtypes.h
index 5e66faa..a0833a4 100644
--- a/include/wtypes.h
+++ b/include/wtypes.h
@@ -8,6 +8,13 @@
#include "wintypes.h"
+/* FIXME: this line should be in rpcndr.h */
+typedef unsigned char byte;
+
+/* FIXME: and the following group should be in rpcdce.h */
+typedef void* RPC_AUTH_IDENTITY_HANDLE;
+typedef void* RPC_AUTHZ_HANDLE;
+
typedef WORD CLIPFORMAT32, *LPCLIPFORMAT32;
DECL_WINELIB_TYPE(CLIPFORMAT)
@@ -64,6 +71,36 @@
DECLARE_HANDLE(HMETAFILEPICT);
#undef DECLARE_HANDLE
+typedef struct _COAUTHIDENTITY
+{
+ USHORT* User;
+ ULONG UserLength;
+ USHORT* Domain;
+ ULONG DomainLength;
+ USHORT* Password;
+ ULONG PasswordLength;
+ ULONG Flags;
+} COAUTHIDENTITY;
+
+typedef struct _COAUTHINFO
+{
+ DWORD dwAuthnSvc;
+ DWORD dwAuthzSvc;
+ LPWSTR pwszServerPrincName;
+ DWORD dwAuthnLevel;
+ DWORD dwImpersonationLevel;
+ COAUTHIDENTITY* pAuthIdentityData;
+ DWORD dwCapabilities;
+} COAUTHINFO;
+
+typedef struct _COSERVERINFO
+{
+ DWORD dwReserved1;
+ LPWSTR pwszName;
+ COAUTHINFO* pAuthInfo;
+ DWORD dwReserved2;
+} COSERVERINFO;
+
typedef enum tagCLSCTX
{
CLSCTX_INPROC_SERVER = 0x1,
@@ -80,5 +117,102 @@
#define CLSCTX_ALL (CLSCTX_INPROC_SERVER | CLSCTX_INPROC_HANDLER | CLSCTX_LOCAL_SERVER | CLSCTX_REMOTE_SERVER)
#define CLSCTX_SERVER (CLSCTX_INPROC_SERVER | CLSCTX_LOCAL_SERVER | CLSCTX_REMOTE_SERVER)
+typedef unsigned short VARTYPE;
+
+typedef ULONG PROPID;
+
+typedef struct tagBLOB
+{
+ ULONG cbSize;
+ BYTE *pBlobData;
+} BLOB;
+
+#ifndef _tagCY_DEFINED
+#define _tagCY_DEFINED
+typedef union tagCY
+{
+ struct {
+#ifdef BIG_ENDIAN
+ long Hi;
+ long Lo;
+#else
+ unsigned long Lo;
+ long Hi;
+#endif
+ } u;
+ LONGLONG int64;
+} CY;
+#endif /* _tagCY_DEFINED */
+
+/*
+ * 0 == FALSE and -1 == TRUE
+ */
+#define VARIANT_TRUE ((VARIANT_BOOL)0xFFFF)
+#define VARIANT_FALSE ((VARIANT_BOOL)0x0000)
+typedef short VARIANT_BOOL,_VARIANT_BOOL;
+
+typedef struct tagCLIPDATA
+{
+ ULONG cbSize;
+ long ulClipFmt;
+ BYTE *pClipData;
+} CLIPDATA;
+
+// Macro to calculate the size of the above pClipData
+#define CBPCLIPDATA(clipdata) ( (clipdata).cbSize - sizeof((clipdata).ulClipFmt) )
+
+typedef LONG SCODE;
+
+#ifndef _FILETIME_
+#define _FILETIME_
+/* 64 bit number of 100 nanoseconds intervals since January 1, 1601 */
+typedef struct
+{
+ DWORD dwLowDateTime;
+ DWORD dwHighDateTime;
+} FILETIME, *LPFILETIME;
+#endif /* _FILETIME_ */
+
+#ifndef _SECURITY_DEFINED
+#define _SECURITY_DEFINED
+
+typedef struct {
+ BYTE Value[6];
+} SID_IDENTIFIER_AUTHORITY,*PSID_IDENTIFIER_AUTHORITY;
+
+typedef struct _SID {
+ BYTE Revision;
+ BYTE SubAuthorityCount;
+ SID_IDENTIFIER_AUTHORITY IdentifierAuthority;
+ DWORD SubAuthority[1];
+} SID,*PSID;
+
+/*
+ * ACL
+ */
+
+typedef struct _ACL {
+ BYTE AclRevision;
+ BYTE Sbz1;
+ WORD AclSize;
+ WORD AceCount;
+ WORD Sbz2;
+} ACL, *PACL;
+
+typedef WORD SECURITY_DESCRIPTOR_CONTROL;
+
+/* The security descriptor structure */
+typedef struct {
+ BYTE Revision;
+ BYTE Sbz1;
+ SECURITY_DESCRIPTOR_CONTROL Control;
+ PSID Owner;
+ PSID Group;
+ PACL Sacl;
+ PACL Dacl;
+} SECURITY_DESCRIPTOR, *PSECURITY_DESCRIPTOR;
+
+#endif /* _SECURITY_DEFINED */
+
#endif /* __WINE_WTYPES_H */
diff --git a/ole/compobj.c b/ole/compobj.c
index ff7ee36..73a4153 100644
--- a/ole/compobj.c
+++ b/ole/compobj.c
@@ -43,7 +43,9 @@
#include "ldt.h"
#include "winreg.h"
-#include "objbase.h"
+#include "wine/obj_base.h"
+#include "wine/obj_misc.h"
+#include "wine/obj_clientserver.h"
#include "ifs.h"