Sync to Wine-20050830:
Francois Gouget <fgouget(a)free.fr>
- Use LPSTORAGE to better match the PSDK.
Document the real SEGPTR type using the standard documentation
mechanisms. Fixes winapi_check warnings.
Robert Shearman <rob(a)codeweavers.com>
- Remove unused thread handle entry from the apartment structure.
- Implement IMarshal on proxies so that we don't end up with proxies
to proxies, causing potential deadlock issues and performance
problems.
- Add a test for this situation and remove the todo_wine from another
test that now succeeds.
- Add stub for CoAllowSetForegroundWindow.
Vincent Beron <vberon(a)mecano.gme.usherb.ca>
- Remove local declarations already in included public headers.
- Correct mismatches between spec files and comments about export
number.
Alexandre Julliard <julliard(a)winehq.org>
- Uncomment the typedef in the DECLARE_INTERFACE macro, and get rid of
duplicate typedefs.
- Use the proper WOW functions everywhere instead of the K32WOW variant.
- Don't prefix the functions DllCanUnloadNow, DllGetClassObject and
Dll(Un)RegisterServer with the dll name so that the compiler can check
the prototypes.
- Remove duplicate definition of FILE_BEGIN.
- Replace the _ICOM_THIS_From macros by inline functions the way it's
already done in shelllink.c.
Mike McCormack <mike(a)codeweavers.com>
- Warning fixes for gcc 4.0.
- Fix some gcc 4.0 warnings.
- return a precomputed result for a NULL string
- pass strlen an LPSTR to eliminate a sign warning
Marcus Meissner <marcus(a)jet.franken.de>
- Implemented ILockBytes16 (memorystream) support for the 16bit compound
storage implementation.
- Added ReadClassStg, OleDoAutoConvert, GetConvertStg
implementations/stubs.
Marcus Meissner <meissner(a)suse.de>
- Added CoCreateInstance16, CoGetClassObject16, OleLoad16 stubs.
Modified: trunk/reactos/lib/ole32/antimoniker.c
Modified: trunk/reactos/lib/ole32/compobj.c
Modified: trunk/reactos/lib/ole32/compobj.spec
Modified: trunk/reactos/lib/ole32/compobj_private.h
Modified: trunk/reactos/lib/ole32/compositemoniker.c
Modified: trunk/reactos/lib/ole32/datacache.c
Modified: trunk/reactos/lib/ole32/defaulthandler.c
Modified: trunk/reactos/lib/ole32/errorinfo.c
Modified: trunk/reactos/lib/ole32/filemoniker.c
Modified: trunk/reactos/lib/ole32/ftmarshal.c
Modified: trunk/reactos/lib/ole32/ifs.h
Modified: trunk/reactos/lib/ole32/itemmoniker.c
Modified: trunk/reactos/lib/ole32/marshal.c
Modified: trunk/reactos/lib/ole32/moniker.c
Modified: trunk/reactos/lib/ole32/moniker.h
Modified: trunk/reactos/lib/ole32/ole16.c
Modified: trunk/reactos/lib/ole32/ole2.c
Modified: trunk/reactos/lib/ole32/ole2.spec
Modified: trunk/reactos/lib/ole32/ole2_16.c
Modified: trunk/reactos/lib/ole32/ole32.spec
Modified: trunk/reactos/lib/ole32/oleproxy.c
Modified: trunk/reactos/lib/ole32/stg_prop.c
Modified: trunk/reactos/lib/ole32/storage.c
Modified: trunk/reactos/lib/ole32/storage.spec
Modified: trunk/reactos/lib/ole32/storage32.c
_____
Modified: trunk/reactos/lib/ole32/antimoniker.c
--- trunk/reactos/lib/ole32/antimoniker.c 2005-09-05 21:47:21 UTC
(rev 17677)
+++ trunk/reactos/lib/ole32/antimoniker.c 2005-09-05 21:56:14 UTC
(rev 17678)
@@ -53,7 +53,12 @@
} AntiMonikerImpl;
+static inline IMoniker *impl_from_IROTData( IROTData *iface )
+{
+ return (IMoniker *)((char*)iface - FIELD_OFFSET(AntiMonikerImpl,
lpvtbl2));
+}
+
/***********************************************************************
********
* AntiMoniker_QueryInterface
************************************************************************
*******/
@@ -485,7 +490,7 @@
static HRESULT WINAPI
AntiMonikerROTDataImpl_QueryInterface(IROTData *iface,REFIID
riid,VOID** ppvObject)
{
- ICOM_THIS_From_IROTData(IMoniker, iface);
+ IMoniker *This = impl_from_IROTData(iface);
TRACE("(%p,%p,%p)\n",iface,riid,ppvObject);
@@ -497,7 +502,7 @@
*/
static ULONG WINAPI AntiMonikerROTDataImpl_AddRef(IROTData *iface)
{
- ICOM_THIS_From_IROTData(IMoniker, iface);
+ IMoniker *This = impl_from_IROTData(iface);
TRACE("(%p)\n",iface);
@@ -509,7 +514,7 @@
*/
static ULONG WINAPI AntiMonikerROTDataImpl_Release(IROTData* iface)
{
- ICOM_THIS_From_IROTData(IMoniker, iface);
+ IMoniker *This = impl_from_IROTData(iface);
TRACE("(%p)\n",iface);
_____
Modified: trunk/reactos/lib/ole32/compobj.c
--- trunk/reactos/lib/ole32/compobj.c 2005-09-05 21:47:21 UTC (rev
17677)
+++ trunk/reactos/lib/ole32/compobj.c 2005-09-05 21:56:14 UTC (rev
17678)
@@ -224,9 +224,6 @@
apt = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(*apt));
apt->tid = GetCurrentThreadId();
- DuplicateHandle(GetCurrentProcess(), GetCurrentThread(),
- GetCurrentProcess(), &apt->thread,
- THREAD_ALL_ACCESS, FALSE, 0);
list_init(&apt->proxies);
list_init(&apt->stubmgrs);
@@ -360,7 +357,6 @@
DEBUG_CLEAR_CRITSEC_NAME(&apt->cs);
DeleteCriticalSection(&apt->cs);
- CloseHandle(apt->thread);
HeapFree(GetProcessHeap(), 0, apt);
}
@@ -813,27 +809,29 @@
*/
HRESULT WINAPI __CLSIDFromStringA(LPCSTR idstr, CLSID *id)
{
- const BYTE *s = (const BYTE *) idstr;
+ const BYTE *s;
int i;
BYTE table[256];
- if (!s)
- s = "{00000000-0000-0000-0000-000000000000}";
- else { /* validate the CLSID string */
+ if (!idstr) {
+ memset( id, 0, sizeof (CLSID) );
+ return S_OK;
+ }
- if (strlen(s) != 38)
- return CO_E_CLASSSTRING;
+ /* validate the CLSID string */
+ if (strlen(idstr) != 38)
+ return CO_E_CLASSSTRING;
- if ((s[0]!='{') || (s[9]!='-') || (s[14]!='-') ||
(s[19]!='-') ||
(s[24]!='-') || (s[37]!='}'))
- return CO_E_CLASSSTRING;
+ s = (const BYTE *) idstr;
+ if ((s[0]!='{') || (s[9]!='-') || (s[14]!='-') ||
(s[19]!='-') ||
(s[24]!='-') || (s[37]!='}'))
+ return CO_E_CLASSSTRING;
- for (i=1; i<37; i++) {
- if ((i == 9)||(i == 14)||(i == 19)||(i == 24)) continue;
- if (!(((s[i] >= '0') && (s[i] <= '9')) ||
- ((s[i] >= 'a') && (s[i] <= 'f')) ||
- ((s[i] >= 'A') && (s[i] <= 'F'))))
- return CO_E_CLASSSTRING;
- }
+ for (i=1; i<37; i++) {
+ if ((i == 9)||(i == 14)||(i == 19)||(i == 24)) continue;
+ if (!(((s[i] >= '0') && (s[i] <= '9')) ||
+ ((s[i] >= 'a') && (s[i] <= 'f')) ||
+ ((s[i] >= 'A') && (s[i] <= 'F'))))
+ return CO_E_CLASSSTRING;
}
TRACE("%s -> %p\n", s, id);
@@ -1026,7 +1024,7 @@
if (ret == S_OK)
{
- DWORD progidlen = 0;
+ LONG progidlen = 0;
if (RegQueryValueW(hkey, NULL, NULL, &progidlen))
ret = REGDB_E_CLASSNOTREG;
@@ -1064,7 +1062,7 @@
HRESULT WINAPI CLSIDFromProgID16(LPCOLESTR16 progid, LPCLSID riid)
{
char *buf,buf2[80];
- DWORD buf2len;
+ LONG buf2len;
HRESULT err;
HKEY xhkey;
@@ -1101,7 +1099,7 @@
{
static const WCHAR clsidW[] = {
'\\','C','L','S','I','D',0 };
WCHAR buf2[CHARS_IN_GUID];
- DWORD buf2len = sizeof(buf2);
+ LONG buf2len = sizeof(buf2);
HKEY xhkey;
WCHAR *buf = HeapAlloc( GetProcessHeap(),0,(strlenW(progid)+8) *
sizeof(WCHAR) );
@@ -1166,7 +1164,7 @@
static const WCHAR wszPSC[] =
{'\\','P','r','o','x','y','S','t','u','b','C','l','s','i','d','3','2',0}
;
WCHAR path[ARRAYSIZE(wszInterface) - 1 + CHARS_IN_GUID - 1 +
ARRAYSIZE(wszPSC)];
WCHAR value[CHARS_IN_GUID];
- DWORD len;
+ LONG len;
HKEY hkey;
TRACE("() riid=%s, pclsid=%p\n", debugstr_guid(riid), pclsid);
@@ -1562,7 +1560,6 @@
}
/***********************************************************************
- * CoGetClassObject [COMPOBJ.7]
* CoGetClassObject [OLE32.@]
*
* FIXME. If request allows of several options and there is a failure
@@ -1664,7 +1661,24 @@
return hres;
}
+
/***********************************************************************
+ * CoGetClassObject [COMPOBJ.7]
+ *
+ */
+HRESULT WINAPI CoGetClassObject16(
+ REFCLSID rclsid, DWORD dwClsContext, COSERVERINFO *pServerInfo,
+ REFIID iid, LPVOID *ppv)
+{
+ FIXME(", stub!\n\tCLSID:\t%s,\n\tIID:\t%s\n",
debugstr_guid(rclsid), debugstr_guid(iid));
+
+ if (pServerInfo) {
+ FIXME("\tpServerInfo:
name=%s\n",debugstr_w(pServerInfo->pwszName));
+ FIXME("\t\tpAuthInfo=%p\n",pServerInfo->pAuthInfo);
+ }
+ return E_NOTIMPL;
+}
+/**********************************************************************
*
* CoResumeClassObjects (OLE32.@)
*
* Resumes all class objects registered with REGCLS_SUSPENDED.
@@ -1772,8 +1786,8 @@
return MK_E_INVALIDEXTENSION;
}
+
/***********************************************************************
- * CoCreateInstance [COMPOBJ.13]
* CoCreateInstance [OLE32.@]
*/
HRESULT WINAPI CoCreateInstance(
@@ -1841,6 +1855,23 @@
}
/***********************************************************************
+ * CoCreateInstance [COMPOBJ.13]
+ */
+HRESULT WINAPI CoCreateInstance16(
+ REFCLSID rclsid,
+ LPUNKNOWN pUnkOuter,
+ DWORD dwClsContext,
+ REFIID iid,
+ LPVOID *ppv)
+{
+ FIXME("(%s, %p, %lx, %s, %p), stub!\n",
+ debugstr_guid(rclsid), pUnkOuter, dwClsContext,
debugstr_guid(iid),
+ ppv
+ );
+ return E_NOTIMPL;
+}
+
+/**********************************************************************
*
* CoCreateInstanceEx [OLE32.@]
*/
HRESULT WINAPI CoCreateInstanceEx(
@@ -2173,7 +2204,7 @@
static const WCHAR wszAutoConvertTo[] =
{'A','u','t','o','C','o','n','v','e','r','t','T','o',0};
HKEY hkey = NULL;
WCHAR buf[CHARS_IN_GUID];
- DWORD len;
+ LONG len;
HRESULT res = S_OK;
if (ERROR_SUCCESS != COM_OpenKeyForCLSID(clsidOld, KEY_READ,
&hkey))
@@ -2459,6 +2490,16 @@
return TRUE;
}
+
+/**********************************************************************
*
+ * CoAllowSetForegroundWindow [OLE32.@]
+ *
+ */
+HRESULT WINAPI CoAllowSetForegroundWindow(IUnknown *pUnk, void
*pvReserved)
+{
+ FIXME("(%p, %p): stub\n", pUnk, pvReserved);
+ return S_OK;
+}
/***********************************************************************
* CoQueryProxyBlanket [OLE32.@]
_____
Modified: trunk/reactos/lib/ole32/compobj.spec
--- trunk/reactos/lib/ole32/compobj.spec 2005-09-05 21:47:21 UTC
(rev 17677)
+++ trunk/reactos/lib/ole32/compobj.spec 2005-09-05 21:56:14 UTC
(rev 17678)
@@ -4,13 +4,13 @@
4 pascal CoGetMalloc(long ptr) CoGetMalloc16
5 pascal CoRegisterClassObject(ptr ptr long long ptr)
CoRegisterClassObject16
6 pascal CoRevokeClassObject(long) CoRevokeClassObject16
-7 pascal CoGetClassObject(ptr long ptr ptr ptr) CoGetClassObject
+7 pascal CoGetClassObject(ptr long ptr ptr ptr) CoGetClassObject16
8 stub COMARSHALINTERFACE
9 stub COUNMARSHALINTERFACE
10 stub COLOADLIBRARY
11 stub COFREELIBRARY
12 stub COFREEALLLIBRARIES
-13 pascal CoCreateInstance(ptr ptr long ptr ptr) CoCreateInstance
+13 pascal CoCreateInstance(ptr ptr long ptr ptr) CoCreateInstance16
14 stub STRINGFROMIID
15 pascal CoDisconnectObject(ptr long) CoDisconnectObject
16 stub CORELEASEMARSHALDATA
_____
Modified: trunk/reactos/lib/ole32/compobj_private.h
--- trunk/reactos/lib/ole32/compobj_private.h 2005-09-05 21:47:21 UTC
(rev 17677)
+++ trunk/reactos/lib/ole32/compobj_private.h 2005-09-05 21:56:14 UTC
(rev 17678)
@@ -96,8 +96,8 @@
struct list entry; /* entry in proxy_manager list (CS
parent->cs) */
struct proxy_manager *parent; /* owning proxy_manager (RO) */
LPVOID iface; /* interface pointer (RO) */
+ STDOBJREF stdobjref; /* marshal data that represents this object
(RO) */
IID iid; /* interface ID (RO) */
- IPID ipid; /* imported interface ID (RO) */
LPRPCPROXYBUFFER proxy; /* interface proxy (RO) */
DWORD refs; /* imported (public) references (MUTEX
parent->remoting_mutex) */
IRpcChannelBuffer *chan; /* channel to object (CS parent->cs) */
@@ -107,6 +107,7 @@
struct proxy_manager
{
const IMultiQIVtbl *lpVtbl;
+ const IMarshalVtbl *lpVtblMarshal;
struct apartment *parent; /* owning apartment (RO) */
struct list entry; /* entry in apartment (CS parent->cs) */
OXID oxid; /* object exported ID (RO) */
@@ -127,7 +128,6 @@
LONG refs; /* refcount of the apartment (LOCK) */
DWORD model; /* threading model (RO) */
DWORD tid; /* thread id (RO) */
- HANDLE thread; /* thread handle (RO) */
OXID oxid; /* object exporter ID (RO) */
LONG ipidc; /* interface pointer ID counter, starts at 1
(LOCK) */
HWND win; /* message window (RO) */
_____
Modified: trunk/reactos/lib/ole32/compositemoniker.c
--- trunk/reactos/lib/ole32/compositemoniker.c 2005-09-05 21:47:21 UTC
(rev 17677)
+++ trunk/reactos/lib/ole32/compositemoniker.c 2005-09-05 21:56:14 UTC
(rev 17678)
@@ -80,6 +80,10 @@
} EnumMonikerImpl;
+static inline IMoniker *impl_from_IROTData( IROTData *iface )
+{
+ return (IMoniker *)((char*)iface -
FIELD_OFFSET(CompositeMonikerImpl, lpvtbl2));
+}
static HRESULT EnumMonikerImpl_CreateEnumMoniker(IMoniker**
tabMoniker,ULONG tabSize,ULONG currentPos,BOOL leftToRigth,IEnumMoniker
** ppmk);
@@ -1208,7 +1212,7 @@
VOID** ppvObject)
{
- ICOM_THIS_From_IROTData(IMoniker, iface);
+ IMoniker *This = impl_from_IROTData(iface);
TRACE("(%p,%p,%p)\n",iface,riid,ppvObject);
@@ -1221,7 +1225,7 @@
static ULONG WINAPI
CompositeMonikerROTDataImpl_AddRef(IROTData *iface)
{
- ICOM_THIS_From_IROTData(IMoniker, iface);
+ IMoniker *This = impl_from_IROTData(iface);
TRACE("(%p)\n",iface);
@@ -1233,7 +1237,7 @@
*/
static ULONG WINAPI CompositeMonikerROTDataImpl_Release(IROTData*
iface)
{
- ICOM_THIS_From_IROTData(IMoniker, iface);
+ IMoniker *This = impl_from_IROTData(iface);
TRACE("(%p)\n",iface);
_____
Modified: trunk/reactos/lib/ole32/datacache.c
--- trunk/reactos/lib/ole32/datacache.c 2005-09-05 21:47:21 UTC (rev
17677)
+++ trunk/reactos/lib/ole32/datacache.c 2005-09-05 21:56:14 UTC (rev
17678)
@@ -93,12 +93,12 @@
/*
* List all interface VTables here
*/
- const IDataObjectVtbl* lpvtbl1;
- const IUnknownVtbl* lpvtbl2;
- const IPersistStorageVtbl* lpvtbl3;
- const IViewObject2Vtbl* lpvtbl4;
- const IOleCache2Vtbl* lpvtbl5;
- const IOleCacheControlVtbl* lpvtbl6;
+ const IDataObjectVtbl* lpVtbl;
+ const IUnknownVtbl* lpvtblNDIUnknown;
+ const IPersistStorageVtbl* lpvtblIPersistStorage;
+ const IViewObject2Vtbl* lpvtblIViewObject;
+ const IOleCache2Vtbl* lpvtblIOleCache2;
+ const IOleCacheControlVtbl* lpvtblIOleCacheControl;
/*
* Reference count of this object
@@ -136,13 +136,38 @@
* There is a version to accommodate all of the VTables implemented
* by this object.
*/
-#define _ICOM_THIS_From_IDataObject(class,name) class* this =
(class*)name
-#define _ICOM_THIS_From_NDIUnknown(class, name) class* this =
(class*)(((char*)name)-sizeof(void*))
-#define _ICOM_THIS_From_IPersistStorage(class, name) class* this =
(class*)(((char*)name)-2*sizeof(void*))
-#define _ICOM_THIS_From_IViewObject2(class, name) class* this =
(class*)(((char*)name)-3*sizeof(void*))
-#define _ICOM_THIS_From_IOleCache2(class, name) class* this =
(class*)(((char*)name)-4*sizeof(void*))
-#define _ICOM_THIS_From_IOleCacheControl(class, name) class* this =
(class*)(((char*)name)-5*sizeof(void*))
+static inline DataCache *impl_from_IDataObject( IDataObject *iface )
+{
+ return (DataCache *)((char*)iface - FIELD_OFFSET(DataCache,
lpVtbl));
+}
+
+static inline DataCache *impl_from_NDIUnknown( IUnknown *iface )
+{
+ return (DataCache *)((char*)iface - FIELD_OFFSET(DataCache,
lpvtblNDIUnknown));
+}
+
+static inline DataCache *impl_from_IPersistStorage( IPersistStorage
*iface )
+{
+ return (DataCache *)((char*)iface - FIELD_OFFSET(DataCache,
lpvtblIPersistStorage));
+}
+
+static inline DataCache *impl_from_IViewObject2( IViewObject2 *iface )
+{
+ return (DataCache *)((char*)iface - FIELD_OFFSET(DataCache,
lpvtblIViewObject));
+}
+
+static inline DataCache *impl_from_IOleCache2( IOleCache2 *iface )
+{
+ return (DataCache *)((char*)iface - FIELD_OFFSET(DataCache,
lpvtblIOleCache2));
+}
+
+static inline DataCache *impl_from_IOleCacheControl( IOleCacheControl
*iface )
+{
+ return (DataCache *)((char*)iface - FIELD_OFFSET(DataCache,
lpvtblIOleCacheControl));
+}
+
+
/*
* Prototypes for the methods of the DataCache class.
*/
@@ -489,7 +514,7 @@
REFIID riid,
void** ppvObject)
{
- _ICOM_THIS_From_NDIUnknown(DataCache, iface);
+ DataCache *this = impl_from_NDIUnknown(iface);
/*
* Perform a sanity check on the parameters.
@@ -511,26 +536,26 @@
}
else if (memcmp(&IID_IDataObject, riid, sizeof(IID_IDataObject)) ==
0)
{
- *ppvObject = (IDataObject*)&(this->lpvtbl1);
+ *ppvObject = (IDataObject*)&(this->lpVtbl);
}
else if ( (memcmp(&IID_IPersistStorage, riid,
sizeof(IID_IPersistStorage)) == 0) ||
(memcmp(&IID_IPersist, riid, sizeof(IID_IPersist)) == 0) )
{
- *ppvObject = (IPersistStorage*)&(this->lpvtbl3);
+ *ppvObject = (IPersistStorage*)&(this->lpvtblIPersistStorage);
}
else if ( (memcmp(&IID_IViewObject, riid, sizeof(IID_IViewObject)) ==
0) ||
(memcmp(&IID_IViewObject2, riid, sizeof(IID_IViewObject2))
== 0) )
{
- *ppvObject = (IViewObject2*)&(this->lpvtbl4);
+ *ppvObject = (IViewObject2*)&(this->lpvtblIViewObject);
}
else if ( (memcmp(&IID_IOleCache, riid, sizeof(IID_IOleCache)) == 0)
||
(memcmp(&IID_IOleCache2, riid, sizeof(IID_IOleCache2)) == 0)
)
{
- *ppvObject = (IOleCache2*)&(this->lpvtbl5);
+ *ppvObject = (IOleCache2*)&(this->lpvtblIOleCache2);
}
else if (memcmp(&IID_IOleCacheControl, riid,
sizeof(IID_IOleCacheControl)) == 0)
{
- *ppvObject = (IOleCacheControl*)&(this->lpvtbl6);
+ *ppvObject = (IOleCacheControl*)&(this->lpvtblIOleCacheControl);
}
/*
@@ -562,7 +587,7 @@
static ULONG WINAPI DataCache_NDIUnknown_AddRef(
IUnknown* iface)
{
- _ICOM_THIS_From_NDIUnknown(DataCache, iface);
+ DataCache *this = impl_from_NDIUnknown(iface);
return InterlockedIncrement(&this->ref);
}
@@ -577,7 +602,7 @@
static ULONG WINAPI DataCache_NDIUnknown_Release(
IUnknown* iface)
{
- _ICOM_THIS_From_NDIUnknown(DataCache, iface);
+ DataCache *this = impl_from_NDIUnknown(iface);
ULONG ref;
/*
@@ -608,7 +633,7 @@
REFIID riid,
void** ppvObject)
{
- _ICOM_THIS_From_IDataObject(DataCache, iface);
+ DataCache *this = impl_from_IDataObject(iface);
return IUnknown_QueryInterface(this->outerUnknown, riid, ppvObject);
}
@@ -621,7 +646,7 @@
static ULONG WINAPI DataCache_IDataObject_AddRef(
IDataObject* iface)
{
- _ICOM_THIS_From_IDataObject(DataCache, iface);
+ DataCache *this = impl_from_IDataObject(iface);
return IUnknown_AddRef(this->outerUnknown);
}
@@ -634,7 +659,7 @@
static ULONG WINAPI DataCache_IDataObject_Release(
IDataObject* iface)
{
- _ICOM_THIS_From_IDataObject(DataCache, iface);
+ DataCache *this = impl_from_IDataObject(iface);
return IUnknown_Release(this->outerUnknown);
}
@@ -886,7 +911,7 @@
REFIID riid,
void** ppvObject)
{
- _ICOM_THIS_From_IPersistStorage(DataCache, iface);
+ DataCache *this = impl_from_IPersistStorage(iface);
return IUnknown_QueryInterface(this->outerUnknown, riid, ppvObject);
}
@@ -899,7 +924,7 @@
static ULONG WINAPI DataCache_IPersistStorage_AddRef(
IPersistStorage* iface)
{
- _ICOM_THIS_From_IPersistStorage(DataCache, iface);
+ DataCache *this = impl_from_IPersistStorage(iface);
return IUnknown_AddRef(this->outerUnknown);
}
@@ -912,7 +937,7 @@
static ULONG WINAPI DataCache_IPersistStorage_Release(
IPersistStorage* iface)
{
- _ICOM_THIS_From_IPersistStorage(DataCache, iface);
+ DataCache *this = impl_from_IPersistStorage(iface);
return IUnknown_Release(this->outerUnknown);
}
@@ -979,7 +1004,7 @@
IPersistStorage* iface,
IStorage* pStg)
{
- _ICOM_THIS_From_IPersistStorage(DataCache, iface);
+ DataCache *this = impl_from_IPersistStorage(iface);
TRACE("(%p, %p)\n", iface, pStg);
@@ -1012,7 +1037,7 @@
IStorage* pStg,
BOOL fSameAsLoad)
{
- _ICOM_THIS_From_IPersistStorage(DataCache, iface);
+ DataCache *this = impl_from_IPersistStorage(iface);
TRACE("(%p, %p, %d)\n", iface, pStg, fSameAsLoad);
@@ -1072,7 +1097,7 @@
static HRESULT WINAPI DataCache_HandsOffStorage(
IPersistStorage* iface)
{
- _ICOM_THIS_From_IPersistStorage(DataCache, iface);
+ DataCache *this = impl_from_IPersistStorage(iface);
TRACE("(%p)\n", iface);
@@ -1100,7 +1125,7 @@
REFIID riid,
void** ppvObject)
{
- _ICOM_THIS_From_IViewObject2(DataCache, iface);
+ DataCache *this = impl_from_IViewObject2(iface);
return IUnknown_QueryInterface(this->outerUnknown, riid, ppvObject);
}
@@ -1113,7 +1138,7 @@
static ULONG WINAPI DataCache_IViewObject2_AddRef(
IViewObject2* iface)
{
- _ICOM_THIS_From_IViewObject2(DataCache, iface);
+ DataCache *this = impl_from_IViewObject2(iface);
return IUnknown_AddRef(this->outerUnknown);
}
@@ -1126,7 +1151,7 @@
static ULONG WINAPI DataCache_IViewObject2_Release(
IViewObject2* iface)
{
- _ICOM_THIS_From_IViewObject2(DataCache, iface);
+ DataCache *this = impl_from_IViewObject2(iface);
return IUnknown_Release(this->outerUnknown);
}
@@ -1156,7 +1181,7 @@
HMETAFILE presMetafile = 0;
HRESULT hres;
- _ICOM_THIS_From_IViewObject2(DataCache, iface);
+ DataCache *this = impl_from_IViewObject2(iface);
TRACE("(%p, %lx, %ld, %p, %p, %p, %p, %p, %p, %lx)\n",
iface,
@@ -1295,7 +1320,7 @@
DWORD advf,
IAdviseSink* pAdvSink)
{
- _ICOM_THIS_From_IViewObject2(DataCache, iface);
+ DataCache *this = impl_from_IViewObject2(iface);
TRACE("(%p, %lx, %lx, %p)\n", iface, aspects, advf, pAdvSink);
@@ -1350,7 +1375,7 @@
DWORD* pAdvf,
IAdviseSink** ppAdvSink)
{
- _ICOM_THIS_From_IViewObject2(DataCache, iface);
+ DataCache *this = impl_from_IViewObject2(iface);
TRACE("(%p, %p, %p, %p)\n", iface, pAspects, pAdvf, ppAdvSink);
@@ -1390,7 +1415,7 @@
PresentationDataHeader presData;
HRESULT hres = E_FAIL;
- _ICOM_THIS_From_IViewObject2(DataCache, iface);
+ DataCache *this = impl_from_IViewObject2(iface);
TRACE("(%p, %lx, %ld, %p, %p)\n",
iface, dwDrawAspect, lindex, ptd, lpsizel);
@@ -1459,7 +1484,7 @@
REFIID riid,
void** ppvObject)
{
- _ICOM_THIS_From_IOleCache2(DataCache, iface);
+ DataCache *this = impl_from_IOleCache2(iface);
return IUnknown_QueryInterface(this->outerUnknown, riid, ppvObject);
}
@@ -1472,7 +1497,7 @@
static ULONG WINAPI DataCache_IOleCache2_AddRef(
IOleCache2* iface)
{
- _ICOM_THIS_From_IOleCache2(DataCache, iface);
+ DataCache *this = impl_from_IOleCache2(iface);
return IUnknown_AddRef(this->outerUnknown);
}
@@ -1485,7 +1510,7 @@
static ULONG WINAPI DataCache_IOleCache2_Release(
IOleCache2* iface)
{
- _ICOM_THIS_From_IOleCache2(DataCache, iface);
+ DataCache *this = impl_from_IOleCache2(iface);
return IUnknown_Release(this->outerUnknown);
}
@@ -1568,7 +1593,7 @@
REFIID riid,
void** ppvObject)
{
- _ICOM_THIS_From_IOleCacheControl(DataCache, iface);
+ DataCache *this = impl_from_IOleCacheControl(iface);
return IUnknown_QueryInterface(this->outerUnknown, riid, ppvObject);
}
@@ -1581,7 +1606,7 @@
static ULONG WINAPI DataCache_IOleCacheControl_AddRef(
IOleCacheControl* iface)
{
- _ICOM_THIS_From_IOleCacheControl(DataCache, iface);
+ DataCache *this = impl_from_IOleCacheControl(iface);
return IUnknown_AddRef(this->outerUnknown);
}
@@ -1594,7 +1619,7 @@
static ULONG WINAPI DataCache_IOleCacheControl_Release(
IOleCacheControl* iface)
{
- _ICOM_THIS_From_IOleCacheControl(DataCache, iface);
+ DataCache *this = impl_from_IOleCacheControl(iface);
return IUnknown_Release(this->outerUnknown);
}
@@ -1735,13 +1760,13 @@
/*
* Make sure it supports the interface required by the caller.
*/
- hr = IUnknown_QueryInterface((IUnknown*)&(newCache->lpvtbl2), riid,
ppvObj);
+ hr =
IUnknown_QueryInterface((IUnknown*)&(newCache->lpvtblNDIUnknown), riid,
ppvObj);
/*
* Release the reference obtained in the constructor. If
* the QueryInterface was unsuccessful, it will free the class.
*/
- IUnknown_Release((IUnknown*)&(newCache->lpvtbl2));
+ IUnknown_Release((IUnknown*)&(newCache->lpvtblNDIUnknown));
return hr;
}
@@ -1766,12 +1791,12 @@
/*
* Initialize the virtual function table.
*/
- newObject->lpvtbl1 = &DataCache_IDataObject_VTable;
- newObject->lpvtbl2 = &DataCache_NDIUnknown_VTable;
- newObject->lpvtbl3 = &DataCache_IPersistStorage_VTable;
- newObject->lpvtbl4 = &DataCache_IViewObject2_VTable;
- newObject->lpvtbl5 = &DataCache_IOleCache2_VTable;
- newObject->lpvtbl6 = &DataCache_IOleCacheControl_VTable;
+ newObject->lpVtbl = &DataCache_IDataObject_VTable;
+ newObject->lpvtblNDIUnknown = &DataCache_NDIUnknown_VTable;
+ newObject->lpvtblIPersistStorage = &DataCache_IPersistStorage_VTable;
+ newObject->lpvtblIViewObject = &DataCache_IViewObject2_VTable;
+ newObject->lpvtblIOleCache2 = &DataCache_IOleCache2_VTable;
+ newObject->lpvtblIOleCacheControl =
&DataCache_IOleCacheControl_VTable;
/*
* Start with one reference count. The caller of this function
@@ -1786,7 +1811,7 @@
* lifetime.
*/
if (pUnkOuter==NULL)
- pUnkOuter = (IUnknown*)&(newObject->lpvtbl2);
+ pUnkOuter = (IUnknown*)&(newObject->lpvtblNDIUnknown);
newObject->outerUnknown = pUnkOuter;
_____
Modified: trunk/reactos/lib/ole32/defaulthandler.c
--- trunk/reactos/lib/ole32/defaulthandler.c 2005-09-05 21:47:21 UTC
(rev 17677)
+++ trunk/reactos/lib/ole32/defaulthandler.c 2005-09-05 21:56:14 UTC
(rev 17678)
@@ -70,10 +70,10 @@
/*
* List all interface VTables here
*/
- const IOleObjectVtbl* lpvtbl1;
- const IUnknownVtbl* lpvtbl2;
- const IDataObjectVtbl* lpvtbl3;
- const IRunnableObjectVtbl* lpvtbl4;
+ const IOleObjectVtbl* lpVtbl;
+ const IUnknownVtbl* lpvtblIUnknown;
+ const IDataObjectVtbl* lpvtblIDataObject;
+ const IRunnableObjectVtbl* lpvtblIRunnableObject;
/*
* Reference count of this object
@@ -82,7 +82,7 @@
/*
* IUnknown implementation of the outer object.
- */
+p */
IUnknown* outerUnknown;
/*
@@ -123,16 +123,32 @@
typedef struct DefaultHandler DefaultHandler;
/*
- * Here, I define utility macros to help with the casting of the
+ * Here, I define utility functions to help with the casting of the
* "this" parameter.
* There is a version to accommodate all of the VTables implemented
* by this object.
*/
-#define _ICOM_THIS_From_IOleObject(class,name) class* this =
(class*)name
-#define _ICOM_THIS_From_NDIUnknown(class, name) class* this =
(class*)(((char*)name)-sizeof(void*))
-#define _ICOM_THIS_From_IDataObject(class, name) class* this =
(class*)(((char*)name)-2*sizeof(void*))
-#define _ICOM_THIS_From_IRunnableObject(class, name) class* this =
(class*)(((char*)name)-3*sizeof(void*))
+static inline DefaultHandler *impl_from_IOleObject( IOleObject *iface )
+{
+ return (DefaultHandler *)((char*)iface -
FIELD_OFFSET(DefaultHandler, lpVtbl));
+}
+static inline DefaultHandler *impl_from_NDIUnknown( IUnknown *iface )
+{
+ return (DefaultHandler *)((char*)iface -
FIELD_OFFSET(DefaultHandler, lpvtblIUnknown));
+}
+
+static inline DefaultHandler *impl_from_IDataObject( IDataObject *iface
)
+{
+ return (DefaultHandler *)((char*)iface -
FIELD_OFFSET(DefaultHandler, lpvtblIDataObject));
+}
+
+static inline DefaultHandler *impl_from_IRunnableObject(
IRunnableObject *iface )
+{
+ return (DefaultHandler *)((char*)iface -
FIELD_OFFSET(DefaultHandler, lpvtblIRunnableObject));
+}
+
+
/*
* Prototypes for the methods of the DefaultHandler class.
*/
@@ -432,13 +448,13 @@
/*
* Make sure it supports the interface required by the caller.
*/
- hr = IUnknown_QueryInterface((IUnknown*)&(newHandler->lpvtbl2), riid,
ppvObj);
+ hr =
IUnknown_QueryInterface((IUnknown*)&(newHandler->lpvtblIUnknown), riid,
ppvObj);
/*
* Release the reference obtained in the constructor. If
* the QueryInterface was unsuccessful, it will free the class.
*/
- IUnknown_Release((IUnknown*)&(newHandler->lpvtbl2));
+ IUnknown_Release((IUnknown*)&(newHandler->lpvtblIUnknown));
return hr;
}
@@ -463,10 +479,10 @@
/*
* Initialize the virtual function table.
*/
- newObject->lpvtbl1 = &DefaultHandler_IOleObject_VTable;
- newObject->lpvtbl2 = &DefaultHandler_NDIUnknown_VTable;
- newObject->lpvtbl3 = &DefaultHandler_IDataObject_VTable;
- newObject->lpvtbl4 = &DefaultHandler_IRunnableObject_VTable;
+ newObject->lpVtbl = &DefaultHandler_IOleObject_VTable;
+ newObject->lpvtblIUnknown = &DefaultHandler_NDIUnknown_VTable;
+ newObject->lpvtblIDataObject = &DefaultHandler_IDataObject_VTable;
+ newObject->lpvtblIRunnableObject =
&DefaultHandler_IRunnableObject_VTable;
/*
* Start with one reference count. The caller of this function
@@ -481,7 +497,7 @@
* lifetime.
*/
if (pUnkOuter==NULL)
- pUnkOuter = (IUnknown*)&(newObject->lpvtbl2);
+ pUnkOuter = (IUnknown*)&(newObject->lpvtblIUnknown);
newObject->outerUnknown = pUnkOuter;
@@ -580,7 +596,7 @@
REFIID riid,
void** ppvObject)
{
- _ICOM_THIS_From_NDIUnknown(DefaultHandler, iface);
+ DefaultHandler *this = impl_from_NDIUnknown(iface);
/*
* Perform a sanity check on the parameters.
@@ -602,15 +618,15 @@
}
else if (memcmp(&IID_IOleObject, riid, sizeof(IID_IOleObject)) == 0)
{
- *ppvObject = (IOleObject*)&(this->lpvtbl1);
+ *ppvObject = (IOleObject*)&(this->lpVtbl);
}
else if (memcmp(&IID_IDataObject, riid, sizeof(IID_IDataObject)) ==
0)
{
- *ppvObject = (IDataObject*)&(this->lpvtbl3);
+ *ppvObject = (IDataObject*)&(this->lpvtblIDataObject);
}
else if (memcmp(&IID_IRunnableObject, riid,
sizeof(IID_IRunnableObject)) == 0)
{
- *ppvObject = (IRunnableObject*)&(this->lpvtbl4);
+ *ppvObject = (IRunnableObject*)&(this->lpvtblIRunnableObject);
}
else
{
@@ -650,7 +666,7 @@
static ULONG WINAPI DefaultHandler_NDIUnknown_AddRef(
IUnknown* iface)
{
- _ICOM_THIS_From_NDIUnknown(DefaultHandler, iface);
+ DefaultHandler *this = impl_from_NDIUnknown(iface);
return InterlockedIncrement(&this->ref);
}
@@ -665,7 +681,7 @@
static ULONG WINAPI DefaultHandler_NDIUnknown_Release(
IUnknown* iface)
{
- _ICOM_THIS_From_NDIUnknown(DefaultHandler, iface);
+ DefaultHandler *this = impl_from_NDIUnknown(iface);
ULONG ref;
/*
@@ -696,7 +712,7 @@
REFIID riid,
void** ppvObject)
{
- _ICOM_THIS_From_IOleObject(DefaultHandler, iface);
+ DefaultHandler *this = impl_from_IOleObject(iface);
return IUnknown_QueryInterface(this->outerUnknown, riid, ppvObject);
}
@@ -709,7 +725,7 @@
static ULONG WINAPI DefaultHandler_AddRef(
IOleObject* iface)
{
- _ICOM_THIS_From_IOleObject(DefaultHandler, iface);
+ DefaultHandler *this = impl_from_IOleObject(iface);
return IUnknown_AddRef(this->outerUnknown);
}
@@ -722,7 +738,7 @@
static ULONG WINAPI DefaultHandler_Release(
IOleObject* iface)
{
- _ICOM_THIS_From_IOleObject(DefaultHandler, iface);
+ DefaultHandler *this = impl_from_IOleObject(iface);
return IUnknown_Release(this->outerUnknown);
}
@@ -739,7 +755,7 @@
IOleObject* iface,
IOleClientSite* pClientSite)
{
- _ICOM_THIS_From_IOleObject(DefaultHandler, iface);
+ DefaultHandler *this = impl_from_IOleObject(iface);
TRACE("(%p, %p)\n", iface, pClientSite);
@@ -774,7 +790,7 @@
IOleObject* iface,
IOleClientSite** ppClientSite)
{
- _ICOM_THIS_From_IOleObject(DefaultHandler, iface);
+ DefaultHandler *this = impl_from_IOleObject(iface);
/*
* Sanity check.
@@ -805,7 +821,7 @@
LPCOLESTR szContainerApp,
LPCOLESTR szContainerObj)
{
- _ICOM_THIS_From_IOleObject(DefaultHandler, iface);
+ DefaultHandler *this = impl_from_IOleObject(iface);
TRACE("(%p, %s, %s)\n",
iface,
@@ -888,7 +904,7 @@
DWORD dwWhichMoniker,
IMoniker** ppmk)
{
- _ICOM_THIS_From_IOleObject(DefaultHandler, iface);
+ DefaultHandler *this = impl_from_IOleObject(iface);
TRACE("(%p, %ld, %ld, %p)\n",
iface, dwAssign, dwWhichMoniker, ppmk);
@@ -967,7 +983,7 @@
IOleObject* iface,
IEnumOLEVERB** ppEnumOleVerb)
{
- _ICOM_THIS_From_IOleObject(DefaultHandler, iface);
+ DefaultHandler *this = impl_from_IOleObject(iface);
TRACE("(%p, %p)\n", iface, ppEnumOleVerb);
@@ -1007,7 +1023,7 @@
IOleObject* iface,
CLSID* pClsid)
{
- _ICOM_THIS_From_IOleObject(DefaultHandler, iface);
+ DefaultHandler *this = impl_from_IOleObject(iface);
TRACE("(%p, %p)\n", iface, pClsid);
@@ -1035,7 +1051,7 @@
DWORD dwFormOfType,
LPOLESTR* pszUserType)
{
- _ICOM_THIS_From_IOleObject(DefaultHandler, iface);
+ DefaultHandler *this = impl_from_IOleObject(iface);
TRACE("(%p, %ld, %p)\n", iface, dwFormOfType, pszUserType);
@@ -1076,7 +1092,7 @@
IViewObject2* cacheView = NULL;
HRESULT hres;
- _ICOM_THIS_From_IOleObject(DefaultHandler, iface);
+ DefaultHandler *this = impl_from_IOleObject(iface);
TRACE("(%p, %lx, %p)\n", iface, dwDrawAspect, psizel);
@@ -1123,7 +1139,7 @@
DWORD* pdwConnection)
{
HRESULT hres = S_OK;
- _ICOM_THIS_From_IOleObject(DefaultHandler, iface);
+ DefaultHandler *this = impl_from_IOleObject(iface);
TRACE("(%p, %p, %p)\n", iface, pAdvSink, pdwConnection);
@@ -1157,7 +1173,7 @@
IOleObject* iface,
DWORD dwConnection)
{
- _ICOM_THIS_From_IOleObject(DefaultHandler, iface);
+ DefaultHandler *this = impl_from_IOleObject(iface);
TRACE("(%p, %ld)\n", iface, dwConnection);
@@ -1184,7 +1200,7 @@
IOleObject* iface,
IEnumSTATDATA** ppenumAdvise)
{
- _ICOM_THIS_From_IOleObject(DefaultHandler, iface);
+ DefaultHandler *this = impl_from_IOleObject(iface);
TRACE("(%p, %p)\n", iface, ppenumAdvise);
@@ -1220,7 +1236,7 @@
DWORD* pdwStatus)
{
HRESULT hres;
- _ICOM_THIS_From_IOleObject(DefaultHandler, iface);
+ DefaultHandler *this = impl_from_IOleObject(iface);
TRACE("(%p, %lx, %p)\n", iface, dwAspect, pdwStatus);
@@ -1262,7 +1278,7 @@
REFIID riid,
void** ppvObject)
{
- _ICOM_THIS_From_IDataObject(DefaultHandler, iface);
+ DefaultHandler *this = impl_from_IDataObject(iface);
return IUnknown_QueryInterface(this->outerUnknown, riid, ppvObject);
}
@@ -1275,7 +1291,7 @@
static ULONG WINAPI DefaultHandler_IDataObject_AddRef(
IDataObject* iface)
[truncated at 1000 lines; 2685 more skipped]