From 83755cca9774f256d352c89e16c183c05ff562de Mon Sep 17 00:00:00 2001 From: Francois Gouget Date: Thu, 9 Sep 2004 19:23:19 +0000 Subject: [PATCH] Move the PROPVARIANT declaration from objidl.idl to propidl.idl. Move related API declarations from individual C files to propidl.idl. Remove uneeded include of propidl.h in the propvariant.c test. --- dlls/ole32/ole2.c | 2 - dlls/ole32/tests/propvariant.c | 4 - dlls/olecli/olecli16.c | 84 ++-- dlls/olecli/olecli_main.c | 86 ++-- include/Makefile.in | 1 + include/objbase.h | 2 + include/objidl.h | 940 ---------------------------------------- include/objidl.idl | 289 +------------ include/propidl.h | 958 +++++++++++++++++++++++++++++++++++++++++ include/propidl.idl | 311 +++++++++++++ include/shobjidl.h | 1 + include/shobjidl.idl | 2 +- 12 files changed, 1362 insertions(+), 1318 deletions(-) create mode 100644 include/propidl.h create mode 100644 include/propidl.idl diff --git a/dlls/ole32/ole2.c b/dlls/ole32/ole2.c index 4d6b41ca5e6..b53257dab87 100644 --- a/dlls/ole32/ole2.c +++ b/dlls/ole32/ole2.c @@ -2326,8 +2326,6 @@ static void OLE_FreeClipDataArray(ULONG count, CLIPDATA * pClipDataArray) CoTaskMemFree(pClipDataArray[i].pClipData); } -HRESULT WINAPI FreePropVariantArray(ULONG,PROPVARIANT*); - /****************************************************************************** * Check if a PROPVARIANT's type is valid. */ diff --git a/dlls/ole32/tests/propvariant.c b/dlls/ole32/tests/propvariant.c index 817be607b79..114e4f96b29 100644 --- a/dlls/ole32/tests/propvariant.c +++ b/dlls/ole32/tests/propvariant.c @@ -19,10 +19,6 @@ */ #include "windows.h" -/* not present in Wine yet */ -/*#include "propidl.h"*/ -WINOLEAPI PropVariantClear(PROPVARIANT*); -WINOLEAPI PropVariantCopy(PROPVARIANT*, const PROPVARIANT*); #include "wine/test.h" diff --git a/dlls/olecli/olecli16.c b/dlls/olecli/olecli16.c index 508a22d00f0..9af3b5e7aba 100644 --- a/dlls/olecli/olecli16.c +++ b/dlls/olecli/olecli16.c @@ -137,7 +137,7 @@ typedef enum { } OLE_RELEASE_METHOD; typedef LONG LHCLIENTDOC; -typedef struct _OLEOBJECT *LPOLEOBJECT; +typedef struct _OLEOBJECT *_LPOLEOBJECT; typedef struct _OLECLIENT *LPOLECLIENT; typedef LONG OLECLIPFORMAT;/* dunno about this type, please change/add */ typedef OLEOPT_UPDATE *LPOLEOPT_UPDATE; @@ -145,52 +145,52 @@ typedef LPCSTR LPCOLESTR16; struct _OLESTREAM; -typedef struct _OLEOBJECTVTBL { - void CALLBACK *(*QueryProtocol)(LPOLEOBJECT,LPCOLESTR16); - OLESTATUS (CALLBACK *Release)(LPOLEOBJECT); - OLESTATUS (CALLBACK *Show)(LPOLEOBJECT,BOOL16); - OLESTATUS (CALLBACK *DoVerb)(LPOLEOBJECT,UINT16,BOOL16,BOOL16); - OLESTATUS (CALLBACK *GetData)(LPOLEOBJECT,OLECLIPFORMAT,HANDLE16 *); - OLESTATUS (CALLBACK *SetData)(LPOLEOBJECT,OLECLIPFORMAT,HANDLE16); - OLESTATUS (CALLBACK *SetTargetDevice)(LPOLEOBJECT,HGLOBAL16); - OLESTATUS (CALLBACK *SetBounds)(LPOLEOBJECT,LPRECT16); - OLESTATUS (CALLBACK *EnumFormats)(LPOLEOBJECT,OLECLIPFORMAT); - OLESTATUS (CALLBACK *SetColorScheme)(LPOLEOBJECT,struct tagLOGPALETTE*); - OLESTATUS (CALLBACK *Delete)(LPOLEOBJECT); - OLESTATUS (CALLBACK *SetHostNames)(LPOLEOBJECT,LPCOLESTR16,LPCOLESTR16); - OLESTATUS (CALLBACK *SaveToStream)(LPOLEOBJECT,struct _OLESTREAM*); - OLESTATUS (CALLBACK *Clone)(LPOLEOBJECT,LPOLECLIENT,LHCLIENTDOC,LPCOLESTR16,LPOLEOBJECT *); - OLESTATUS (CALLBACK *CopyFromLink)(LPOLEOBJECT,LPOLECLIENT,LHCLIENTDOC,LPCOLESTR16,LPOLEOBJECT *); - OLESTATUS (CALLBACK *Equal)(LPOLEOBJECT,LPOLEOBJECT); - OLESTATUS (CALLBACK *CopyToClipBoard)(LPOLEOBJECT); - OLESTATUS (CALLBACK *Draw)(LPOLEOBJECT,HDC16,LPRECT16,LPRECT16,HDC16); - OLESTATUS (CALLBACK *Activate)(LPOLEOBJECT,UINT16,BOOL16,BOOL16,HWND16,LPRECT16); - OLESTATUS (CALLBACK *Execute)(LPOLEOBJECT,HGLOBAL16,UINT16); - OLESTATUS (CALLBACK *Close)(LPOLEOBJECT); - OLESTATUS (CALLBACK *Update)(LPOLEOBJECT); - OLESTATUS (CALLBACK *Reconnect)(LPOLEOBJECT); - OLESTATUS (CALLBACK *ObjectConvert)(LPOLEOBJECT,LPCOLESTR16,LPOLECLIENT,LHCLIENTDOC,LPCOLESTR16,LPOLEOBJECT*); - OLESTATUS (CALLBACK *GetLinkUpdateOptions)(LPOLEOBJECT,LPOLEOPT_UPDATE); - OLESTATUS (CALLBACK *SetLinkUpdateOptions)(LPOLEOBJECT,OLEOPT_UPDATE); - OLESTATUS (CALLBACK *Rename)(LPOLEOBJECT,LPCOLESTR16); - OLESTATUS (CALLBACK *QueryName)(LPOLEOBJECT,LPSTR,LPUINT16); - OLESTATUS (CALLBACK *QueryType)(LPOLEOBJECT,LPLONG); - OLESTATUS (CALLBACK *QueryBounds)(LPOLEOBJECT,LPRECT16); - OLESTATUS (CALLBACK *QuerySize)(LPOLEOBJECT,LPDWORD); - OLESTATUS (CALLBACK *QueryOpen)(LPOLEOBJECT); - OLESTATUS (CALLBACK *QueryOutOfDate)(LPOLEOBJECT); - OLESTATUS (CALLBACK *QueryReleaseStatus)(LPOLEOBJECT); - OLESTATUS (CALLBACK *QueryReleaseError)(LPOLEOBJECT); - OLE_RELEASE_METHOD (CALLBACK *QueryReleaseMethod)(LPOLEOBJECT); - OLESTATUS (CALLBACK *RequestData)(LPOLEOBJECT,OLECLIPFORMAT); - OLESTATUS (CALLBACK *ObjectLong)(LPOLEOBJECT,UINT16,LPLONG); +typedef struct _OLEOBJECTVTBL16 { + void CALLBACK *(*QueryProtocol)(_LPOLEOBJECT,LPCOLESTR16); + OLESTATUS (CALLBACK *Release)(_LPOLEOBJECT); + OLESTATUS (CALLBACK *Show)(_LPOLEOBJECT,BOOL16); + OLESTATUS (CALLBACK *DoVerb)(_LPOLEOBJECT,UINT16,BOOL16,BOOL16); + OLESTATUS (CALLBACK *GetData)(_LPOLEOBJECT,OLECLIPFORMAT,HANDLE16 *); + OLESTATUS (CALLBACK *SetData)(_LPOLEOBJECT,OLECLIPFORMAT,HANDLE16); + OLESTATUS (CALLBACK *SetTargetDevice)(_LPOLEOBJECT,HGLOBAL16); + OLESTATUS (CALLBACK *SetBounds)(_LPOLEOBJECT,LPRECT16); + OLESTATUS (CALLBACK *EnumFormats)(_LPOLEOBJECT,OLECLIPFORMAT); + OLESTATUS (CALLBACK *SetColorScheme)(_LPOLEOBJECT,struct tagLOGPALETTE*); + OLESTATUS (CALLBACK *Delete)(_LPOLEOBJECT); + OLESTATUS (CALLBACK *SetHostNames)(_LPOLEOBJECT,LPCOLESTR16,LPCOLESTR16); + OLESTATUS (CALLBACK *SaveToStream)(_LPOLEOBJECT,struct _OLESTREAM*); + OLESTATUS (CALLBACK *Clone)(_LPOLEOBJECT,LPOLECLIENT,LHCLIENTDOC,LPCOLESTR16,_LPOLEOBJECT *); + OLESTATUS (CALLBACK *CopyFromLink)(_LPOLEOBJECT,LPOLECLIENT,LHCLIENTDOC,LPCOLESTR16,_LPOLEOBJECT *); + OLESTATUS (CALLBACK *Equal)(_LPOLEOBJECT,_LPOLEOBJECT); + OLESTATUS (CALLBACK *CopyToClipBoard)(_LPOLEOBJECT); + OLESTATUS (CALLBACK *Draw)(_LPOLEOBJECT,HDC16,LPRECT16,LPRECT16,HDC16); + OLESTATUS (CALLBACK *Activate)(_LPOLEOBJECT,UINT16,BOOL16,BOOL16,HWND16,LPRECT16); + OLESTATUS (CALLBACK *Execute)(_LPOLEOBJECT,HGLOBAL16,UINT16); + OLESTATUS (CALLBACK *Close)(_LPOLEOBJECT); + OLESTATUS (CALLBACK *Update)(_LPOLEOBJECT); + OLESTATUS (CALLBACK *Reconnect)(_LPOLEOBJECT); + OLESTATUS (CALLBACK *ObjectConvert)(_LPOLEOBJECT,LPCOLESTR16,LPOLECLIENT,LHCLIENTDOC,LPCOLESTR16,_LPOLEOBJECT*); + OLESTATUS (CALLBACK *GetLinkUpdateOptions)(_LPOLEOBJECT,LPOLEOPT_UPDATE); + OLESTATUS (CALLBACK *SetLinkUpdateOptions)(_LPOLEOBJECT,OLEOPT_UPDATE); + OLESTATUS (CALLBACK *Rename)(_LPOLEOBJECT,LPCOLESTR16); + OLESTATUS (CALLBACK *QueryName)(_LPOLEOBJECT,LPSTR,LPUINT16); + OLESTATUS (CALLBACK *QueryType)(_LPOLEOBJECT,LPLONG); + OLESTATUS (CALLBACK *QueryBounds)(_LPOLEOBJECT,LPRECT16); + OLESTATUS (CALLBACK *QuerySize)(_LPOLEOBJECT,LPDWORD); + OLESTATUS (CALLBACK *QueryOpen)(_LPOLEOBJECT); + OLESTATUS (CALLBACK *QueryOutOfDate)(_LPOLEOBJECT); + OLESTATUS (CALLBACK *QueryReleaseStatus)(_LPOLEOBJECT); + OLESTATUS (CALLBACK *QueryReleaseError)(_LPOLEOBJECT); + OLE_RELEASE_METHOD (CALLBACK *QueryReleaseMethod)(_LPOLEOBJECT); + OLESTATUS (CALLBACK *RequestData)(_LPOLEOBJECT,OLECLIPFORMAT); + OLESTATUS (CALLBACK *ObjectLong)(_LPOLEOBJECT,UINT16,LPLONG); } OLEOBJECTVTBL; typedef OLEOBJECTVTBL *LPOLEOBJECTVTBL; typedef struct _OLEOBJECT { LPOLEOBJECTVTBL lpvtbl; -} OLEOBJECT; +} OLEOBJECT16; static LONG OLE_current_handle; @@ -293,7 +293,7 @@ BOOL16 WINAPI OleIsDcMeta16(HDC16 hdc) /****************************************************************************** * OleQueryType [OLECLI.14] */ -OLESTATUS WINAPI OleQueryType16(LPOLEOBJECT oleob, SEGPTR xlong) { +OLESTATUS WINAPI OleQueryType16(_LPOLEOBJECT oleob, SEGPTR xlong) { FIXME("(%p, %p): stub!\n", oleob, MapSL(xlong)); return OLE_OK; } diff --git a/dlls/olecli/olecli_main.c b/dlls/olecli/olecli_main.c index c19057dffa6..700844e7ec7 100644 --- a/dlls/olecli/olecli_main.c +++ b/dlls/olecli/olecli_main.c @@ -137,7 +137,7 @@ typedef enum { } OLE_RELEASE_METHOD; typedef LONG LHCLIENTDOC; -typedef struct _OLEOBJECT *LPOLEOBJECT; +typedef struct _OLEOBJECT *_LPOLEOBJECT; typedef struct _OLECLIENT *LPOLECLIENT; typedef LONG OLECLIPFORMAT;/* dunno about this type, please change/add */ typedef OLEOPT_UPDATE *LPOLEOPT_UPDATE; @@ -146,44 +146,44 @@ typedef LPCSTR LPCOLESTR16; struct _OLESTREAM; typedef struct _OLEOBJECTVTBL { - void CALLBACK *(*QueryProtocol)(LPOLEOBJECT,LPCOLESTR16); - OLESTATUS (CALLBACK *Release)(LPOLEOBJECT); - OLESTATUS (CALLBACK *Show)(LPOLEOBJECT,BOOL16); - OLESTATUS (CALLBACK *DoVerb)(LPOLEOBJECT,UINT16,BOOL16,BOOL16); - OLESTATUS (CALLBACK *GetData)(LPOLEOBJECT,OLECLIPFORMAT,HANDLE16 *); - OLESTATUS (CALLBACK *SetData)(LPOLEOBJECT,OLECLIPFORMAT,HANDLE16); - OLESTATUS (CALLBACK *SetTargetDevice)(LPOLEOBJECT,HGLOBAL16); - OLESTATUS (CALLBACK *SetBounds)(LPOLEOBJECT,LPRECT16); - OLESTATUS (CALLBACK *EnumFormats)(LPOLEOBJECT,OLECLIPFORMAT); - OLESTATUS (CALLBACK *SetColorScheme)(LPOLEOBJECT,struct tagLOGPALETTE*); - OLESTATUS (CALLBACK *Delete)(LPOLEOBJECT); - OLESTATUS (CALLBACK *SetHostNames)(LPOLEOBJECT,LPCOLESTR16,LPCOLESTR16); - OLESTATUS (CALLBACK *SaveToStream)(LPOLEOBJECT,struct _OLESTREAM*); - OLESTATUS (CALLBACK *Clone)(LPOLEOBJECT,LPOLECLIENT,LHCLIENTDOC,LPCOLESTR16,LPOLEOBJECT *); - OLESTATUS (CALLBACK *CopyFromLink)(LPOLEOBJECT,LPOLECLIENT,LHCLIENTDOC,LPCOLESTR16,LPOLEOBJECT *); - OLESTATUS (CALLBACK *Equal)(LPOLEOBJECT,LPOLEOBJECT); - OLESTATUS (CALLBACK *CopyToClipBoard)(LPOLEOBJECT); - OLESTATUS (CALLBACK *Draw)(LPOLEOBJECT,HDC16,LPRECT16,LPRECT16,HDC16); - OLESTATUS (CALLBACK *Activate)(LPOLEOBJECT,UINT16,BOOL16,BOOL16,HWND16,LPRECT16); - OLESTATUS (CALLBACK *Execute)(LPOLEOBJECT,HGLOBAL16,UINT16); - OLESTATUS (CALLBACK *Close)(LPOLEOBJECT); - OLESTATUS (CALLBACK *Update)(LPOLEOBJECT); - OLESTATUS (CALLBACK *Reconnect)(LPOLEOBJECT); - OLESTATUS (CALLBACK *ObjectConvert)(LPOLEOBJECT,LPCOLESTR16,LPOLECLIENT,LHCLIENTDOC,LPCOLESTR16,LPOLEOBJECT*); - OLESTATUS (CALLBACK *GetLinkUpdateOptions)(LPOLEOBJECT,LPOLEOPT_UPDATE); - OLESTATUS (CALLBACK *SetLinkUpdateOptions)(LPOLEOBJECT,OLEOPT_UPDATE); - OLESTATUS (CALLBACK *Rename)(LPOLEOBJECT,LPCOLESTR16); - OLESTATUS (CALLBACK *QueryName)(LPOLEOBJECT,LPSTR,LPUINT16); - OLESTATUS (CALLBACK *QueryType)(LPOLEOBJECT,LPLONG); - OLESTATUS (CALLBACK *QueryBounds)(LPOLEOBJECT,LPRECT16); - OLESTATUS (CALLBACK *QuerySize)(LPOLEOBJECT,LPDWORD); - OLESTATUS (CALLBACK *QueryOpen)(LPOLEOBJECT); - OLESTATUS (CALLBACK *QueryOutOfDate)(LPOLEOBJECT); - OLESTATUS (CALLBACK *QueryReleaseStatus)(LPOLEOBJECT); - OLESTATUS (CALLBACK *QueryReleaseError)(LPOLEOBJECT); - OLE_RELEASE_METHOD (CALLBACK *QueryReleaseMethod)(LPOLEOBJECT); - OLESTATUS (CALLBACK *RequestData)(LPOLEOBJECT,OLECLIPFORMAT); - OLESTATUS (CALLBACK *ObjectLong)(LPOLEOBJECT,UINT16,LPLONG); + void CALLBACK *(*QueryProtocol)(_LPOLEOBJECT,LPCOLESTR16); + OLESTATUS (CALLBACK *Release)(_LPOLEOBJECT); + OLESTATUS (CALLBACK *Show)(_LPOLEOBJECT,BOOL16); + OLESTATUS (CALLBACK *DoVerb)(_LPOLEOBJECT,UINT16,BOOL16,BOOL16); + OLESTATUS (CALLBACK *GetData)(_LPOLEOBJECT,OLECLIPFORMAT,HANDLE16 *); + OLESTATUS (CALLBACK *SetData)(_LPOLEOBJECT,OLECLIPFORMAT,HANDLE16); + OLESTATUS (CALLBACK *SetTargetDevice)(_LPOLEOBJECT,HGLOBAL16); + OLESTATUS (CALLBACK *SetBounds)(_LPOLEOBJECT,LPRECT16); + OLESTATUS (CALLBACK *EnumFormats)(_LPOLEOBJECT,OLECLIPFORMAT); + OLESTATUS (CALLBACK *SetColorScheme)(_LPOLEOBJECT,struct tagLOGPALETTE*); + OLESTATUS (CALLBACK *Delete)(_LPOLEOBJECT); + OLESTATUS (CALLBACK *SetHostNames)(_LPOLEOBJECT,LPCOLESTR16,LPCOLESTR16); + OLESTATUS (CALLBACK *SaveToStream)(_LPOLEOBJECT,struct _OLESTREAM*); + OLESTATUS (CALLBACK *Clone)(_LPOLEOBJECT,LPOLECLIENT,LHCLIENTDOC,LPCOLESTR16,_LPOLEOBJECT *); + OLESTATUS (CALLBACK *CopyFromLink)(_LPOLEOBJECT,LPOLECLIENT,LHCLIENTDOC,LPCOLESTR16,_LPOLEOBJECT *); + OLESTATUS (CALLBACK *Equal)(_LPOLEOBJECT,_LPOLEOBJECT); + OLESTATUS (CALLBACK *CopyToClipBoard)(_LPOLEOBJECT); + OLESTATUS (CALLBACK *Draw)(_LPOLEOBJECT,HDC16,LPRECT16,LPRECT16,HDC16); + OLESTATUS (CALLBACK *Activate)(_LPOLEOBJECT,UINT16,BOOL16,BOOL16,HWND16,LPRECT16); + OLESTATUS (CALLBACK *Execute)(_LPOLEOBJECT,HGLOBAL16,UINT16); + OLESTATUS (CALLBACK *Close)(_LPOLEOBJECT); + OLESTATUS (CALLBACK *Update)(_LPOLEOBJECT); + OLESTATUS (CALLBACK *Reconnect)(_LPOLEOBJECT); + OLESTATUS (CALLBACK *ObjectConvert)(_LPOLEOBJECT,LPCOLESTR16,LPOLECLIENT,LHCLIENTDOC,LPCOLESTR16,_LPOLEOBJECT*); + OLESTATUS (CALLBACK *GetLinkUpdateOptions)(_LPOLEOBJECT,LPOLEOPT_UPDATE); + OLESTATUS (CALLBACK *SetLinkUpdateOptions)(_LPOLEOBJECT,OLEOPT_UPDATE); + OLESTATUS (CALLBACK *Rename)(_LPOLEOBJECT,LPCOLESTR16); + OLESTATUS (CALLBACK *QueryName)(_LPOLEOBJECT,LPSTR,LPUINT16); + OLESTATUS (CALLBACK *QueryType)(_LPOLEOBJECT,LPLONG); + OLESTATUS (CALLBACK *QueryBounds)(_LPOLEOBJECT,LPRECT16); + OLESTATUS (CALLBACK *QuerySize)(_LPOLEOBJECT,LPDWORD); + OLESTATUS (CALLBACK *QueryOpen)(_LPOLEOBJECT); + OLESTATUS (CALLBACK *QueryOutOfDate)(_LPOLEOBJECT); + OLESTATUS (CALLBACK *QueryReleaseStatus)(_LPOLEOBJECT); + OLESTATUS (CALLBACK *QueryReleaseError)(_LPOLEOBJECT); + OLE_RELEASE_METHOD (CALLBACK *QueryReleaseMethod)(_LPOLEOBJECT); + OLESTATUS (CALLBACK *RequestData)(_LPOLEOBJECT,OLECLIPFORMAT); + OLESTATUS (CALLBACK *ObjectLong)(_LPOLEOBJECT,UINT16,LPLONG); } OLEOBJECTVTBL; typedef OLEOBJECTVTBL *LPOLEOBJECTVTBL; @@ -237,7 +237,7 @@ OLESTATUS WINAPI OleRevokeClientDoc(LHCLIENTDOC hServerDoc) */ OLESTATUS WINAPI OleCreateLinkFromClip( LPCSTR name,LPOLECLIENT olecli,LHCLIENTDOC hclientdoc,LPCSTR xname, - LPOLEOBJECT *lpoleob,OLEOPT_RENDER render,OLECLIPFORMAT clipformat + _LPOLEOBJECT *lpoleob,OLEOPT_RENDER render,OLECLIPFORMAT clipformat ) { FIXME("(%s,%p,%08lx,%s,%p,%d,%ld): stub!\n", name,olecli,hclientdoc,xname,lpoleob,render,clipformat); @@ -272,7 +272,7 @@ BOOL WINAPI OleIsDcMeta(HDC hdc) /****************************************************************************** * OleSetHostNames [OLECLI32.15] */ -OLESTATUS WINAPI OleSetHostNames(LPOLEOBJECT oleob,LPCSTR name1,LPCSTR name2) { +OLESTATUS WINAPI OleSetHostNames(_LPOLEOBJECT oleob,LPCSTR name1,LPCSTR name2) { FIXME("(%p,%s,%s): stub\n",oleob,name1,name2); return OLE_OK; } @@ -280,7 +280,7 @@ OLESTATUS WINAPI OleSetHostNames(LPOLEOBJECT oleob,LPCSTR name1,LPCSTR name2) { /****************************************************************************** * OleQueryType [OLECLI32.14] */ -OLESTATUS WINAPI OleQueryType(LPOLEOBJECT oleob,LONG*xlong) { +OLESTATUS WINAPI OleQueryType(_LPOLEOBJECT oleob,LONG*xlong) { FIXME("(%p,%p): stub!\n",oleob,xlong); if (!oleob) return 0x10; @@ -294,7 +294,7 @@ OLESTATUS WINAPI OleQueryType(LPOLEOBJECT oleob,LONG*xlong) { */ OLESTATUS WINAPI OleCreateFromClip( LPCSTR name,LPOLECLIENT olecli,LHCLIENTDOC hclientdoc,LPCSTR xname, - LPOLEOBJECT *lpoleob,OLEOPT_RENDER render, OLECLIPFORMAT clipformat + _LPOLEOBJECT *lpoleob,OLEOPT_RENDER render, OLECLIPFORMAT clipformat ) { FIXME("(%s,%p,%08lx,%s,%p,%d,%ld): stub!\n", name,olecli,hclientdoc,xname,lpoleob,render,clipformat); diff --git a/include/Makefile.in b/include/Makefile.in index 897d5aef8e6..23e6df9504a 100644 --- a/include/Makefile.in +++ b/include/Makefile.in @@ -20,6 +20,7 @@ IDL_SRCS = \ objidl.idl \ ocidl.idl \ oleidl.idl \ + propidl.idl \ pstore.idl \ servprov.idl \ shldisp.idl \ diff --git a/include/objbase.h b/include/objbase.h index 03b2510ca80..43a86110a17 100644 --- a/include/objbase.h +++ b/include/objbase.h @@ -487,6 +487,8 @@ HRESULT WINAPI StgOpenStorageOnILockBytes(ILockBytes *plkbyt, IStorage *pstgPrio } #endif +/* FIXME: #include */ +#include #ifndef __WINESRC__ diff --git a/include/objidl.h b/include/objidl.h index 1bcc104384f..bdfab1d9c71 100644 --- a/include/objidl.h +++ b/include/objidl.h @@ -7669,952 +7669,12 @@ void __RPC_STUB IChannelHook_ServerFillBuffer_Stub( #endif /* __IChannelHook_INTERFACE_DEFINED__ */ -#ifndef __IEnumSTATPROPSTG_FWD_DEFINED__ -#define __IEnumSTATPROPSTG_FWD_DEFINED__ -typedef struct IEnumSTATPROPSTG IEnumSTATPROPSTG; -#endif - -#ifndef __IEnumSTATPROPSETSTG_FWD_DEFINED__ -#define __IEnumSTATPROPSETSTG_FWD_DEFINED__ -typedef struct IEnumSTATPROPSETSTG IEnumSTATPROPSETSTG; -#endif - -#ifndef __IPropertyStorage_FWD_DEFINED__ -#define __IPropertyStorage_FWD_DEFINED__ -typedef struct IPropertyStorage IPropertyStorage; -#endif - -typedef IPropertyStorage *LPPROPERTYSTORAGE; - extern const FMTID FMTID_SummaryInformation; extern const FMTID FMTID_DocSummaryInformation; extern const FMTID FMTID_UserDefinedProperties; -#define PROPSETFLAG_DEFAULT (0) - -#define PROPSETFLAG_NONSIMPLE (1) - -#define PROPSETFLAG_ANSI (2) - -#define PROPSETFLAG_UNBUFFERED (4) - -typedef struct tagPROPVARIANT PROPVARIANT; - -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; - BSTR *pElems; -} CABSTR; - -typedef struct tagCABSTRBLOB { - ULONG cElems; - BSTRBLOB *pElems; -} CABSTRBLOB; - -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 { - char cVal; - UCHAR bVal; - short iVal; - USHORT uiVal; - VARIANT_BOOL boolVal; - 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; - IStream *pStream; - IStorage *pStorage; - BSTR bstrVal; - BSTRBLOB bstrblobVal; - 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; - CABSTRBLOB cabstrblob; - CALPSTR calpstr; - CALPWSTR calpwstr; - CAPROPVARIANT capropvar; - } DUMMYUNIONNAME; -}; - -typedef struct tagPROPVARIANT *LPPROPVARIANT; - -#define PRSPEC_INVALID (0xffffffff) - -#define PRSPEC_LPWSTR (0) - -#define PRSPEC_PROPID (1) - -typedef struct tagPROPSPEC { - ULONG ulKind; - union { - PROPID propid; - LPOLESTR lpwstr; - } DUMMYUNIONNAME; -} PROPSPEC; - -typedef struct tagSTATPROPSTG { - LPOLESTR lpwstrName; - PROPID propid; - VARTYPE vt; -} STATPROPSTG; - -typedef struct tagSTATPROPSETSTG { - FMTID fmtid; - CLSID clsid; - DWORD grfFlags; - FILETIME mtime; - FILETIME ctime; - FILETIME atime; - DWORD dwOSVersion; -} STATPROPSETSTG; - -/***************************************************************************** - * IPropertyStorage interface - */ -#ifndef __IPropertyStorage_INTERFACE_DEFINED__ -#define __IPropertyStorage_INTERFACE_DEFINED__ - -DEFINE_GUID(IID_IPropertyStorage, 0x00000138, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46); -#if defined(__cplusplus) && !defined(CINTERFACE) -struct IPropertyStorage : public IUnknown -{ - virtual HRESULT STDMETHODCALLTYPE ReadMultiple( - ULONG cpspec, - const PROPSPEC rgpspec[], - PROPVARIANT rgpropvar[]) = 0; - - virtual HRESULT STDMETHODCALLTYPE WriteMultiple( - ULONG cpspec, - const PROPSPEC rgpspec[], - const PROPVARIANT rgpropvar[], - PROPID propidNameFirst) = 0; - - virtual HRESULT STDMETHODCALLTYPE DeleteMultiple( - ULONG cpspec, - const PROPSPEC rgpspec[]) = 0; - - virtual HRESULT STDMETHODCALLTYPE ReadPropertyNames( - ULONG cpropid, - const PROPID rgpropid[], - LPOLESTR rglpwstrName[]) = 0; - - virtual HRESULT STDMETHODCALLTYPE WritePropertyNames( - ULONG cpropid, - const PROPID rgpropid[], - const LPOLESTR rglpwstrName[]) = 0; - - virtual HRESULT STDMETHODCALLTYPE DeletePropertyNames( - ULONG cpropid, - const PROPID rgpropid[]) = 0; - - virtual HRESULT STDMETHODCALLTYPE Commit( - DWORD grfCommitFlags) = 0; - - virtual HRESULT STDMETHODCALLTYPE Revert( - ) = 0; - - virtual HRESULT STDMETHODCALLTYPE Enum( - IEnumSTATPROPSTG** ppenum) = 0; - - virtual HRESULT STDMETHODCALLTYPE SetTimes( - const FILETIME* pctime, - const FILETIME* patime, - const FILETIME* pmtime) = 0; - - virtual HRESULT STDMETHODCALLTYPE SetClass( - REFCLSID clsid) = 0; - - virtual HRESULT STDMETHODCALLTYPE Stat( - STATPROPSETSTG* statpsstg) = 0; - -}; -#else -typedef struct IPropertyStorageVtbl IPropertyStorageVtbl; -struct IPropertyStorage { - const IPropertyStorageVtbl* lpVtbl; -}; -struct IPropertyStorageVtbl { - BEGIN_INTERFACE - - /*** IUnknown methods ***/ - HRESULT (STDMETHODCALLTYPE *QueryInterface)( - IPropertyStorage* This, - REFIID riid, - void** ppvObject); - - ULONG (STDMETHODCALLTYPE *AddRef)( - IPropertyStorage* This); - - ULONG (STDMETHODCALLTYPE *Release)( - IPropertyStorage* This); - - /*** IPropertyStorage methods ***/ - HRESULT (STDMETHODCALLTYPE *ReadMultiple)( - IPropertyStorage* This, - ULONG cpspec, - const PROPSPEC rgpspec[], - PROPVARIANT rgpropvar[]); - - HRESULT (STDMETHODCALLTYPE *WriteMultiple)( - IPropertyStorage* This, - ULONG cpspec, - const PROPSPEC rgpspec[], - const PROPVARIANT rgpropvar[], - PROPID propidNameFirst); - - HRESULT (STDMETHODCALLTYPE *DeleteMultiple)( - IPropertyStorage* This, - ULONG cpspec, - const PROPSPEC rgpspec[]); - - HRESULT (STDMETHODCALLTYPE *ReadPropertyNames)( - IPropertyStorage* This, - ULONG cpropid, - const PROPID rgpropid[], - LPOLESTR rglpwstrName[]); - - HRESULT (STDMETHODCALLTYPE *WritePropertyNames)( - IPropertyStorage* This, - ULONG cpropid, - const PROPID rgpropid[], - const LPOLESTR rglpwstrName[]); - - HRESULT (STDMETHODCALLTYPE *DeletePropertyNames)( - IPropertyStorage* This, - ULONG cpropid, - const PROPID rgpropid[]); - - HRESULT (STDMETHODCALLTYPE *Commit)( - IPropertyStorage* This, - DWORD grfCommitFlags); - - HRESULT (STDMETHODCALLTYPE *Revert)( - IPropertyStorage* This); - - HRESULT (STDMETHODCALLTYPE *Enum)( - IPropertyStorage* This, - IEnumSTATPROPSTG** ppenum); - - HRESULT (STDMETHODCALLTYPE *SetTimes)( - IPropertyStorage* This, - const FILETIME* pctime, - const FILETIME* patime, - const FILETIME* pmtime); - - HRESULT (STDMETHODCALLTYPE *SetClass)( - IPropertyStorage* This, - REFCLSID clsid); - - HRESULT (STDMETHODCALLTYPE *Stat)( - IPropertyStorage* This, - STATPROPSETSTG* statpsstg); - - END_INTERFACE -}; - -#ifdef COBJMACROS -/*** IUnknown methods ***/ -#define IPropertyStorage_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) -#define IPropertyStorage_AddRef(p) (p)->lpVtbl->AddRef(p) -#define IPropertyStorage_Release(p) (p)->lpVtbl->Release(p) -/*** IPropertyStorage methods ***/ -#define IPropertyStorage_ReadMultiple(p,a,b,c) (p)->lpVtbl->ReadMultiple(p,a,b,c) -#define IPropertyStorage_WriteMultiple(p,a,b,c,d) (p)->lpVtbl->WriteMultiple(p,a,b,c,d) -#define IPropertyStorage_DeleteMultiple(p,a,b) (p)->lpVtbl->DeleteMultiple(p,a,b) -#define IPropertyStorage_ReadPropertyNames(p,a,b,c) (p)->lpVtbl->ReadPropertyNames(p,a,b,c) -#define IPropertyStorage_WritePropertyNames(p,a,b,c) (p)->lpVtbl->WritePropertyNames(p,a,b,c) -#define IPropertyStorage_DeletePropertyNames(p,a,b) (p)->lpVtbl->DeletePropertyNames(p,a,b) -#define IPropertyStorage_Commit(p,a) (p)->lpVtbl->Commit(p,a) -#define IPropertyStorage_Revert(p) (p)->lpVtbl->Revert(p) -#define IPropertyStorage_Enum(p,a) (p)->lpVtbl->Enum(p,a) -#define IPropertyStorage_SetTimes(p,a,b,c) (p)->lpVtbl->SetTimes(p,a,b,c) -#define IPropertyStorage_SetClass(p,a) (p)->lpVtbl->SetClass(p,a) -#define IPropertyStorage_Stat(p,a) (p)->lpVtbl->Stat(p,a) -#endif - -#endif - -#define IPropertyStorage_METHODS \ - /*** IUnknown methods ***/ \ - STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \ - STDMETHOD_(ULONG,AddRef)(THIS) PURE; \ - STDMETHOD_(ULONG,Release)(THIS) PURE; \ - /*** IPropertyStorage methods ***/ \ - STDMETHOD_(HRESULT,ReadMultiple)(THIS_ ULONG cpspec, const PROPSPEC rgpspec[], PROPVARIANT rgpropvar[]) PURE; \ - STDMETHOD_(HRESULT,WriteMultiple)(THIS_ ULONG cpspec, const PROPSPEC rgpspec[], const PROPVARIANT rgpropvar[], PROPID propidNameFirst) PURE; \ - STDMETHOD_(HRESULT,DeleteMultiple)(THIS_ ULONG cpspec, const PROPSPEC rgpspec[]) PURE; \ - STDMETHOD_(HRESULT,ReadPropertyNames)(THIS_ ULONG cpropid, const PROPID rgpropid[], LPOLESTR rglpwstrName[]) PURE; \ - STDMETHOD_(HRESULT,WritePropertyNames)(THIS_ ULONG cpropid, const PROPID rgpropid[], const LPOLESTR rglpwstrName[]) PURE; \ - STDMETHOD_(HRESULT,DeletePropertyNames)(THIS_ ULONG cpropid, const PROPID rgpropid[]) PURE; \ - STDMETHOD_(HRESULT,Commit)(THIS_ DWORD grfCommitFlags) PURE; \ - STDMETHOD_(HRESULT,Revert)(THIS) PURE; \ - STDMETHOD_(HRESULT,Enum)(THIS_ IEnumSTATPROPSTG** ppenum) PURE; \ - STDMETHOD_(HRESULT,SetTimes)(THIS_ const FILETIME* pctime, const FILETIME* patime, const FILETIME* pmtime) PURE; \ - STDMETHOD_(HRESULT,SetClass)(THIS_ REFCLSID clsid) PURE; \ - STDMETHOD_(HRESULT,Stat)(THIS_ STATPROPSETSTG* statpsstg) PURE; - -HRESULT CALLBACK IPropertyStorage_ReadMultiple_Proxy( - IPropertyStorage* This, - ULONG cpspec, - const PROPSPEC rgpspec[], - PROPVARIANT rgpropvar[]); -void __RPC_STUB IPropertyStorage_ReadMultiple_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IPropertyStorage_WriteMultiple_Proxy( - IPropertyStorage* This, - ULONG cpspec, - const PROPSPEC rgpspec[], - const PROPVARIANT rgpropvar[], - PROPID propidNameFirst); -void __RPC_STUB IPropertyStorage_WriteMultiple_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IPropertyStorage_DeleteMultiple_Proxy( - IPropertyStorage* This, - ULONG cpspec, - const PROPSPEC rgpspec[]); -void __RPC_STUB IPropertyStorage_DeleteMultiple_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IPropertyStorage_ReadPropertyNames_Proxy( - IPropertyStorage* This, - ULONG cpropid, - const PROPID rgpropid[], - LPOLESTR rglpwstrName[]); -void __RPC_STUB IPropertyStorage_ReadPropertyNames_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IPropertyStorage_WritePropertyNames_Proxy( - IPropertyStorage* This, - ULONG cpropid, - const PROPID rgpropid[], - const LPOLESTR rglpwstrName[]); -void __RPC_STUB IPropertyStorage_WritePropertyNames_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IPropertyStorage_DeletePropertyNames_Proxy( - IPropertyStorage* This, - ULONG cpropid, - const PROPID rgpropid[]); -void __RPC_STUB IPropertyStorage_DeletePropertyNames_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IPropertyStorage_Commit_Proxy( - IPropertyStorage* This, - DWORD grfCommitFlags); -void __RPC_STUB IPropertyStorage_Commit_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IPropertyStorage_Revert_Proxy( - IPropertyStorage* This); -void __RPC_STUB IPropertyStorage_Revert_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IPropertyStorage_Enum_Proxy( - IPropertyStorage* This, - IEnumSTATPROPSTG** ppenum); -void __RPC_STUB IPropertyStorage_Enum_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IPropertyStorage_SetTimes_Proxy( - IPropertyStorage* This, - const FILETIME* pctime, - const FILETIME* patime, - const FILETIME* pmtime); -void __RPC_STUB IPropertyStorage_SetTimes_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IPropertyStorage_SetClass_Proxy( - IPropertyStorage* This, - REFCLSID clsid); -void __RPC_STUB IPropertyStorage_SetClass_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IPropertyStorage_Stat_Proxy( - IPropertyStorage* This, - STATPROPSETSTG* statpsstg); -void __RPC_STUB IPropertyStorage_Stat_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); - -#endif /* __IPropertyStorage_INTERFACE_DEFINED__ */ - -#ifndef __IPropertySetStorage_FWD_DEFINED__ -#define __IPropertySetStorage_FWD_DEFINED__ -typedef struct IPropertySetStorage IPropertySetStorage; -#endif - -typedef IPropertySetStorage *LPPROPERTYSETSTORAGE; - -/***************************************************************************** - * IPropertySetStorage interface - */ -#ifndef __IPropertySetStorage_INTERFACE_DEFINED__ -#define __IPropertySetStorage_INTERFACE_DEFINED__ - -DEFINE_GUID(IID_IPropertySetStorage, 0x0000013a, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46); -#if defined(__cplusplus) && !defined(CINTERFACE) -struct IPropertySetStorage : public IUnknown -{ - virtual HRESULT STDMETHODCALLTYPE Create( - REFFMTID rfmtid, - const CLSID* pclsid, - DWORD grfFlags, - DWORD grfMode, - IPropertyStorage** ppprstg) = 0; - - virtual HRESULT STDMETHODCALLTYPE Open( - REFFMTID rfmtid, - DWORD grfMode, - IPropertyStorage** ppprstg) = 0; - - virtual HRESULT STDMETHODCALLTYPE Delete( - REFFMTID rfmtid) = 0; - - virtual HRESULT STDMETHODCALLTYPE Enum( - IEnumSTATPROPSETSTG** ppenum) = 0; - -}; -#else -typedef struct IPropertySetStorageVtbl IPropertySetStorageVtbl; -struct IPropertySetStorage { - const IPropertySetStorageVtbl* lpVtbl; -}; -struct IPropertySetStorageVtbl { - BEGIN_INTERFACE - - /*** IUnknown methods ***/ - HRESULT (STDMETHODCALLTYPE *QueryInterface)( - IPropertySetStorage* This, - REFIID riid, - void** ppvObject); - - ULONG (STDMETHODCALLTYPE *AddRef)( - IPropertySetStorage* This); - - ULONG (STDMETHODCALLTYPE *Release)( - IPropertySetStorage* This); - - /*** IPropertySetStorage methods ***/ - HRESULT (STDMETHODCALLTYPE *Create)( - IPropertySetStorage* This, - REFFMTID rfmtid, - const CLSID* pclsid, - DWORD grfFlags, - DWORD grfMode, - IPropertyStorage** ppprstg); - - HRESULT (STDMETHODCALLTYPE *Open)( - IPropertySetStorage* This, - REFFMTID rfmtid, - DWORD grfMode, - IPropertyStorage** ppprstg); - - HRESULT (STDMETHODCALLTYPE *Delete)( - IPropertySetStorage* This, - REFFMTID rfmtid); - - HRESULT (STDMETHODCALLTYPE *Enum)( - IPropertySetStorage* This, - IEnumSTATPROPSETSTG** ppenum); - - END_INTERFACE -}; - -#ifdef COBJMACROS -/*** IUnknown methods ***/ -#define IPropertySetStorage_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) -#define IPropertySetStorage_AddRef(p) (p)->lpVtbl->AddRef(p) -#define IPropertySetStorage_Release(p) (p)->lpVtbl->Release(p) -/*** IPropertySetStorage methods ***/ -#define IPropertySetStorage_Create(p,a,b,c,d,e) (p)->lpVtbl->Create(p,a,b,c,d,e) -#define IPropertySetStorage_Open(p,a,b,c) (p)->lpVtbl->Open(p,a,b,c) -#define IPropertySetStorage_Delete(p,a) (p)->lpVtbl->Delete(p,a) -#define IPropertySetStorage_Enum(p,a) (p)->lpVtbl->Enum(p,a) -#endif - -#endif - -#define IPropertySetStorage_METHODS \ - /*** IUnknown methods ***/ \ - STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \ - STDMETHOD_(ULONG,AddRef)(THIS) PURE; \ - STDMETHOD_(ULONG,Release)(THIS) PURE; \ - /*** IPropertySetStorage methods ***/ \ - STDMETHOD_(HRESULT,Create)(THIS_ REFFMTID rfmtid, const CLSID* pclsid, DWORD grfFlags, DWORD grfMode, IPropertyStorage** ppprstg) PURE; \ - STDMETHOD_(HRESULT,Open)(THIS_ REFFMTID rfmtid, DWORD grfMode, IPropertyStorage** ppprstg) PURE; \ - STDMETHOD_(HRESULT,Delete)(THIS_ REFFMTID rfmtid) PURE; \ - STDMETHOD_(HRESULT,Enum)(THIS_ IEnumSTATPROPSETSTG** ppenum) PURE; - -HRESULT CALLBACK IPropertySetStorage_Create_Proxy( - IPropertySetStorage* This, - REFFMTID rfmtid, - const CLSID* pclsid, - DWORD grfFlags, - DWORD grfMode, - IPropertyStorage** ppprstg); -void __RPC_STUB IPropertySetStorage_Create_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IPropertySetStorage_Open_Proxy( - IPropertySetStorage* This, - REFFMTID rfmtid, - DWORD grfMode, - IPropertyStorage** ppprstg); -void __RPC_STUB IPropertySetStorage_Open_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IPropertySetStorage_Delete_Proxy( - IPropertySetStorage* This, - REFFMTID rfmtid); -void __RPC_STUB IPropertySetStorage_Delete_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IPropertySetStorage_Enum_Proxy( - IPropertySetStorage* This, - IEnumSTATPROPSETSTG** ppenum); -void __RPC_STUB IPropertySetStorage_Enum_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); - -#endif /* __IPropertySetStorage_INTERFACE_DEFINED__ */ - -typedef IEnumSTATPROPSTG *LPENUMSTATPROPSTG; - -/***************************************************************************** - * IEnumSTATPROPSTG interface - */ -#ifndef __IEnumSTATPROPSTG_INTERFACE_DEFINED__ -#define __IEnumSTATPROPSTG_INTERFACE_DEFINED__ - -DEFINE_GUID(IID_IEnumSTATPROPSTG, 0x00000139, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46); -#if defined(__cplusplus) && !defined(CINTERFACE) -struct IEnumSTATPROPSTG : public IUnknown -{ - virtual HRESULT STDMETHODCALLTYPE Next( - ULONG celt, - STATPROPSTG* rgelt, - ULONG* pceltFetched) = 0; - - virtual HRESULT STDMETHODCALLTYPE Skip( - ULONG celt) = 0; - - virtual HRESULT STDMETHODCALLTYPE Reset( - ) = 0; - - virtual HRESULT STDMETHODCALLTYPE Clone( - IEnumSTATPROPSTG** ppenum) = 0; - -}; -#else -typedef struct IEnumSTATPROPSTGVtbl IEnumSTATPROPSTGVtbl; -struct IEnumSTATPROPSTG { - const IEnumSTATPROPSTGVtbl* lpVtbl; -}; -struct IEnumSTATPROPSTGVtbl { - BEGIN_INTERFACE - - /*** IUnknown methods ***/ - HRESULT (STDMETHODCALLTYPE *QueryInterface)( - IEnumSTATPROPSTG* This, - REFIID riid, - void** ppvObject); - - ULONG (STDMETHODCALLTYPE *AddRef)( - IEnumSTATPROPSTG* This); - - ULONG (STDMETHODCALLTYPE *Release)( - IEnumSTATPROPSTG* This); - - /*** IEnumSTATPROPSTG methods ***/ - HRESULT (STDMETHODCALLTYPE *Next)( - IEnumSTATPROPSTG* This, - ULONG celt, - STATPROPSTG* rgelt, - ULONG* pceltFetched); - - HRESULT (STDMETHODCALLTYPE *Skip)( - IEnumSTATPROPSTG* This, - ULONG celt); - - HRESULT (STDMETHODCALLTYPE *Reset)( - IEnumSTATPROPSTG* This); - - HRESULT (STDMETHODCALLTYPE *Clone)( - IEnumSTATPROPSTG* This, - IEnumSTATPROPSTG** ppenum); - - END_INTERFACE -}; - -#ifdef COBJMACROS -/*** IUnknown methods ***/ -#define IEnumSTATPROPSTG_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) -#define IEnumSTATPROPSTG_AddRef(p) (p)->lpVtbl->AddRef(p) -#define IEnumSTATPROPSTG_Release(p) (p)->lpVtbl->Release(p) -/*** IEnumSTATPROPSTG methods ***/ -#define IEnumSTATPROPSTG_Next(p,a,b,c) (p)->lpVtbl->Next(p,a,b,c) -#define IEnumSTATPROPSTG_Skip(p,a) (p)->lpVtbl->Skip(p,a) -#define IEnumSTATPROPSTG_Reset(p) (p)->lpVtbl->Reset(p) -#define IEnumSTATPROPSTG_Clone(p,a) (p)->lpVtbl->Clone(p,a) -#endif - -#endif - -#define IEnumSTATPROPSTG_METHODS \ - /*** IUnknown methods ***/ \ - STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \ - STDMETHOD_(ULONG,AddRef)(THIS) PURE; \ - STDMETHOD_(ULONG,Release)(THIS) PURE; \ - /*** IEnumSTATPROPSTG methods ***/ \ - STDMETHOD_(HRESULT,Next)(THIS_ ULONG celt, STATPROPSTG* rgelt, ULONG* pceltFetched) PURE; \ - STDMETHOD_(HRESULT,Skip)(THIS_ ULONG celt) PURE; \ - STDMETHOD_(HRESULT,Reset)(THIS) PURE; \ - STDMETHOD_(HRESULT,Clone)(THIS_ IEnumSTATPROPSTG** ppenum) PURE; - -HRESULT CALLBACK IEnumSTATPROPSTG_RemoteNext_Proxy( - IEnumSTATPROPSTG* This, - ULONG celt, - STATPROPSTG* rgelt, - ULONG* pceltFetched); -void __RPC_STUB IEnumSTATPROPSTG_RemoteNext_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IEnumSTATPROPSTG_Next_Proxy( - IEnumSTATPROPSTG* This, - ULONG celt, - STATPROPSTG* rgelt, - ULONG* pceltFetched); -HRESULT __RPC_STUB IEnumSTATPROPSTG_Next_Stub( - IEnumSTATPROPSTG* This, - ULONG celt, - STATPROPSTG* rgelt, - ULONG* pceltFetched); -HRESULT CALLBACK IEnumSTATPROPSTG_Skip_Proxy( - IEnumSTATPROPSTG* This, - ULONG celt); -void __RPC_STUB IEnumSTATPROPSTG_Skip_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IEnumSTATPROPSTG_Reset_Proxy( - IEnumSTATPROPSTG* This); -void __RPC_STUB IEnumSTATPROPSTG_Reset_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IEnumSTATPROPSTG_Clone_Proxy( - IEnumSTATPROPSTG* This, - IEnumSTATPROPSTG** ppenum); -void __RPC_STUB IEnumSTATPROPSTG_Clone_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); - -#endif /* __IEnumSTATPROPSTG_INTERFACE_DEFINED__ */ - -typedef IEnumSTATPROPSETSTG *LPENUMSTATPROPSETSTG; - -/***************************************************************************** - * IEnumSTATPROPSETSTG interface - */ -#ifndef __IEnumSTATPROPSETSTG_INTERFACE_DEFINED__ -#define __IEnumSTATPROPSETSTG_INTERFACE_DEFINED__ - -DEFINE_GUID(IID_IEnumSTATPROPSETSTG, 0x0000013b, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46); -#if defined(__cplusplus) && !defined(CINTERFACE) -struct IEnumSTATPROPSETSTG : public IUnknown -{ - virtual HRESULT STDMETHODCALLTYPE Next( - ULONG celt, - STATPROPSETSTG* rgelt, - ULONG* pceltFetched) = 0; - - virtual HRESULT STDMETHODCALLTYPE Skip( - ULONG celt) = 0; - - virtual HRESULT STDMETHODCALLTYPE Reset( - ) = 0; - - virtual HRESULT STDMETHODCALLTYPE Clone( - IEnumSTATPROPSETSTG** ppenum) = 0; - -}; -#else -typedef struct IEnumSTATPROPSETSTGVtbl IEnumSTATPROPSETSTGVtbl; -struct IEnumSTATPROPSETSTG { - const IEnumSTATPROPSETSTGVtbl* lpVtbl; -}; -struct IEnumSTATPROPSETSTGVtbl { - BEGIN_INTERFACE - - /*** IUnknown methods ***/ - HRESULT (STDMETHODCALLTYPE *QueryInterface)( - IEnumSTATPROPSETSTG* This, - REFIID riid, - void** ppvObject); - - ULONG (STDMETHODCALLTYPE *AddRef)( - IEnumSTATPROPSETSTG* This); - - ULONG (STDMETHODCALLTYPE *Release)( - IEnumSTATPROPSETSTG* This); - - /*** IEnumSTATPROPSETSTG methods ***/ - HRESULT (STDMETHODCALLTYPE *Next)( - IEnumSTATPROPSETSTG* This, - ULONG celt, - STATPROPSETSTG* rgelt, - ULONG* pceltFetched); - - HRESULT (STDMETHODCALLTYPE *Skip)( - IEnumSTATPROPSETSTG* This, - ULONG celt); - - HRESULT (STDMETHODCALLTYPE *Reset)( - IEnumSTATPROPSETSTG* This); - - HRESULT (STDMETHODCALLTYPE *Clone)( - IEnumSTATPROPSETSTG* This, - IEnumSTATPROPSETSTG** ppenum); - - END_INTERFACE -}; - -#ifdef COBJMACROS -/*** IUnknown methods ***/ -#define IEnumSTATPROPSETSTG_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) -#define IEnumSTATPROPSETSTG_AddRef(p) (p)->lpVtbl->AddRef(p) -#define IEnumSTATPROPSETSTG_Release(p) (p)->lpVtbl->Release(p) -/*** IEnumSTATPROPSETSTG methods ***/ -#define IEnumSTATPROPSETSTG_Next(p,a,b,c) (p)->lpVtbl->Next(p,a,b,c) -#define IEnumSTATPROPSETSTG_Skip(p,a) (p)->lpVtbl->Skip(p,a) -#define IEnumSTATPROPSETSTG_Reset(p) (p)->lpVtbl->Reset(p) -#define IEnumSTATPROPSETSTG_Clone(p,a) (p)->lpVtbl->Clone(p,a) -#endif - -#endif - -#define IEnumSTATPROPSETSTG_METHODS \ - /*** IUnknown methods ***/ \ - STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \ - STDMETHOD_(ULONG,AddRef)(THIS) PURE; \ - STDMETHOD_(ULONG,Release)(THIS) PURE; \ - /*** IEnumSTATPROPSETSTG methods ***/ \ - STDMETHOD_(HRESULT,Next)(THIS_ ULONG celt, STATPROPSETSTG* rgelt, ULONG* pceltFetched) PURE; \ - STDMETHOD_(HRESULT,Skip)(THIS_ ULONG celt) PURE; \ - STDMETHOD_(HRESULT,Reset)(THIS) PURE; \ - STDMETHOD_(HRESULT,Clone)(THIS_ IEnumSTATPROPSETSTG** ppenum) PURE; - -HRESULT CALLBACK IEnumSTATPROPSETSTG_RemoteNext_Proxy( - IEnumSTATPROPSETSTG* This, - ULONG celt, - STATPROPSETSTG* rgelt, - ULONG* pceltFetched); -void __RPC_STUB IEnumSTATPROPSETSTG_RemoteNext_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IEnumSTATPROPSETSTG_Next_Proxy( - IEnumSTATPROPSETSTG* This, - ULONG celt, - STATPROPSETSTG* rgelt, - ULONG* pceltFetched); -HRESULT __RPC_STUB IEnumSTATPROPSETSTG_Next_Stub( - IEnumSTATPROPSETSTG* This, - ULONG celt, - STATPROPSETSTG* rgelt, - ULONG* pceltFetched); -HRESULT CALLBACK IEnumSTATPROPSETSTG_Skip_Proxy( - IEnumSTATPROPSETSTG* This, - ULONG celt); -void __RPC_STUB IEnumSTATPROPSETSTG_Skip_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IEnumSTATPROPSETSTG_Reset_Proxy( - IEnumSTATPROPSETSTG* This); -void __RPC_STUB IEnumSTATPROPSETSTG_Reset_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IEnumSTATPROPSETSTG_Clone_Proxy( - IEnumSTATPROPSETSTG* This, - IEnumSTATPROPSETSTG** ppenum); -void __RPC_STUB IEnumSTATPROPSETSTG_Clone_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); - -#endif /* __IEnumSTATPROPSETSTG_INTERFACE_DEFINED__ */ - #ifndef __IClientSecurity_FWD_DEFINED__ #define __IClientSecurity_FWD_DEFINED__ typedef struct IClientSecurity IClientSecurity; diff --git a/include/objidl.idl b/include/objidl.idl index 4176edb2d2c..4eb6216e484 100644 --- a/include/objidl.idl +++ b/include/objidl.idl @@ -1810,293 +1810,10 @@ interface IChannelHook : IUnknown [in] HRESULT hrFault ); } -/******************** Property Storage ********************/ +extern const FMTID FMTID_SummaryInformation; +extern const FMTID FMTID_DocSummaryInformation; +extern const FMTID FMTID_UserDefinedProperties; -interface IEnumSTATPROPSTG; -interface IEnumSTATPROPSETSTG; - -[ - object, - uuid(00000138-0000-0000-C000-000000000046), - pointer_default(unique) -] -interface IPropertyStorage : IUnknown -{ - typedef [unique] IPropertyStorage *LPPROPERTYSTORAGE; - - extern const FMTID FMTID_SummaryInformation; - extern const FMTID FMTID_DocSummaryInformation; - extern const FMTID FMTID_UserDefinedProperties; - - const DWORD PROPSETFLAG_DEFAULT = 0; - const DWORD PROPSETFLAG_NONSIMPLE = 1; - const DWORD PROPSETFLAG_ANSI = 2; - const DWORD PROPSETFLAG_UNBUFFERED = 4; - - typedef struct tagPROPVARIANT PROPVARIANT; - - #define TYPEDEF_CA(type, name) \ - typedef struct tag##name { \ - ULONG cElems; \ - [size_is(cElems)] \ - type *pElems; \ - } name - - TYPEDEF_CA(unsigned char, CAUB); - TYPEDEF_CA(short, CAI); - TYPEDEF_CA(USHORT, CAUI); - TYPEDEF_CA(long, CAL); - TYPEDEF_CA(ULONG, CAUL); - TYPEDEF_CA(float, CAFLT); - TYPEDEF_CA(double, CADBL); - TYPEDEF_CA(CY, CACY); - TYPEDEF_CA(DATE, CADATE); - TYPEDEF_CA(BSTR, CABSTR); - TYPEDEF_CA(BSTRBLOB, CABSTRBLOB); - TYPEDEF_CA(VARIANT_BOOL, CABOOL); - TYPEDEF_CA(SCODE, CASCODE); - TYPEDEF_CA(PROPVARIANT, CAPROPVARIANT); - TYPEDEF_CA(LARGE_INTEGER, CAH); - TYPEDEF_CA(ULARGE_INTEGER, CAUH); - TYPEDEF_CA(LPSTR, CALPSTR); - TYPEDEF_CA(LPWSTR, CALPWSTR); - TYPEDEF_CA(FILETIME, CAFILETIME); - TYPEDEF_CA(CLIPDATA, CACLIPDATA); - TYPEDEF_CA(CLSID, CACLSID); - - struct tagPROPVARIANT { - VARTYPE vt; - WORD wReserved1; - WORD wReserved2; - WORD wReserved3; - [switch_is(vt & 0x1fff)] union { - [case(VT_EMPTY, VT_NULL)] ; - [case(VT_I1)] char cVal; - [case(VT_UI1)] UCHAR bVal; - [case(VT_I2)] short iVal; - [case(VT_UI2)] USHORT uiVal; - [case(VT_BOOL)] VARIANT_BOOL boolVal; -#if 0 /* illegal in C++ */ - [case(VT_ILLEGAL)] _VARIANT_BOOL bool; -#endif - [case(VT_I4)] long lVal; - [case(VT_UI4)] ULONG ulVal; - [case(VT_R4)] float fltVal; - [case(VT_ERROR)] SCODE scode; - [case(VT_I8)] LARGE_INTEGER hVal; - [case(VT_UI8)] ULARGE_INTEGER uhVal; - [case(VT_R8)] double dblVal; - [case(VT_CY)] CY cyVal; - [case(VT_DATE)] DATE date; - [case(VT_FILETIME)] FILETIME filetime; - [case(VT_CLSID)] CLSID *puuid; - [case(VT_BLOB, VT_BLOB_OBJECT)] BLOB blob; - [case(VT_CF)] CLIPDATA *pclipdata; - [case(VT_STREAM, VT_STREAMED_OBJECT)] IStream *pStream; - [case(VT_STORAGE, VT_STORED_OBJECT)] IStorage *pStorage; - [case(VT_BSTR)] BSTR bstrVal; - [case(VT_BSTR_BLOB)] BSTRBLOB bstrblobVal; - [case(VT_LPSTR)] LPSTR pszVal; - [case(VT_LPWSTR)] LPWSTR pwszVal; - [case(VT_UI1|VT_VECTOR)] CAUB caub; - [case(VT_I2|VT_VECTOR)] CAI cai; - [case(VT_UI2|VT_VECTOR)] CAUI caui; - [case(VT_BOOL|VT_VECTOR)] CABOOL cabool; - [case(VT_I4|VT_VECTOR)] CAL cal; - [case(VT_UI4|VT_VECTOR)] CAUL caul; - [case(VT_R4|VT_VECTOR)] CAFLT caflt; - [case(VT_ERROR|VT_VECTOR)] CASCODE cascode; - [case(VT_I8|VT_VECTOR)] CAH cah; - [case(VT_UI8|VT_VECTOR)] CAUH cauh; - [case(VT_R8|VT_VECTOR)] CADBL cadbl; - [case(VT_CY|VT_VECTOR)] CACY cacy; - [case(VT_DATE|VT_VECTOR)] CADATE cadate; - [case(VT_FILETIME|VT_VECTOR)] CAFILETIME cafiletime; - [case(VT_CLSID|VT_VECTOR)] CACLSID cauuid; - [case(VT_CF|VT_VECTOR)] CACLIPDATA caclipdata; - [case(VT_BSTR|VT_VECTOR)] CABSTR cabstr; - [case(VT_BSTR_BLOB|VT_VECTOR)] CABSTRBLOB cabstrblob; - [case(VT_LPSTR|VT_VECTOR)] CALPSTR calpstr; - [case(VT_LPWSTR|VT_VECTOR)] CALPWSTR calpwstr; - [case(VT_VARIANT|VT_VECTOR)] CAPROPVARIANT capropvar; - }; - }; - - typedef struct tagPROPVARIANT *LPPROPVARIANT; - - /* FIXME: bunches of property IDs */ - - const ULONG PRSPEC_INVALID = 0xffffffff; - const ULONG PRSPEC_LPWSTR = 0; - const ULONG PRSPEC_PROPID = 1; - - typedef struct tagPROPSPEC { - ULONG ulKind; - [switch_is(ulKind)] union { - [case(PRSPEC_PROPID)] PROPID propid; - [case(PRSPEC_LPWSTR)] LPOLESTR lpwstr; - [default] ; - }; - } PROPSPEC; - - typedef struct tagSTATPROPSTG { - LPOLESTR lpwstrName; - PROPID propid; - VARTYPE vt; - } STATPROPSTG; - - /* FIXME: macros */ - - typedef struct tagSTATPROPSETSTG { - FMTID fmtid; - CLSID clsid; - DWORD grfFlags; - FILETIME mtime; - FILETIME ctime; - FILETIME atime; - DWORD dwOSVersion; - } STATPROPSETSTG; - - HRESULT ReadMultiple( - [in] ULONG cpspec, - [in, size_is(cpspec)] const PROPSPEC rgpspec[], - [out, size_is(cpspec)] PROPVARIANT rgpropvar[]); - - HRESULT WriteMultiple( - [in] ULONG cpspec, - [in, size_is(cpspec)] const PROPSPEC rgpspec[], - [in, size_is(cpspec)] const PROPVARIANT rgpropvar[], - [in] PROPID propidNameFirst); - - HRESULT DeleteMultiple( - [in] ULONG cpspec, - [in, size_is(cpspec)] const PROPSPEC rgpspec[]); - - HRESULT ReadPropertyNames( - [in] ULONG cpropid, - [in, size_is(cpropid)] const PROPID rgpropid[], - [out, size_is(cpropid)] LPOLESTR rglpwstrName[]); - - HRESULT WritePropertyNames( - [in] ULONG cpropid, - [in, size_is(cpropid)] const PROPID rgpropid[], - [in, size_is(cpropid)] const LPOLESTR rglpwstrName[]); - - HRESULT DeletePropertyNames( - [in] ULONG cpropid, - [in, size_is(cpropid)] const PROPID rgpropid[]); - - HRESULT Commit( - [in] DWORD grfCommitFlags); - - HRESULT Revert(); - - HRESULT Enum( - [out] IEnumSTATPROPSTG **ppenum); - - HRESULT SetTimes( - [in] const FILETIME *pctime, - [in] const FILETIME *patime, - [in] const FILETIME *pmtime); - - HRESULT SetClass( - [in] REFCLSID clsid); - - HRESULT Stat( - [out] STATPROPSETSTG *statpsstg); -} - -[ - object, - uuid(0000013A-0000-0000-C000-000000000046), - pointer_default(unique) -] -interface IPropertySetStorage : IUnknown -{ - typedef [unique] IPropertySetStorage *LPPROPERTYSETSTORAGE; - - HRESULT Create( - [in] REFFMTID rfmtid, - [in, unique] const CLSID *pclsid, - [in] DWORD grfFlags, - [in] DWORD grfMode, - [out] IPropertyStorage **ppprstg); - - HRESULT Open( - [in] REFFMTID rfmtid, - [in] DWORD grfMode, - [out] IPropertyStorage **ppprstg); - - HRESULT Delete( - [in] REFFMTID rfmtid); - - HRESULT Enum( - [out] IEnumSTATPROPSETSTG **ppenum); -} - -[ - object, - uuid(00000139-0000-0000-C000-000000000046), - pointer_default(unique) -] -interface IEnumSTATPROPSTG : IUnknown -{ - typedef [unique] IEnumSTATPROPSTG *LPENUMSTATPROPSTG; - - [local] - HRESULT Next( - [in] ULONG celt, - [out, size_is(celt), length_is(*pceltFetched)] - STATPROPSTG *rgelt, - [out] ULONG *pceltFetched); - - [call_as(Next)] - HRESULT RemoteNext( - [in] ULONG celt, - [out, size_is(celt), length_is(*pceltFetched)] - STATPROPSTG *rgelt, - [out] ULONG *pceltFetched); - - HRESULT Skip( - [in] ULONG celt); - - HRESULT Reset(); - - HRESULT Clone( - [out] IEnumSTATPROPSTG **ppenum); -} - -[ - object, - uuid(0000013B-0000-0000-C000-000000000046), - pointer_default(unique) -] -interface IEnumSTATPROPSETSTG : IUnknown -{ - typedef [unique] IEnumSTATPROPSETSTG *LPENUMSTATPROPSETSTG; - - [local] - HRESULT Next( - [in] ULONG celt, - [out, size_is(celt), length_is(*pceltFetched)] - STATPROPSETSTG *rgelt, - [out] ULONG *pceltFetched); - - [call_as(Next)] - HRESULT RemoteNext( - [in] ULONG celt, - [out, size_is(celt), length_is(*pceltFetched)] - STATPROPSETSTG *rgelt, - [out] ULONG *pceltFetched); - - HRESULT Skip( - [in] ULONG celt); - - HRESULT Reset(); - - HRESULT Clone( - [out] IEnumSTATPROPSETSTG **ppenum); -} /******************** Connection Points ********************/ /* FIXME */ diff --git a/include/propidl.h b/include/propidl.h new file mode 100644 index 00000000000..3c77c2ad5a1 --- /dev/null +++ b/include/propidl.h @@ -0,0 +1,958 @@ +/*** Autogenerated by WIDL 0.1 from propidl.idl - Do not edit ***/ +#include +#include + +#ifndef __WIDL_PROPIDL_H +#define __WIDL_PROPIDL_H +#ifdef __cplusplus +extern "C" { +#endif +#include +#include +#ifndef __IEnumSTATPROPSTG_FWD_DEFINED__ +#define __IEnumSTATPROPSTG_FWD_DEFINED__ +typedef struct IEnumSTATPROPSTG IEnumSTATPROPSTG; +#endif + +#ifndef __IEnumSTATPROPSETSTG_FWD_DEFINED__ +#define __IEnumSTATPROPSETSTG_FWD_DEFINED__ +typedef struct IEnumSTATPROPSETSTG IEnumSTATPROPSETSTG; +#endif + +#ifndef __IPropertyStorage_FWD_DEFINED__ +#define __IPropertyStorage_FWD_DEFINED__ +typedef struct IPropertyStorage IPropertyStorage; +#endif + +typedef IPropertyStorage *LPPROPERTYSTORAGE; + +#define PROPSETFLAG_DEFAULT (0) + +#define PROPSETFLAG_NONSIMPLE (1) + +#define PROPSETFLAG_ANSI (2) + +#define PROPSETFLAG_UNBUFFERED (4) + +typedef struct tagPROPVARIANT PROPVARIANT; + +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; + BSTR *pElems; +} CABSTR; + +typedef struct tagCABSTRBLOB { + ULONG cElems; + BSTRBLOB *pElems; +} CABSTRBLOB; + +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 { + char cVal; + UCHAR bVal; + short iVal; + USHORT uiVal; + VARIANT_BOOL boolVal; + 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; + IStream *pStream; + IStorage *pStorage; + BSTR bstrVal; + BSTRBLOB bstrblobVal; + 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; + CABSTRBLOB cabstrblob; + CALPSTR calpstr; + CALPWSTR calpwstr; + CAPROPVARIANT capropvar; + } DUMMYUNIONNAME; +}; + +typedef struct tagPROPVARIANT *LPPROPVARIANT; + +#define PRSPEC_INVALID (0xffffffff) + +#define PRSPEC_LPWSTR (0) + +#define PRSPEC_PROPID (1) + +typedef struct tagPROPSPEC { + ULONG ulKind; + union { + PROPID propid; + LPOLESTR lpwstr; + } DUMMYUNIONNAME; +} PROPSPEC; + +typedef struct tagSTATPROPSTG { + LPOLESTR lpwstrName; + PROPID propid; + VARTYPE vt; +} STATPROPSTG; + +typedef struct tagSTATPROPSETSTG { + FMTID fmtid; + CLSID clsid; + DWORD grfFlags; + FILETIME mtime; + FILETIME ctime; + FILETIME atime; + DWORD dwOSVersion; +} STATPROPSETSTG; + +/***************************************************************************** + * IPropertyStorage interface + */ +#ifndef __IPropertyStorage_INTERFACE_DEFINED__ +#define __IPropertyStorage_INTERFACE_DEFINED__ + +DEFINE_GUID(IID_IPropertyStorage, 0x00000138, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46); +#if defined(__cplusplus) && !defined(CINTERFACE) +struct IPropertyStorage : public IUnknown +{ + virtual HRESULT STDMETHODCALLTYPE ReadMultiple( + ULONG cpspec, + const PROPSPEC rgpspec[], + PROPVARIANT rgpropvar[]) = 0; + + virtual HRESULT STDMETHODCALLTYPE WriteMultiple( + ULONG cpspec, + const PROPSPEC rgpspec[], + const PROPVARIANT rgpropvar[], + PROPID propidNameFirst) = 0; + + virtual HRESULT STDMETHODCALLTYPE DeleteMultiple( + ULONG cpspec, + const PROPSPEC rgpspec[]) = 0; + + virtual HRESULT STDMETHODCALLTYPE ReadPropertyNames( + ULONG cpropid, + const PROPID rgpropid[], + LPOLESTR rglpwstrName[]) = 0; + + virtual HRESULT STDMETHODCALLTYPE WritePropertyNames( + ULONG cpropid, + const PROPID rgpropid[], + const LPOLESTR rglpwstrName[]) = 0; + + virtual HRESULT STDMETHODCALLTYPE DeletePropertyNames( + ULONG cpropid, + const PROPID rgpropid[]) = 0; + + virtual HRESULT STDMETHODCALLTYPE Commit( + DWORD grfCommitFlags) = 0; + + virtual HRESULT STDMETHODCALLTYPE Revert( + ) = 0; + + virtual HRESULT STDMETHODCALLTYPE Enum( + IEnumSTATPROPSTG** ppenum) = 0; + + virtual HRESULT STDMETHODCALLTYPE SetTimes( + const FILETIME* pctime, + const FILETIME* patime, + const FILETIME* pmtime) = 0; + + virtual HRESULT STDMETHODCALLTYPE SetClass( + REFCLSID clsid) = 0; + + virtual HRESULT STDMETHODCALLTYPE Stat( + STATPROPSETSTG* statpsstg) = 0; + +}; +#else +typedef struct IPropertyStorageVtbl IPropertyStorageVtbl; +struct IPropertyStorage { + const IPropertyStorageVtbl* lpVtbl; +}; +struct IPropertyStorageVtbl { + BEGIN_INTERFACE + + /*** IUnknown methods ***/ + HRESULT (STDMETHODCALLTYPE *QueryInterface)( + IPropertyStorage* This, + REFIID riid, + void** ppvObject); + + ULONG (STDMETHODCALLTYPE *AddRef)( + IPropertyStorage* This); + + ULONG (STDMETHODCALLTYPE *Release)( + IPropertyStorage* This); + + /*** IPropertyStorage methods ***/ + HRESULT (STDMETHODCALLTYPE *ReadMultiple)( + IPropertyStorage* This, + ULONG cpspec, + const PROPSPEC rgpspec[], + PROPVARIANT rgpropvar[]); + + HRESULT (STDMETHODCALLTYPE *WriteMultiple)( + IPropertyStorage* This, + ULONG cpspec, + const PROPSPEC rgpspec[], + const PROPVARIANT rgpropvar[], + PROPID propidNameFirst); + + HRESULT (STDMETHODCALLTYPE *DeleteMultiple)( + IPropertyStorage* This, + ULONG cpspec, + const PROPSPEC rgpspec[]); + + HRESULT (STDMETHODCALLTYPE *ReadPropertyNames)( + IPropertyStorage* This, + ULONG cpropid, + const PROPID rgpropid[], + LPOLESTR rglpwstrName[]); + + HRESULT (STDMETHODCALLTYPE *WritePropertyNames)( + IPropertyStorage* This, + ULONG cpropid, + const PROPID rgpropid[], + const LPOLESTR rglpwstrName[]); + + HRESULT (STDMETHODCALLTYPE *DeletePropertyNames)( + IPropertyStorage* This, + ULONG cpropid, + const PROPID rgpropid[]); + + HRESULT (STDMETHODCALLTYPE *Commit)( + IPropertyStorage* This, + DWORD grfCommitFlags); + + HRESULT (STDMETHODCALLTYPE *Revert)( + IPropertyStorage* This); + + HRESULT (STDMETHODCALLTYPE *Enum)( + IPropertyStorage* This, + IEnumSTATPROPSTG** ppenum); + + HRESULT (STDMETHODCALLTYPE *SetTimes)( + IPropertyStorage* This, + const FILETIME* pctime, + const FILETIME* patime, + const FILETIME* pmtime); + + HRESULT (STDMETHODCALLTYPE *SetClass)( + IPropertyStorage* This, + REFCLSID clsid); + + HRESULT (STDMETHODCALLTYPE *Stat)( + IPropertyStorage* This, + STATPROPSETSTG* statpsstg); + + END_INTERFACE +}; + +#ifdef COBJMACROS +/*** IUnknown methods ***/ +#define IPropertyStorage_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) +#define IPropertyStorage_AddRef(p) (p)->lpVtbl->AddRef(p) +#define IPropertyStorage_Release(p) (p)->lpVtbl->Release(p) +/*** IPropertyStorage methods ***/ +#define IPropertyStorage_ReadMultiple(p,a,b,c) (p)->lpVtbl->ReadMultiple(p,a,b,c) +#define IPropertyStorage_WriteMultiple(p,a,b,c,d) (p)->lpVtbl->WriteMultiple(p,a,b,c,d) +#define IPropertyStorage_DeleteMultiple(p,a,b) (p)->lpVtbl->DeleteMultiple(p,a,b) +#define IPropertyStorage_ReadPropertyNames(p,a,b,c) (p)->lpVtbl->ReadPropertyNames(p,a,b,c) +#define IPropertyStorage_WritePropertyNames(p,a,b,c) (p)->lpVtbl->WritePropertyNames(p,a,b,c) +#define IPropertyStorage_DeletePropertyNames(p,a,b) (p)->lpVtbl->DeletePropertyNames(p,a,b) +#define IPropertyStorage_Commit(p,a) (p)->lpVtbl->Commit(p,a) +#define IPropertyStorage_Revert(p) (p)->lpVtbl->Revert(p) +#define IPropertyStorage_Enum(p,a) (p)->lpVtbl->Enum(p,a) +#define IPropertyStorage_SetTimes(p,a,b,c) (p)->lpVtbl->SetTimes(p,a,b,c) +#define IPropertyStorage_SetClass(p,a) (p)->lpVtbl->SetClass(p,a) +#define IPropertyStorage_Stat(p,a) (p)->lpVtbl->Stat(p,a) +#endif + +#endif + +#define IPropertyStorage_METHODS \ + /*** IUnknown methods ***/ \ + STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \ + STDMETHOD_(ULONG,AddRef)(THIS) PURE; \ + STDMETHOD_(ULONG,Release)(THIS) PURE; \ + /*** IPropertyStorage methods ***/ \ + STDMETHOD_(HRESULT,ReadMultiple)(THIS_ ULONG cpspec, const PROPSPEC rgpspec[], PROPVARIANT rgpropvar[]) PURE; \ + STDMETHOD_(HRESULT,WriteMultiple)(THIS_ ULONG cpspec, const PROPSPEC rgpspec[], const PROPVARIANT rgpropvar[], PROPID propidNameFirst) PURE; \ + STDMETHOD_(HRESULT,DeleteMultiple)(THIS_ ULONG cpspec, const PROPSPEC rgpspec[]) PURE; \ + STDMETHOD_(HRESULT,ReadPropertyNames)(THIS_ ULONG cpropid, const PROPID rgpropid[], LPOLESTR rglpwstrName[]) PURE; \ + STDMETHOD_(HRESULT,WritePropertyNames)(THIS_ ULONG cpropid, const PROPID rgpropid[], const LPOLESTR rglpwstrName[]) PURE; \ + STDMETHOD_(HRESULT,DeletePropertyNames)(THIS_ ULONG cpropid, const PROPID rgpropid[]) PURE; \ + STDMETHOD_(HRESULT,Commit)(THIS_ DWORD grfCommitFlags) PURE; \ + STDMETHOD_(HRESULT,Revert)(THIS) PURE; \ + STDMETHOD_(HRESULT,Enum)(THIS_ IEnumSTATPROPSTG** ppenum) PURE; \ + STDMETHOD_(HRESULT,SetTimes)(THIS_ const FILETIME* pctime, const FILETIME* patime, const FILETIME* pmtime) PURE; \ + STDMETHOD_(HRESULT,SetClass)(THIS_ REFCLSID clsid) PURE; \ + STDMETHOD_(HRESULT,Stat)(THIS_ STATPROPSETSTG* statpsstg) PURE; + +HRESULT CALLBACK IPropertyStorage_ReadMultiple_Proxy( + IPropertyStorage* This, + ULONG cpspec, + const PROPSPEC rgpspec[], + PROPVARIANT rgpropvar[]); +void __RPC_STUB IPropertyStorage_ReadMultiple_Stub( + struct IRpcStubBuffer* This, + struct IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IPropertyStorage_WriteMultiple_Proxy( + IPropertyStorage* This, + ULONG cpspec, + const PROPSPEC rgpspec[], + const PROPVARIANT rgpropvar[], + PROPID propidNameFirst); +void __RPC_STUB IPropertyStorage_WriteMultiple_Stub( + struct IRpcStubBuffer* This, + struct IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IPropertyStorage_DeleteMultiple_Proxy( + IPropertyStorage* This, + ULONG cpspec, + const PROPSPEC rgpspec[]); +void __RPC_STUB IPropertyStorage_DeleteMultiple_Stub( + struct IRpcStubBuffer* This, + struct IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IPropertyStorage_ReadPropertyNames_Proxy( + IPropertyStorage* This, + ULONG cpropid, + const PROPID rgpropid[], + LPOLESTR rglpwstrName[]); +void __RPC_STUB IPropertyStorage_ReadPropertyNames_Stub( + struct IRpcStubBuffer* This, + struct IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IPropertyStorage_WritePropertyNames_Proxy( + IPropertyStorage* This, + ULONG cpropid, + const PROPID rgpropid[], + const LPOLESTR rglpwstrName[]); +void __RPC_STUB IPropertyStorage_WritePropertyNames_Stub( + struct IRpcStubBuffer* This, + struct IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IPropertyStorage_DeletePropertyNames_Proxy( + IPropertyStorage* This, + ULONG cpropid, + const PROPID rgpropid[]); +void __RPC_STUB IPropertyStorage_DeletePropertyNames_Stub( + struct IRpcStubBuffer* This, + struct IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IPropertyStorage_Commit_Proxy( + IPropertyStorage* This, + DWORD grfCommitFlags); +void __RPC_STUB IPropertyStorage_Commit_Stub( + struct IRpcStubBuffer* This, + struct IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IPropertyStorage_Revert_Proxy( + IPropertyStorage* This); +void __RPC_STUB IPropertyStorage_Revert_Stub( + struct IRpcStubBuffer* This, + struct IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IPropertyStorage_Enum_Proxy( + IPropertyStorage* This, + IEnumSTATPROPSTG** ppenum); +void __RPC_STUB IPropertyStorage_Enum_Stub( + struct IRpcStubBuffer* This, + struct IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IPropertyStorage_SetTimes_Proxy( + IPropertyStorage* This, + const FILETIME* pctime, + const FILETIME* patime, + const FILETIME* pmtime); +void __RPC_STUB IPropertyStorage_SetTimes_Stub( + struct IRpcStubBuffer* This, + struct IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IPropertyStorage_SetClass_Proxy( + IPropertyStorage* This, + REFCLSID clsid); +void __RPC_STUB IPropertyStorage_SetClass_Stub( + struct IRpcStubBuffer* This, + struct IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IPropertyStorage_Stat_Proxy( + IPropertyStorage* This, + STATPROPSETSTG* statpsstg); +void __RPC_STUB IPropertyStorage_Stat_Stub( + struct IRpcStubBuffer* This, + struct IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); + +#endif /* __IPropertyStorage_INTERFACE_DEFINED__ */ + +#ifndef __IPropertySetStorage_FWD_DEFINED__ +#define __IPropertySetStorage_FWD_DEFINED__ +typedef struct IPropertySetStorage IPropertySetStorage; +#endif + +typedef IPropertySetStorage *LPPROPERTYSETSTORAGE; + +/***************************************************************************** + * IPropertySetStorage interface + */ +#ifndef __IPropertySetStorage_INTERFACE_DEFINED__ +#define __IPropertySetStorage_INTERFACE_DEFINED__ + +DEFINE_GUID(IID_IPropertySetStorage, 0x0000013a, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46); +#if defined(__cplusplus) && !defined(CINTERFACE) +struct IPropertySetStorage : public IUnknown +{ + virtual HRESULT STDMETHODCALLTYPE Create( + REFFMTID rfmtid, + const CLSID* pclsid, + DWORD grfFlags, + DWORD grfMode, + IPropertyStorage** ppprstg) = 0; + + virtual HRESULT STDMETHODCALLTYPE Open( + REFFMTID rfmtid, + DWORD grfMode, + IPropertyStorage** ppprstg) = 0; + + virtual HRESULT STDMETHODCALLTYPE Delete( + REFFMTID rfmtid) = 0; + + virtual HRESULT STDMETHODCALLTYPE Enum( + IEnumSTATPROPSETSTG** ppenum) = 0; + +}; +#else +typedef struct IPropertySetStorageVtbl IPropertySetStorageVtbl; +struct IPropertySetStorage { + const IPropertySetStorageVtbl* lpVtbl; +}; +struct IPropertySetStorageVtbl { + BEGIN_INTERFACE + + /*** IUnknown methods ***/ + HRESULT (STDMETHODCALLTYPE *QueryInterface)( + IPropertySetStorage* This, + REFIID riid, + void** ppvObject); + + ULONG (STDMETHODCALLTYPE *AddRef)( + IPropertySetStorage* This); + + ULONG (STDMETHODCALLTYPE *Release)( + IPropertySetStorage* This); + + /*** IPropertySetStorage methods ***/ + HRESULT (STDMETHODCALLTYPE *Create)( + IPropertySetStorage* This, + REFFMTID rfmtid, + const CLSID* pclsid, + DWORD grfFlags, + DWORD grfMode, + IPropertyStorage** ppprstg); + + HRESULT (STDMETHODCALLTYPE *Open)( + IPropertySetStorage* This, + REFFMTID rfmtid, + DWORD grfMode, + IPropertyStorage** ppprstg); + + HRESULT (STDMETHODCALLTYPE *Delete)( + IPropertySetStorage* This, + REFFMTID rfmtid); + + HRESULT (STDMETHODCALLTYPE *Enum)( + IPropertySetStorage* This, + IEnumSTATPROPSETSTG** ppenum); + + END_INTERFACE +}; + +#ifdef COBJMACROS +/*** IUnknown methods ***/ +#define IPropertySetStorage_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) +#define IPropertySetStorage_AddRef(p) (p)->lpVtbl->AddRef(p) +#define IPropertySetStorage_Release(p) (p)->lpVtbl->Release(p) +/*** IPropertySetStorage methods ***/ +#define IPropertySetStorage_Create(p,a,b,c,d,e) (p)->lpVtbl->Create(p,a,b,c,d,e) +#define IPropertySetStorage_Open(p,a,b,c) (p)->lpVtbl->Open(p,a,b,c) +#define IPropertySetStorage_Delete(p,a) (p)->lpVtbl->Delete(p,a) +#define IPropertySetStorage_Enum(p,a) (p)->lpVtbl->Enum(p,a) +#endif + +#endif + +#define IPropertySetStorage_METHODS \ + /*** IUnknown methods ***/ \ + STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \ + STDMETHOD_(ULONG,AddRef)(THIS) PURE; \ + STDMETHOD_(ULONG,Release)(THIS) PURE; \ + /*** IPropertySetStorage methods ***/ \ + STDMETHOD_(HRESULT,Create)(THIS_ REFFMTID rfmtid, const CLSID* pclsid, DWORD grfFlags, DWORD grfMode, IPropertyStorage** ppprstg) PURE; \ + STDMETHOD_(HRESULT,Open)(THIS_ REFFMTID rfmtid, DWORD grfMode, IPropertyStorage** ppprstg) PURE; \ + STDMETHOD_(HRESULT,Delete)(THIS_ REFFMTID rfmtid) PURE; \ + STDMETHOD_(HRESULT,Enum)(THIS_ IEnumSTATPROPSETSTG** ppenum) PURE; + +HRESULT CALLBACK IPropertySetStorage_Create_Proxy( + IPropertySetStorage* This, + REFFMTID rfmtid, + const CLSID* pclsid, + DWORD grfFlags, + DWORD grfMode, + IPropertyStorage** ppprstg); +void __RPC_STUB IPropertySetStorage_Create_Stub( + struct IRpcStubBuffer* This, + struct IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IPropertySetStorage_Open_Proxy( + IPropertySetStorage* This, + REFFMTID rfmtid, + DWORD grfMode, + IPropertyStorage** ppprstg); +void __RPC_STUB IPropertySetStorage_Open_Stub( + struct IRpcStubBuffer* This, + struct IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IPropertySetStorage_Delete_Proxy( + IPropertySetStorage* This, + REFFMTID rfmtid); +void __RPC_STUB IPropertySetStorage_Delete_Stub( + struct IRpcStubBuffer* This, + struct IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IPropertySetStorage_Enum_Proxy( + IPropertySetStorage* This, + IEnumSTATPROPSETSTG** ppenum); +void __RPC_STUB IPropertySetStorage_Enum_Stub( + struct IRpcStubBuffer* This, + struct IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); + +#endif /* __IPropertySetStorage_INTERFACE_DEFINED__ */ + +typedef IEnumSTATPROPSTG *LPENUMSTATPROPSTG; + +/***************************************************************************** + * IEnumSTATPROPSTG interface + */ +#ifndef __IEnumSTATPROPSTG_INTERFACE_DEFINED__ +#define __IEnumSTATPROPSTG_INTERFACE_DEFINED__ + +DEFINE_GUID(IID_IEnumSTATPROPSTG, 0x00000139, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46); +#if defined(__cplusplus) && !defined(CINTERFACE) +struct IEnumSTATPROPSTG : public IUnknown +{ + virtual HRESULT STDMETHODCALLTYPE Next( + ULONG celt, + STATPROPSTG* rgelt, + ULONG* pceltFetched) = 0; + + virtual HRESULT STDMETHODCALLTYPE Skip( + ULONG celt) = 0; + + virtual HRESULT STDMETHODCALLTYPE Reset( + ) = 0; + + virtual HRESULT STDMETHODCALLTYPE Clone( + IEnumSTATPROPSTG** ppenum) = 0; + +}; +#else +typedef struct IEnumSTATPROPSTGVtbl IEnumSTATPROPSTGVtbl; +struct IEnumSTATPROPSTG { + const IEnumSTATPROPSTGVtbl* lpVtbl; +}; +struct IEnumSTATPROPSTGVtbl { + BEGIN_INTERFACE + + /*** IUnknown methods ***/ + HRESULT (STDMETHODCALLTYPE *QueryInterface)( + IEnumSTATPROPSTG* This, + REFIID riid, + void** ppvObject); + + ULONG (STDMETHODCALLTYPE *AddRef)( + IEnumSTATPROPSTG* This); + + ULONG (STDMETHODCALLTYPE *Release)( + IEnumSTATPROPSTG* This); + + /*** IEnumSTATPROPSTG methods ***/ + HRESULT (STDMETHODCALLTYPE *Next)( + IEnumSTATPROPSTG* This, + ULONG celt, + STATPROPSTG* rgelt, + ULONG* pceltFetched); + + HRESULT (STDMETHODCALLTYPE *Skip)( + IEnumSTATPROPSTG* This, + ULONG celt); + + HRESULT (STDMETHODCALLTYPE *Reset)( + IEnumSTATPROPSTG* This); + + HRESULT (STDMETHODCALLTYPE *Clone)( + IEnumSTATPROPSTG* This, + IEnumSTATPROPSTG** ppenum); + + END_INTERFACE +}; + +#ifdef COBJMACROS +/*** IUnknown methods ***/ +#define IEnumSTATPROPSTG_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) +#define IEnumSTATPROPSTG_AddRef(p) (p)->lpVtbl->AddRef(p) +#define IEnumSTATPROPSTG_Release(p) (p)->lpVtbl->Release(p) +/*** IEnumSTATPROPSTG methods ***/ +#define IEnumSTATPROPSTG_Next(p,a,b,c) (p)->lpVtbl->Next(p,a,b,c) +#define IEnumSTATPROPSTG_Skip(p,a) (p)->lpVtbl->Skip(p,a) +#define IEnumSTATPROPSTG_Reset(p) (p)->lpVtbl->Reset(p) +#define IEnumSTATPROPSTG_Clone(p,a) (p)->lpVtbl->Clone(p,a) +#endif + +#endif + +#define IEnumSTATPROPSTG_METHODS \ + /*** IUnknown methods ***/ \ + STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \ + STDMETHOD_(ULONG,AddRef)(THIS) PURE; \ + STDMETHOD_(ULONG,Release)(THIS) PURE; \ + /*** IEnumSTATPROPSTG methods ***/ \ + STDMETHOD_(HRESULT,Next)(THIS_ ULONG celt, STATPROPSTG* rgelt, ULONG* pceltFetched) PURE; \ + STDMETHOD_(HRESULT,Skip)(THIS_ ULONG celt) PURE; \ + STDMETHOD_(HRESULT,Reset)(THIS) PURE; \ + STDMETHOD_(HRESULT,Clone)(THIS_ IEnumSTATPROPSTG** ppenum) PURE; + +HRESULT CALLBACK IEnumSTATPROPSTG_RemoteNext_Proxy( + IEnumSTATPROPSTG* This, + ULONG celt, + STATPROPSTG* rgelt, + ULONG* pceltFetched); +void __RPC_STUB IEnumSTATPROPSTG_RemoteNext_Stub( + struct IRpcStubBuffer* This, + struct IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IEnumSTATPROPSTG_Next_Proxy( + IEnumSTATPROPSTG* This, + ULONG celt, + STATPROPSTG* rgelt, + ULONG* pceltFetched); +HRESULT __RPC_STUB IEnumSTATPROPSTG_Next_Stub( + IEnumSTATPROPSTG* This, + ULONG celt, + STATPROPSTG* rgelt, + ULONG* pceltFetched); +HRESULT CALLBACK IEnumSTATPROPSTG_Skip_Proxy( + IEnumSTATPROPSTG* This, + ULONG celt); +void __RPC_STUB IEnumSTATPROPSTG_Skip_Stub( + struct IRpcStubBuffer* This, + struct IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IEnumSTATPROPSTG_Reset_Proxy( + IEnumSTATPROPSTG* This); +void __RPC_STUB IEnumSTATPROPSTG_Reset_Stub( + struct IRpcStubBuffer* This, + struct IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IEnumSTATPROPSTG_Clone_Proxy( + IEnumSTATPROPSTG* This, + IEnumSTATPROPSTG** ppenum); +void __RPC_STUB IEnumSTATPROPSTG_Clone_Stub( + struct IRpcStubBuffer* This, + struct IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); + +#endif /* __IEnumSTATPROPSTG_INTERFACE_DEFINED__ */ + +typedef IEnumSTATPROPSETSTG *LPENUMSTATPROPSETSTG; + +/***************************************************************************** + * IEnumSTATPROPSETSTG interface + */ +#ifndef __IEnumSTATPROPSETSTG_INTERFACE_DEFINED__ +#define __IEnumSTATPROPSETSTG_INTERFACE_DEFINED__ + +DEFINE_GUID(IID_IEnumSTATPROPSETSTG, 0x0000013b, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46); +#if defined(__cplusplus) && !defined(CINTERFACE) +struct IEnumSTATPROPSETSTG : public IUnknown +{ + virtual HRESULT STDMETHODCALLTYPE Next( + ULONG celt, + STATPROPSETSTG* rgelt, + ULONG* pceltFetched) = 0; + + virtual HRESULT STDMETHODCALLTYPE Skip( + ULONG celt) = 0; + + virtual HRESULT STDMETHODCALLTYPE Reset( + ) = 0; + + virtual HRESULT STDMETHODCALLTYPE Clone( + IEnumSTATPROPSETSTG** ppenum) = 0; + +}; +#else +typedef struct IEnumSTATPROPSETSTGVtbl IEnumSTATPROPSETSTGVtbl; +struct IEnumSTATPROPSETSTG { + const IEnumSTATPROPSETSTGVtbl* lpVtbl; +}; +struct IEnumSTATPROPSETSTGVtbl { + BEGIN_INTERFACE + + /*** IUnknown methods ***/ + HRESULT (STDMETHODCALLTYPE *QueryInterface)( + IEnumSTATPROPSETSTG* This, + REFIID riid, + void** ppvObject); + + ULONG (STDMETHODCALLTYPE *AddRef)( + IEnumSTATPROPSETSTG* This); + + ULONG (STDMETHODCALLTYPE *Release)( + IEnumSTATPROPSETSTG* This); + + /*** IEnumSTATPROPSETSTG methods ***/ + HRESULT (STDMETHODCALLTYPE *Next)( + IEnumSTATPROPSETSTG* This, + ULONG celt, + STATPROPSETSTG* rgelt, + ULONG* pceltFetched); + + HRESULT (STDMETHODCALLTYPE *Skip)( + IEnumSTATPROPSETSTG* This, + ULONG celt); + + HRESULT (STDMETHODCALLTYPE *Reset)( + IEnumSTATPROPSETSTG* This); + + HRESULT (STDMETHODCALLTYPE *Clone)( + IEnumSTATPROPSETSTG* This, + IEnumSTATPROPSETSTG** ppenum); + + END_INTERFACE +}; + +#ifdef COBJMACROS +/*** IUnknown methods ***/ +#define IEnumSTATPROPSETSTG_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) +#define IEnumSTATPROPSETSTG_AddRef(p) (p)->lpVtbl->AddRef(p) +#define IEnumSTATPROPSETSTG_Release(p) (p)->lpVtbl->Release(p) +/*** IEnumSTATPROPSETSTG methods ***/ +#define IEnumSTATPROPSETSTG_Next(p,a,b,c) (p)->lpVtbl->Next(p,a,b,c) +#define IEnumSTATPROPSETSTG_Skip(p,a) (p)->lpVtbl->Skip(p,a) +#define IEnumSTATPROPSETSTG_Reset(p) (p)->lpVtbl->Reset(p) +#define IEnumSTATPROPSETSTG_Clone(p,a) (p)->lpVtbl->Clone(p,a) +#endif + +#endif + +#define IEnumSTATPROPSETSTG_METHODS \ + /*** IUnknown methods ***/ \ + STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \ + STDMETHOD_(ULONG,AddRef)(THIS) PURE; \ + STDMETHOD_(ULONG,Release)(THIS) PURE; \ + /*** IEnumSTATPROPSETSTG methods ***/ \ + STDMETHOD_(HRESULT,Next)(THIS_ ULONG celt, STATPROPSETSTG* rgelt, ULONG* pceltFetched) PURE; \ + STDMETHOD_(HRESULT,Skip)(THIS_ ULONG celt) PURE; \ + STDMETHOD_(HRESULT,Reset)(THIS) PURE; \ + STDMETHOD_(HRESULT,Clone)(THIS_ IEnumSTATPROPSETSTG** ppenum) PURE; + +HRESULT CALLBACK IEnumSTATPROPSETSTG_RemoteNext_Proxy( + IEnumSTATPROPSETSTG* This, + ULONG celt, + STATPROPSETSTG* rgelt, + ULONG* pceltFetched); +void __RPC_STUB IEnumSTATPROPSETSTG_RemoteNext_Stub( + struct IRpcStubBuffer* This, + struct IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IEnumSTATPROPSETSTG_Next_Proxy( + IEnumSTATPROPSETSTG* This, + ULONG celt, + STATPROPSETSTG* rgelt, + ULONG* pceltFetched); +HRESULT __RPC_STUB IEnumSTATPROPSETSTG_Next_Stub( + IEnumSTATPROPSETSTG* This, + ULONG celt, + STATPROPSETSTG* rgelt, + ULONG* pceltFetched); +HRESULT CALLBACK IEnumSTATPROPSETSTG_Skip_Proxy( + IEnumSTATPROPSETSTG* This, + ULONG celt); +void __RPC_STUB IEnumSTATPROPSETSTG_Skip_Stub( + struct IRpcStubBuffer* This, + struct IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IEnumSTATPROPSETSTG_Reset_Proxy( + IEnumSTATPROPSETSTG* This); +void __RPC_STUB IEnumSTATPROPSETSTG_Reset_Stub( + struct IRpcStubBuffer* This, + struct IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IEnumSTATPROPSETSTG_Clone_Proxy( + IEnumSTATPROPSETSTG* This, + IEnumSTATPROPSETSTG** ppenum); +void __RPC_STUB IEnumSTATPROPSETSTG_Clone_Stub( + struct IRpcStubBuffer* This, + struct IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); + +#endif /* __IEnumSTATPROPSETSTG_INTERFACE_DEFINED__ */ + +HRESULT WINAPI FreePropVariantArray(ULONG,PROPVARIANT*); +HRESULT WINAPI PropVariantClear(PROPVARIANT*); +HRESULT WINAPI PropVariantCopy(PROPVARIANT*,const PROPVARIANT*); +#ifdef __cplusplus +} +#endif +#endif /* __WIDL_PROPIDL_H */ diff --git a/include/propidl.idl b/include/propidl.idl new file mode 100644 index 00000000000..1e7dc4718f1 --- /dev/null +++ b/include/propidl.idl @@ -0,0 +1,311 @@ +/* + * Copyright 2002 Ove Kaaven + * Copyright 2004 Francois Gouget + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +import "objidl.idl"; +import "oaidl.idl"; + + +/******************** Property Storage ********************/ + +interface IEnumSTATPROPSTG; +interface IEnumSTATPROPSETSTG; + +[ + object, + uuid(00000138-0000-0000-C000-000000000046), + pointer_default(unique) +] +interface IPropertyStorage : IUnknown +{ + typedef [unique] IPropertyStorage *LPPROPERTYSTORAGE; + + const DWORD PROPSETFLAG_DEFAULT = 0; + const DWORD PROPSETFLAG_NONSIMPLE = 1; + const DWORD PROPSETFLAG_ANSI = 2; + const DWORD PROPSETFLAG_UNBUFFERED = 4; + + typedef struct tagPROPVARIANT PROPVARIANT; + + #define TYPEDEF_CA(type, name) \ + typedef struct tag##name { \ + ULONG cElems; \ + [size_is(cElems)] \ + type *pElems; \ + } name + + TYPEDEF_CA(unsigned char, CAUB); + TYPEDEF_CA(short, CAI); + TYPEDEF_CA(USHORT, CAUI); + TYPEDEF_CA(long, CAL); + TYPEDEF_CA(ULONG, CAUL); + TYPEDEF_CA(float, CAFLT); + TYPEDEF_CA(double, CADBL); + TYPEDEF_CA(CY, CACY); + TYPEDEF_CA(DATE, CADATE); + TYPEDEF_CA(BSTR, CABSTR); + TYPEDEF_CA(BSTRBLOB, CABSTRBLOB); + TYPEDEF_CA(VARIANT_BOOL, CABOOL); + TYPEDEF_CA(SCODE, CASCODE); + TYPEDEF_CA(PROPVARIANT, CAPROPVARIANT); + TYPEDEF_CA(LARGE_INTEGER, CAH); + TYPEDEF_CA(ULARGE_INTEGER, CAUH); + TYPEDEF_CA(LPSTR, CALPSTR); + TYPEDEF_CA(LPWSTR, CALPWSTR); + TYPEDEF_CA(FILETIME, CAFILETIME); + TYPEDEF_CA(CLIPDATA, CACLIPDATA); + TYPEDEF_CA(CLSID, CACLSID); + + struct tagPROPVARIANT { + VARTYPE vt; + WORD wReserved1; + WORD wReserved2; + WORD wReserved3; + [switch_is(vt & 0x1fff)] union { + [case(VT_EMPTY, VT_NULL)] ; + [case(VT_I1)] char cVal; + [case(VT_UI1)] UCHAR bVal; + [case(VT_I2)] short iVal; + [case(VT_UI2)] USHORT uiVal; + [case(VT_BOOL)] VARIANT_BOOL boolVal; +#if 0 /* illegal in C++ */ + [case(VT_ILLEGAL)] _VARIANT_BOOL bool; +#endif + [case(VT_I4)] long lVal; + [case(VT_UI4)] ULONG ulVal; + [case(VT_R4)] float fltVal; + [case(VT_ERROR)] SCODE scode; + [case(VT_I8)] LARGE_INTEGER hVal; + [case(VT_UI8)] ULARGE_INTEGER uhVal; + [case(VT_R8)] double dblVal; + [case(VT_CY)] CY cyVal; + [case(VT_DATE)] DATE date; + [case(VT_FILETIME)] FILETIME filetime; + [case(VT_CLSID)] CLSID *puuid; + [case(VT_BLOB, VT_BLOB_OBJECT)] BLOB blob; + [case(VT_CF)] CLIPDATA *pclipdata; + [case(VT_STREAM, VT_STREAMED_OBJECT)] IStream *pStream; + [case(VT_STORAGE, VT_STORED_OBJECT)] IStorage *pStorage; + [case(VT_BSTR)] BSTR bstrVal; + [case(VT_BSTR_BLOB)] BSTRBLOB bstrblobVal; + [case(VT_LPSTR)] LPSTR pszVal; + [case(VT_LPWSTR)] LPWSTR pwszVal; + [case(VT_UI1|VT_VECTOR)] CAUB caub; + [case(VT_I2|VT_VECTOR)] CAI cai; + [case(VT_UI2|VT_VECTOR)] CAUI caui; + [case(VT_BOOL|VT_VECTOR)] CABOOL cabool; + [case(VT_I4|VT_VECTOR)] CAL cal; + [case(VT_UI4|VT_VECTOR)] CAUL caul; + [case(VT_R4|VT_VECTOR)] CAFLT caflt; + [case(VT_ERROR|VT_VECTOR)] CASCODE cascode; + [case(VT_I8|VT_VECTOR)] CAH cah; + [case(VT_UI8|VT_VECTOR)] CAUH cauh; + [case(VT_R8|VT_VECTOR)] CADBL cadbl; + [case(VT_CY|VT_VECTOR)] CACY cacy; + [case(VT_DATE|VT_VECTOR)] CADATE cadate; + [case(VT_FILETIME|VT_VECTOR)] CAFILETIME cafiletime; + [case(VT_CLSID|VT_VECTOR)] CACLSID cauuid; + [case(VT_CF|VT_VECTOR)] CACLIPDATA caclipdata; + [case(VT_BSTR|VT_VECTOR)] CABSTR cabstr; + [case(VT_BSTR_BLOB|VT_VECTOR)] CABSTRBLOB cabstrblob; + [case(VT_LPSTR|VT_VECTOR)] CALPSTR calpstr; + [case(VT_LPWSTR|VT_VECTOR)] CALPWSTR calpwstr; + [case(VT_VARIANT|VT_VECTOR)] CAPROPVARIANT capropvar; + }; + }; + + typedef struct tagPROPVARIANT *LPPROPVARIANT; + + /* FIXME: bunches of property IDs */ + + const ULONG PRSPEC_INVALID = 0xffffffff; + const ULONG PRSPEC_LPWSTR = 0; + const ULONG PRSPEC_PROPID = 1; + + typedef struct tagPROPSPEC { + ULONG ulKind; + [switch_is(ulKind)] union { + [case(PRSPEC_PROPID)] PROPID propid; + [case(PRSPEC_LPWSTR)] LPOLESTR lpwstr; + [default] ; + }; + } PROPSPEC; + + typedef struct tagSTATPROPSTG { + LPOLESTR lpwstrName; + PROPID propid; + VARTYPE vt; + } STATPROPSTG; + + /* FIXME: macros */ + + typedef struct tagSTATPROPSETSTG { + FMTID fmtid; + CLSID clsid; + DWORD grfFlags; + FILETIME mtime; + FILETIME ctime; + FILETIME atime; + DWORD dwOSVersion; + } STATPROPSETSTG; + + HRESULT ReadMultiple( + [in] ULONG cpspec, + [in, size_is(cpspec)] const PROPSPEC rgpspec[], + [out, size_is(cpspec)] PROPVARIANT rgpropvar[]); + + HRESULT WriteMultiple( + [in] ULONG cpspec, + [in, size_is(cpspec)] const PROPSPEC rgpspec[], + [in, size_is(cpspec)] const PROPVARIANT rgpropvar[], + [in] PROPID propidNameFirst); + + HRESULT DeleteMultiple( + [in] ULONG cpspec, + [in, size_is(cpspec)] const PROPSPEC rgpspec[]); + + HRESULT ReadPropertyNames( + [in] ULONG cpropid, + [in, size_is(cpropid)] const PROPID rgpropid[], + [out, size_is(cpropid)] LPOLESTR rglpwstrName[]); + + HRESULT WritePropertyNames( + [in] ULONG cpropid, + [in, size_is(cpropid)] const PROPID rgpropid[], + [in, size_is(cpropid)] const LPOLESTR rglpwstrName[]); + + HRESULT DeletePropertyNames( + [in] ULONG cpropid, + [in, size_is(cpropid)] const PROPID rgpropid[]); + + HRESULT Commit( + [in] DWORD grfCommitFlags); + + HRESULT Revert(); + + HRESULT Enum( + [out] IEnumSTATPROPSTG **ppenum); + + HRESULT SetTimes( + [in] const FILETIME *pctime, + [in] const FILETIME *patime, + [in] const FILETIME *pmtime); + + HRESULT SetClass( + [in] REFCLSID clsid); + + HRESULT Stat( + [out] STATPROPSETSTG *statpsstg); +} + +[ + object, + uuid(0000013A-0000-0000-C000-000000000046), + pointer_default(unique) +] +interface IPropertySetStorage : IUnknown +{ + typedef [unique] IPropertySetStorage *LPPROPERTYSETSTORAGE; + + HRESULT Create( + [in] REFFMTID rfmtid, + [in, unique] const CLSID *pclsid, + [in] DWORD grfFlags, + [in] DWORD grfMode, + [out] IPropertyStorage **ppprstg); + + HRESULT Open( + [in] REFFMTID rfmtid, + [in] DWORD grfMode, + [out] IPropertyStorage **ppprstg); + + HRESULT Delete( + [in] REFFMTID rfmtid); + + HRESULT Enum( + [out] IEnumSTATPROPSETSTG **ppenum); +} + +[ + object, + uuid(00000139-0000-0000-C000-000000000046), + pointer_default(unique) +] +interface IEnumSTATPROPSTG : IUnknown +{ + typedef [unique] IEnumSTATPROPSTG *LPENUMSTATPROPSTG; + + [local] + HRESULT Next( + [in] ULONG celt, + [out, size_is(celt), length_is(*pceltFetched)] + STATPROPSTG *rgelt, + [out] ULONG *pceltFetched); + + [call_as(Next)] + HRESULT RemoteNext( + [in] ULONG celt, + [out, size_is(celt), length_is(*pceltFetched)] + STATPROPSTG *rgelt, + [out] ULONG *pceltFetched); + + HRESULT Skip( + [in] ULONG celt); + + HRESULT Reset(); + + HRESULT Clone( + [out] IEnumSTATPROPSTG **ppenum); +} + +[ + object, + uuid(0000013B-0000-0000-C000-000000000046), + pointer_default(unique) +] +interface IEnumSTATPROPSETSTG : IUnknown +{ + typedef [unique] IEnumSTATPROPSETSTG *LPENUMSTATPROPSETSTG; + + [local] + HRESULT Next( + [in] ULONG celt, + [out, size_is(celt), length_is(*pceltFetched)] + STATPROPSETSTG *rgelt, + [out] ULONG *pceltFetched); + + [call_as(Next)] + HRESULT RemoteNext( + [in] ULONG celt, + [out, size_is(celt), length_is(*pceltFetched)] + STATPROPSETSTG *rgelt, + [out] ULONG *pceltFetched); + + HRESULT Skip( + [in] ULONG celt); + + HRESULT Reset(); + + HRESULT Clone( + [out] IEnumSTATPROPSETSTG **ppenum); +} + + +cpp_quote("HRESULT WINAPI FreePropVariantArray(ULONG,PROPVARIANT*);"); +cpp_quote("HRESULT WINAPI PropVariantClear(PROPVARIANT*);"); +cpp_quote("HRESULT WINAPI PropVariantCopy(PROPVARIANT*,const PROPVARIANT*);"); diff --git a/include/shobjidl.h b/include/shobjidl.h index d959e6e7a67..4266ef11871 100644 --- a/include/shobjidl.h +++ b/include/shobjidl.h @@ -13,6 +13,7 @@ extern "C" { #include #include #include +#include #ifndef __IPersistFolder_FWD_DEFINED__ #define __IPersistFolder_FWD_DEFINED__ typedef struct IPersistFolder IPersistFolder; diff --git a/include/shobjidl.idl b/include/shobjidl.idl index 52ccc16ba77..34e670c5979 100644 --- a/include/shobjidl.idl +++ b/include/shobjidl.idl @@ -25,7 +25,7 @@ import "oaidl.idl"; import "shtypes.idl"; import "servprov.idl"; import "comcat.idl"; -/*import "propidl.idl";*/ +import "propidl.idl"; /*import "prsht.idl";*/ /*import "msxml.idl";*/ -- 2.11.4.GIT