Add include/propidl.idl

Francois Gouget fgouget at free.fr
Wed Sep 8 19:57:26 CDT 2004


This patch moves the PROPVARIANT declaration from objidl.idl to
propidl.idl which is where it belongs. It also moves related API
declarations from individual C files to propidl.idl.

Finally it includes propidl.h in objbase.h and shobjidl.h. This means
there's no reason to explicitly include propidl.h in the propvariant.c
test (and indeed it compiles as is on Windows).

This caused a conflict in olecli16.c and olecli_main.c because these
files also define an LPOLEOBJECT type. I don't know what this type is,
whether it should have some other name, etc. So I simply prepended an
underscore to avoid the conflict. Since it's a private type it does not
matter much anyway.

objbase.h should also include urlmon.h but that causes way too much
trouble because widl-generated headers don't include windows.h like they
do on Windows. This causes compile errors when we end up including
oleidl.h before LPMSG has been defined. So I just added it in a comment
with a fixme.

After applying the patch, add include/propidl.h and include/propidl.idl
to CVS.


Changelog:

 * dlls/ole32/ole2.c
   dlls/ole32/tests/propvariant.c
   dlls/olecli/olecli16.c
   dlls/olecli/olecli_main.c
   include/Makefile.in
   include/objbase.h
   include/objidl.h
   include/objidl.idl
   include/shobjidl.h
   include/shobjidl.idl
   include/propidl.idl
   include/propidl.h

   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.


-- 
Francois Gouget         fgouget at free.fr        http://fgouget.free.fr/
The nice thing about meditation is that it makes doing nothing quite respectable
                                  -- Paul Dean
-------------- next part --------------
Index: dlls/ole32/ole2.c
===================================================================
RCS file: /var/cvs/wine/dlls/ole32/ole2.c,v
retrieving revision 1.54
diff -u -r1.54 ole2.c
--- dlls/ole32/ole2.c	6 Sep 2004 21:28:28 -0000	1.54
+++ dlls/ole32/ole2.c	8 Sep 2004 12:47:11 -0000
@@ -2326,8 +2326,6 @@
             CoTaskMemFree(pClipDataArray[i].pClipData);
 }
 
-HRESULT WINAPI FreePropVariantArray(ULONG,PROPVARIANT*);
-
 /******************************************************************************
  * Check if a PROPVARIANT's type is valid.
  */
Index: dlls/ole32/tests/propvariant.c
===================================================================
RCS file: /var/cvs/wine/dlls/ole32/tests/propvariant.c,v
retrieving revision 1.3
diff -u -r1.3 propvariant.c
--- dlls/ole32/tests/propvariant.c	8 Sep 2004 19:05:55 -0000	1.3
+++ dlls/ole32/tests/propvariant.c	8 Sep 2004 21:41:06 -0000
@@ -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"
 
Index: dlls/olecli/olecli16.c
===================================================================
RCS file: /var/cvs/wine/dlls/olecli/olecli16.c,v
retrieving revision 1.3
diff -u -r1.3 olecli16.c
--- dlls/olecli/olecli16.c	23 Jan 2004 22:51:42 -0000	1.3
+++ dlls/olecli/olecli16.c	8 Sep 2004 14:07:35 -0000
@@ -137,7 +137,7 @@
 } 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 @@
 
 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 @@
 /******************************************************************************
  *		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;
 }
Index: dlls/olecli/olecli_main.c
===================================================================
RCS file: /var/cvs/wine/dlls/olecli/olecli_main.c,v
retrieving revision 1.17
diff -u -r1.17 olecli_main.c
--- dlls/olecli/olecli_main.c	23 Jan 2004 22:51:42 -0000	1.17
+++ dlls/olecli/olecli_main.c	8 Sep 2004 13:48:59 -0000
@@ -137,7 +137,7 @@
 } 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 @@
 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 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 @@
 /******************************************************************************
  *		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 @@
 /******************************************************************************
  *		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 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);
Index: include/Makefile.in
===================================================================
RCS file: /var/cvs/wine/include/Makefile.in,v
retrieving revision 1.139
diff -u -r1.139 Makefile.in
--- include/Makefile.in	7 Sep 2004 20:47:03 -0000	1.139
+++ include/Makefile.in	8 Sep 2004 12:01:34 -0000
@@ -20,6 +20,7 @@
 	objidl.idl \
 	ocidl.idl \
 	oleidl.idl \
+	propidl.idl \
 	pstore.idl \
 	servprov.idl \
 	shldisp.idl \
Index: include/objbase.h
===================================================================
RCS file: /var/cvs/wine/include/objbase.h,v
retrieving revision 1.46
diff -u -r1.46 objbase.h
--- include/objbase.h	23 Aug 2004 19:39:48 -0000	1.46
+++ include/objbase.h	8 Sep 2004 14:54:24 -0000
@@ -487,6 +487,8 @@
 }
 #endif
 
+/* FIXME: #include <urlmon.h> */
+#include <propidl.h>
 
 #ifndef __WINESRC__
 
