From 87e385fc6bd5c6848c9447208eaab43d58c40953 Mon Sep 17 00:00:00 2001 From: Francois Gouget Date: Wed, 17 Feb 1999 17:45:54 +0000 Subject: [PATCH] Moved some definitions to their proper include file. --- include/mapidefs.h | 15 +- include/objbase.h | 141 +++---------- include/ole.h | 36 ---- include/oleauto.h | 43 +++- include/winbase.h | 16 +- include/wine/obj_moniker.h | 1 - include/wine/obj_propertystorage.h | 391 ++++++++++++++++++++++++++++++++++++- include/winnt.h | 65 +++--- include/wintypes.h | 1 - include/wtypes.h | 134 +++++++++++++ ole/compobj.c | 4 +- 11 files changed, 637 insertions(+), 210 deletions(-) rewrite include/objbase.h (86%) diff --git a/include/mapidefs.h b/include/mapidefs.h index 19f94ef2a56..082f5d60822 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 dissimilarity index 86% index 3335a31a892..b41f35c955b 100644 --- a/include/objbase.h +++ b/include/objbase.h @@ -1,119 +1,22 @@ -#ifndef __WINE_OBJBASE_H -#define __WINE_OBJBASE_H - - -#include "wine/obj_base.h" - -/* the following depend only on obj_base.h */ -#include "wine/obj_misc.h" -#include "wine/obj_channel.h" -#include "wine/obj_clientserver.h" -#include "wine/obj_storage.h" - -/* the following depend on obj_storage.h */ -#include "wine/obj_marshal.h" -#include "wine/obj_moniker.h" -#include "wine/obj_propertystorage.h" - -/* 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 */ +#ifndef __WINE_OBJBASE_H +#define __WINE_OBJBASE_H + + +#include "wine/obj_base.h" + +/* the following depend only on obj_base.h */ +#include "wine/obj_misc.h" +#include "wine/obj_channel.h" +#include "wine/obj_clientserver.h" +#include "wine/obj_storage.h" + +/* the following depend on obj_storage.h */ +#include "wine/obj_marshal.h" +#include "wine/obj_moniker.h" +#include "wine/obj_propertystorage.h" + +/* the following depend on obj_moniker.h */ +#include "wine/obj_dataobject.h" + + +#endif /* __WINE_OBJBASE_H */ diff --git a/include/ole.h b/include/ole.h index a71dfe5fc90..5cd4d9cc0d0 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 @@ HINSTANCE32 WINAPI CoLoadLibrary(LPSTR lpszLibName, BOOL32 bAutoFree); 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 ec344ff5696..483bbcf9597 100644 --- a/include/oleauto.h +++ b/include/oleauto.h @@ -150,14 +150,6 @@ SafeArrayRedim32(SAFEARRAY *psa, SAFEARRAYBOUND *psaboundNew); * 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 @@ HRESULT WINAPI VarDecFromDisp32(IDispatch*pdispIn, LCID lcid, DECIMAL*pdecOut); #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 a4c8ec151c4..7960fa9f9bf 100644 --- a/include/winbase.h +++ b/include/winbase.h @@ -164,28 +164,18 @@ typedef struct 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 91565ddc0a3..a41c165570f 100644 --- a/include/wine/obj_moniker.h +++ b/include/wine/obj_moniker.h @@ -35,7 +35,6 @@ typedef struct IRunnableObject IRunnableObject,*LPRUNNABLEOBJECT; 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 837daa13d16..cec645cda05 100644 --- a/include/wine/obj_propertystorage.h +++ b/include/wine/obj_propertystorage.h @@ -25,28 +25,411 @@ typedef struct IPropertyStorage IPropertyStorage,*LPPROPERTYSTORAGE; /***************************************************************************** + * 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 601c85a96cf..4f125cbe013 100644 --- a/include/winnt.h +++ b/include/winnt.h @@ -315,17 +315,6 @@ typedef struct _EXCEPTION_POINTERS 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 @@ typedef enum _TOKEN_INFORMATION_CLASS { 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 @@ typedef struct _TOKEN_PRIMARY_GROUP { } 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 @@ typedef enum _SECURITY_IMPERSONATION_LEVEL { } SECURITY_IMPERSONATION_LEVEL; + /* * TOKEN_STATISTICS */ diff --git a/include/wintypes.h b/include/wintypes.h index e2445b404a7..80913310f7e 100644 --- a/include/wintypes.h +++ b/include/wintypes.h @@ -106,7 +106,6 @@ typedef unsigned short WCHAR; 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 5e66faa026a..a0833a4a13a 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 @@ typedef struct _GUID FMTID,*LPFMTID; 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 @@ typedef enum tagCLSCTX #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 ff7ee36faf5..73a4153ff09 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" -- 2.11.4.GIT