Index: include/objidl.h
===================================================================
RCS file: /var/cvs/wine/include/objidl.h,v
retrieving revision 1.24
diff -u -r1.24 objidl.h
--- include/objidl.h	23 Aug 2004 18:10:02 -0000	1.24
+++ include/objidl.h	8 Sep 2004 13:02:42 -0000
@@ -7669,952 +7669,12 @@
 
 #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;
Index: include/objidl.idl
===================================================================
RCS file: /var/cvs/wine/include/objidl.idl,v
retrieving revision 1.7
diff -u -r1.7 objidl.idl
--- include/objidl.idl	10 May 2004 19:55:00 -0000	1.7
+++ include/objidl.idl	8 Sep 2004 13:02:01 -0000
@@ -1810,293 +1810,10 @@
     [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 */
Index: include/shobjidl.h
===================================================================
RCS file: /var/cvs/wine/include/shobjidl.h,v
retrieving revision 1.6
diff -u -r1.6 shobjidl.h
--- include/shobjidl.h	23 Aug 2004 18:10:02 -0000	1.6
+++ include/shobjidl.h	8 Sep 2004 14:06:06 -0000
@@ -13,6 +13,7 @@
 #include <shtypes.h>
 #include <servprov.h>
 #include <comcat.h>
+#include <propidl.h>
 #ifndef __IPersistFolder_FWD_DEFINED__
 #define __IPersistFolder_FWD_DEFINED__
 typedef struct IPersistFolder IPersistFolder;
Index: include/shobjidl.idl
===================================================================
RCS file: /var/cvs/wine/include/shobjidl.idl,v
retrieving revision 1.3
diff -u -r1.3 shobjidl.idl
--- include/shobjidl.idl	6 Jan 2004 21:38:55 -0000	1.3
+++ include/shobjidl.idl	8 Sep 2004 12:30:53 -0000
@@ -25,7 +25,7 @@
 import "shtypes.idl";
 import "servprov.idl";
 import "comcat.idl";
-/*import "propidl.idl";*/
+import "propidl.idl";
 /*import "prsht.idl";*/
 /*import "msxml.idl";*/
 
--- /dev/null	2004-08-10 11:44:31.000000000 +0200
+++ include/propidl.idl	2004-09-08 14:51:11.000000000 +0200
@@ -0,0 +1,310 @@
+/*
+ * 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";
+
+
+/******************** 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*);");
--- /dev/null	2004-08-10 11:44:31.000000000 +0200
+++ include/propidl.h	2004-09-08 15:02:42.000000000 +0200
@@ -0,0 +1,957 @@
+/*** Autogenerated by WIDL 0.1 from propidl.idl - Do not edit ***/
+#include <rpc.h>
+#include <rpcndr.h>
+
+#ifndef __WIDL_PROPIDL_H
+#define __WIDL_PROPIDL_H
+#ifdef __cplusplus
+extern "C" {
+#endif
+#include <objidl.h>
+#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 */


More information about the wine-patches mailing list