Author: cwittich Date: Sat Sep 13 13:49:51 2008 New Revision: 36196
URL: http://svn.reactos.org/svn/reactos?rev=36196&view=rev Log: sync ole32 with wine 1.1.4
Modified: trunk/reactos/dll/win32/ole32/clipboard.c trunk/reactos/dll/win32/ole32/compobj.c trunk/reactos/dll/win32/ole32/defaulthandler.c trunk/reactos/dll/win32/ole32/moniker.c trunk/reactos/dll/win32/ole32/ole32.rbuild trunk/reactos/dll/win32/ole32/oleproxy.c trunk/reactos/dll/win32/ole32/rpc.c trunk/reactos/dll/win32/ole32/stg_prop.c trunk/reactos/dll/win32/ole32/storage32.c trunk/reactos/dll/win32/ole32/stubmanager.c trunk/reactos/dll/win32/ole32/usrmarshal.c trunk/reactos/include/psdk/comcat.idl trunk/reactos/include/psdk/dispex.idl trunk/reactos/include/psdk/mlang.idl trunk/reactos/include/psdk/objsafe.idl trunk/reactos/include/psdk/rpc.h
Modified: trunk/reactos/dll/win32/ole32/clipboard.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/ole32/clipboard.c... ============================================================================== --- trunk/reactos/dll/win32/ole32/clipboard.c [iso-8859-1] (original) +++ trunk/reactos/dll/win32/ole32/clipboard.c [iso-8859-1] Sat Sep 13 13:49:51 2008 @@ -583,6 +583,9 @@ if (!theOleClipboard) return E_OUTOFMEMORY;
+ if (pDataObject == NULL) + return S_FALSE; + return (pDataObject == theOleClipboard->pIDataObjectSrc) ? S_OK : S_FALSE; }
Modified: trunk/reactos/dll/win32/ole32/compobj.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/ole32/compobj.c?r... ============================================================================== --- trunk/reactos/dll/win32/ole32/compobj.c [iso-8859-1] (original) +++ trunk/reactos/dll/win32/ole32/compobj.c [iso-8859-1] Sat Sep 13 13:49:51 2008 @@ -1391,7 +1391,7 @@ return ret;
ret=WINE_StringFromCLSID(id,buf); - if (!ret) { + if (ret == S_OK) { DWORD len = MultiByteToWideChar( CP_ACP, 0, buf, -1, NULL, 0 ); *idstr = IMalloc_Alloc( mllc, len * sizeof(WCHAR) ); MultiByteToWideChar( CP_ACP, 0, buf, -1, *idstr, len ); @@ -2806,7 +2806,7 @@ if (!memcmp( clsidOld, clsidNew, sizeof(*clsidOld) )) { if (!RegQueryValueW(hkey, wszAutoTreatAs, auto_treat_as, &auto_treat_as_size) && - !CLSIDFromString(auto_treat_as, &id)) + CLSIDFromString(auto_treat_as, &id) == S_OK) { if (RegSetValueW(hkey, wszTreatAs, REG_SZ, auto_treat_as, sizeof(auto_treat_as))) { @@ -3742,7 +3742,8 @@ */ HRESULT WINAPI CoGetContextToken( ULONG_PTR *token ) { - FIXME( "stub\n" ); + static int calls; + if(!(calls++)) FIXME( "stub\n" ); if (token) *token = 0; return E_NOTIMPL; }
Modified: trunk/reactos/dll/win32/ole32/defaulthandler.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/ole32/defaulthand... ============================================================================== --- trunk/reactos/dll/win32/ole32/defaulthandler.c [iso-8859-1] (original) +++ trunk/reactos/dll/win32/ole32/defaulthandler.c [iso-8859-1] Sat Sep 13 13:49:51 2008 @@ -715,7 +715,7 @@ dwDrawAspect, psizel->cx, psizel->cy);
if (object_is_running(This)) - IOleObject_SetExtent(This->pOleDelegate, dwDrawAspect, psizel); + return IOleObject_SetExtent(This->pOleDelegate, dwDrawAspect, psizel);
return OLE_E_NOTRUNNING; }
Modified: trunk/reactos/dll/win32/ole32/moniker.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/ole32/moniker.c?r... ============================================================================== --- trunk/reactos/dll/win32/ole32/moniker.c [iso-8859-1] (original) +++ trunk/reactos/dll/win32/ole32/moniker.c [iso-8859-1] Sat Sep 13 13:49:51 2008 @@ -464,7 +464,7 @@ const void *pv = GlobalLock(hglobal); rot_entry->object = HeapAlloc(GetProcessHeap(), 0, FIELD_OFFSET(MInterfacePointer, abData[size])); rot_entry->object->ulCntData = size; - memcpy(&rot_entry->object->abData, pv, size); + memcpy(rot_entry->object->abData, pv, size); GlobalUnlock(hglobal); } } @@ -530,7 +530,7 @@ const void *pv = GlobalLock(hglobal); moniker = HeapAlloc(GetProcessHeap(), 0, FIELD_OFFSET(InterfaceData, abData[size])); moniker->ulCntData = size; - memcpy(&moniker->abData, pv, size); + memcpy(moniker->abData, pv, size); GlobalUnlock(hglobal); } } @@ -642,7 +642,7 @@ LIST_FOR_EACH_ENTRY(rot_entry, &This->rot, const struct rot_entry, entry) { if ((rot_entry->moniker_data->ulCntData == moniker_data->ulCntData) && - !memcmp(&moniker_data->abData, &rot_entry->moniker_data->abData, moniker_data->ulCntData)) + !memcmp(moniker_data->abData, rot_entry->moniker_data->abData, moniker_data->ulCntData)) { hr = S_OK; break; @@ -714,7 +714,7 @@ LIST_FOR_EACH_ENTRY(rot_entry, &This->rot, struct rot_entry, entry) { if ((rot_entry->moniker_data->ulCntData == moniker_data->ulCntData) && - !memcmp(&moniker_data->abData, &rot_entry->moniker_data->abData, moniker_data->ulCntData)) + !memcmp(moniker_data->abData, rot_entry->moniker_data->abData, moniker_data->ulCntData)) { IStream *pStream; hr = create_stream_on_mip_ro(rot_entry->object, &pStream); @@ -860,7 +860,7 @@ LIST_FOR_EACH_ENTRY(rot_entry, &This->rot, const struct rot_entry, entry) { if ((rot_entry->moniker_data->ulCntData == moniker_data->ulCntData) && - !memcmp(&moniker_data->abData, &rot_entry->moniker_data->abData, moniker_data->ulCntData)) + !memcmp(moniker_data->abData, rot_entry->moniker_data->abData, moniker_data->ulCntData)) { *pfiletime = rot_entry->last_modified; hr = S_OK;
Modified: trunk/reactos/dll/win32/ole32/ole32.rbuild URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/ole32/ole32.rbuil... ============================================================================== --- trunk/reactos/dll/win32/ole32/ole32.rbuild [iso-8859-1] (original) +++ trunk/reactos/dll/win32/ole32/ole32.rbuild [iso-8859-1] Sat Sep 13 13:49:51 2008 @@ -9,15 +9,19 @@ <define name="__WINESRC__" /> <define name="WINVER">0x600</define> <define name="_WIN32_WINNT">0x600</define> + <define name="_OLE32_" /> + <define name="COM_NO_WINDOWS_H" /> <library>wine</library> <library>advapi32</library> <library>user32</library> <library>gdi32</library> <library>ole32_irot_client</library> + <library>ole32_proxy</library> <library>rpcrt4</library> <library>kernel32</library> <library>ntdll</library> <library>uuid</library> + <library>pseh</library> <file>antimoniker.c</file> <file>bindctx.c</file> <file>classmoniker.c</file> @@ -65,4 +69,13 @@ <module name="ole32_irot_client" type="rpcclient"> <file>irot.idl</file> </module> +<module name="ole32_proxy" type="rpcproxy" allowwarnings="true"> + <define name="_OLE32_" /> + <define name="COM_NO_WINDOWS_H" /> + <define name="__WINESRC__" /> + <file>dcom.idl</file> + <file>ole32_unknwn.idl</file> + <file>ole32_objidl.idl</file> + <file>ole32_oleidl.idl</file> +</module> </group>
Modified: trunk/reactos/dll/win32/ole32/oleproxy.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/ole32/oleproxy.c?... ============================================================================== --- trunk/reactos/dll/win32/ole32/oleproxy.c [iso-8859-1] (original) +++ trunk/reactos/dll/win32/ole32/oleproxy.c [iso-8859-1] Sat Sep 13 13:49:51 2008 @@ -36,8 +36,7 @@ #include "objbase.h" #include "ole2.h" #include "rpc.h" -#include "winerror.h" -#include "wtypes.h" +#include "rpcproxy.h"
#include "compobj_private.h" #include "moniker.h" @@ -46,947 +45,22 @@
WINE_DEFAULT_DEBUG_CHANNEL(ole);
-static ULONG WINAPI RURpcProxyBufferImpl_Release(LPRPCPROXYBUFFER iface); +static CStdPSFactoryBuffer PSFactoryBuffer;
-/* From msdn: - * - * The first time a client requests a pointer to an interface on a - * particular object, COM loads an IClassFactory stub in the server - * process and uses it to marshal the first pointer back to the - * client. In the client process, COM loads the generic proxy for the - * class factory object and calls its implementation of IMarshal to - * unmarshal that first pointer. COM then creates the first interface - * proxy and hands it a pointer to the RPC channel. Finally, COM returns - * the IClassFactory pointer to the client, which uses it to call - * IClassFactory::CreateInstance, passing it a reference to the interface. - * - * Back in the server process, COM now creates a new instance of the - * object, along with a stub for the requested interface. This stub marshals - * the interface pointer back to the client process, where another object - * proxy is created, this time for the object itself. Also created is a - * proxy for the requested interface, a pointer to which is returned to - * the client. With subsequent calls to other interfaces on the object, - * COM will load the appropriate interface stubs and proxies as needed. - */ -typedef struct _CFStub { - const IRpcStubBufferVtbl *lpvtbl; - LONG ref; +CSTDSTUBBUFFERRELEASE(&PSFactoryBuffer)
- LPUNKNOWN pUnkServer; -} CFStub; +extern const ExtendedProxyFileInfo dcom_ProxyFileInfo; +extern const ExtendedProxyFileInfo ole32_objidl_ProxyFileInfo; +extern const ExtendedProxyFileInfo ole32_oleidl_ProxyFileInfo; +extern const ExtendedProxyFileInfo ole32_unknwn_ProxyFileInfo;
-static HRESULT WINAPI -CFStub_QueryInterface(LPRPCSTUBBUFFER iface, REFIID riid, LPVOID *ppv) { - if (IsEqualIID(&IID_IUnknown,riid)||IsEqualIID(&IID_IRpcStubBuffer,riid)) { - *ppv = (LPVOID)iface; - IUnknown_AddRef(iface); - return S_OK; - } - FIXME("(%s), interface not supported.\n",debugstr_guid(riid)); - return E_NOINTERFACE; -} - -static ULONG WINAPI -CFStub_AddRef(LPRPCSTUBBUFFER iface) { - CFStub *This = (CFStub *)iface; - return InterlockedIncrement(&This->ref); -} - -static ULONG WINAPI -CFStub_Release(LPRPCSTUBBUFFER iface) { - CFStub *This = (CFStub *)iface; - ULONG ref; - - ref = InterlockedDecrement(&This->ref); - if (!ref) { - IRpcStubBuffer_Disconnect(iface); - HeapFree(GetProcessHeap(),0,This); - } - return ref; -} - -static HRESULT WINAPI -CFStub_Connect(LPRPCSTUBBUFFER iface, IUnknown *pUnkServer) { - CFStub *This = (CFStub *)iface; - - This->pUnkServer = pUnkServer; - IUnknown_AddRef(pUnkServer); - return S_OK; -} - -static void WINAPI -CFStub_Disconnect(LPRPCSTUBBUFFER iface) { - CFStub *This = (CFStub *)iface; - - if (This->pUnkServer) { - IUnknown_Release(This->pUnkServer); - This->pUnkServer = NULL; - } -} - -static HRESULT WINAPI -CFStub_Invoke( - LPRPCSTUBBUFFER iface,RPCOLEMESSAGE* msg,IRpcChannelBuffer* chanbuf -) { - CFStub *This = (CFStub *)iface; - HRESULT hres; - - if (msg->iMethod == 3) { /* CreateInstance */ - IID iid; - IClassFactory *classfac; - IUnknown *ppv; - IStream *pStm; - STATSTG ststg; - ULARGE_INTEGER newpos; - LARGE_INTEGER seekto; - ULONG res; - - if (msg->cbBuffer < sizeof(IID)) { - FIXME("Not enough bytes in buffer (%d)?\n",msg->cbBuffer); - return E_FAIL; - } - memcpy(&iid,msg->Buffer,sizeof(iid)); - TRACE("->CreateInstance(%s)\n",debugstr_guid(&iid)); - hres = IUnknown_QueryInterface(This->pUnkServer,&IID_IClassFactory,(LPVOID*)&classfac); - if (hres) { - FIXME("Ole server does not provide an IClassFactory?\n"); - return hres; - } - hres = IClassFactory_CreateInstance(classfac,NULL,&iid,(LPVOID*)&ppv); - IClassFactory_Release(classfac); - msg->cbBuffer = 0; - if (hres) { - FIXME("Failed to create an instance of %s\n",debugstr_guid(&iid)); - goto getbuffer; - } - hres = CreateStreamOnHGlobal(0,TRUE,&pStm); - if (hres) { - FIXME("Failed to create stream on hglobal\n"); - goto getbuffer; - } - hres = IStream_Write(pStm, &ppv, sizeof(ppv), NULL); - if (hres) { - ERR("IStream_Write failed, 0x%08x\n", hres); - goto getbuffer; - } - if (ppv) { - hres = CoMarshalInterface(pStm,&iid,ppv,0,NULL,0); - IUnknown_Release(ppv); - if (hres) { - FIXME("CoMarshalInterface failed, %x!\n",hres); - goto getbuffer; - } - } - hres = IStream_Stat(pStm,&ststg,0); - if (hres) { - FIXME("Stat failed.\n"); - goto getbuffer; - } - - msg->cbBuffer = ststg.cbSize.u.LowPart; - -getbuffer: - IRpcChannelBuffer_GetBuffer(chanbuf, msg, &IID_IClassFactory); - if (hres) return hres; - - seekto.u.LowPart = 0;seekto.u.HighPart = 0; - hres = IStream_Seek(pStm,seekto,STREAM_SEEK_SET,&newpos); - if (hres) { - FIXME("IStream_Seek failed, %x\n",hres); - return hres; - } - hres = IStream_Read(pStm,msg->Buffer,msg->cbBuffer,&res); - if (hres) { - FIXME("Stream Read failed, %x\n",hres); - return hres; - } - IStream_Release(pStm); - return S_OK; - } - FIXME("(%p,%p), stub!\n",msg,chanbuf); - FIXME("iMethod is %d\n",msg->iMethod); - FIXME("cbBuffer is %d\n",msg->cbBuffer); - return E_FAIL; -} - -static LPRPCSTUBBUFFER WINAPI -CFStub_IsIIDSupported(LPRPCSTUBBUFFER iface,REFIID riid) { - FIXME("(%s), stub!\n",debugstr_guid(riid)); - return NULL; -} - -static ULONG WINAPI -CFStub_CountRefs(LPRPCSTUBBUFFER iface) { - FIXME("(), stub!\n"); - return 1; -} - -static HRESULT WINAPI -CFStub_DebugServerQueryInterface(LPRPCSTUBBUFFER iface,void** ppv) { - FIXME("(%p), stub!\n",ppv); - return E_FAIL; -} -static void WINAPI -CFStub_DebugServerRelease(LPRPCSTUBBUFFER iface,void *pv) { - FIXME("(%p), stub!\n",pv); -} - -static const IRpcStubBufferVtbl cfstubvt = { - CFStub_QueryInterface, - CFStub_AddRef, - CFStub_Release, - CFStub_Connect, - CFStub_Disconnect, - CFStub_Invoke, - CFStub_IsIIDSupported, - CFStub_CountRefs, - CFStub_DebugServerQueryInterface, - CFStub_DebugServerRelease +static const ProxyFileInfo *OLE32_ProxyFileList[] = { + &dcom_ProxyFileInfo, + &ole32_objidl_ProxyFileInfo, + &ole32_oleidl_ProxyFileInfo, + &ole32_unknwn_ProxyFileInfo, + NULL }; - -static HRESULT -CFStub_Construct(LPRPCSTUBBUFFER *ppv) { - CFStub *cfstub; - cfstub = HeapAlloc(GetProcessHeap(),HEAP_ZERO_MEMORY,sizeof(CFStub)); - if (!cfstub) - return E_OUTOFMEMORY; - *ppv = (LPRPCSTUBBUFFER)cfstub; - cfstub->lpvtbl = &cfstubvt; - cfstub->ref = 1; - return S_OK; -} - -/* Since we create proxy buffers and classfactory in a pair, there is - * no need for 2 separate structs. Just put them in one, but remember - * the refcount. - */ -typedef struct _CFProxy { - const IClassFactoryVtbl *lpvtbl_cf; - const IRpcProxyBufferVtbl *lpvtbl_proxy; - LONG ref; - - IRpcChannelBuffer *chanbuf; - IUnknown *outer_unknown; -} CFProxy; - -static HRESULT WINAPI IRpcProxyBufferImpl_QueryInterface(LPRPCPROXYBUFFER iface,REFIID riid,LPVOID *ppv) { - *ppv = NULL; - if (IsEqualIID(riid,&IID_IRpcProxyBuffer)||IsEqualIID(riid,&IID_IUnknown)) { - IRpcProxyBuffer_AddRef(iface); - *ppv = (LPVOID)iface; - return S_OK; - } - FIXME("(%s), no interface.\n",debugstr_guid(riid)); - return E_NOINTERFACE; -} - -static ULONG WINAPI IRpcProxyBufferImpl_AddRef(LPRPCPROXYBUFFER iface) { - ICOM_THIS_MULTI(CFProxy,lpvtbl_proxy,iface); - return InterlockedIncrement(&This->ref); -} - -static ULONG WINAPI IRpcProxyBufferImpl_Release(LPRPCPROXYBUFFER iface) { - ICOM_THIS_MULTI(CFProxy,lpvtbl_proxy,iface); - ULONG ref = InterlockedDecrement(&This->ref); - - if (!ref) { - IRpcProxyBuffer_Disconnect(iface); - HeapFree(GetProcessHeap(),0,This); - } - return ref; -} - -static HRESULT WINAPI IRpcProxyBufferImpl_Connect(LPRPCPROXYBUFFER iface,IRpcChannelBuffer* pRpcChannelBuffer) { - ICOM_THIS_MULTI(CFProxy,lpvtbl_proxy,iface); - - This->chanbuf = pRpcChannelBuffer; - IRpcChannelBuffer_AddRef(This->chanbuf); - return S_OK; -} -static void WINAPI IRpcProxyBufferImpl_Disconnect(LPRPCPROXYBUFFER iface) { - ICOM_THIS_MULTI(CFProxy,lpvtbl_proxy,iface); - if (This->chanbuf) { - IRpcChannelBuffer_Release(This->chanbuf); - This->chanbuf = NULL; - } -} - -static HRESULT WINAPI -CFProxy_QueryInterface(LPCLASSFACTORY iface,REFIID riid, LPVOID *ppv) { - ICOM_THIS_MULTI(CFProxy,lpvtbl_cf,iface); - if (This->outer_unknown) return IUnknown_QueryInterface(This->outer_unknown, riid, ppv); - *ppv = NULL; - if (IsEqualIID(&IID_IClassFactory,riid) || IsEqualIID(&IID_IUnknown,riid)) { - *ppv = (LPVOID)iface; - IClassFactory_AddRef(iface); - return S_OK; - } - if (IsEqualIID(riid,&IID_IMarshal)) /* just to avoid debug output */ - return E_NOINTERFACE; - FIXME("Unhandled interface: %s\n",debugstr_guid(riid)); - return E_NOINTERFACE; -} - -static ULONG WINAPI CFProxy_AddRef(LPCLASSFACTORY iface) { - ICOM_THIS_MULTI(CFProxy,lpvtbl_cf,iface); - if (This->outer_unknown) return IUnknown_AddRef(This->outer_unknown); - return InterlockedIncrement(&This->ref); -} - -static ULONG WINAPI CFProxy_Release(LPCLASSFACTORY iface) { - ICOM_THIS_MULTI(CFProxy,lpvtbl_cf,iface); - if (This->outer_unknown) - return IUnknown_Release(This->outer_unknown); - else - return IRpcProxyBufferImpl_Release((IRpcProxyBuffer *)&This->lpvtbl_proxy); -} - -static HRESULT WINAPI CFProxy_CreateInstance( - LPCLASSFACTORY iface, - LPUNKNOWN pUnkOuter,/* [in] */ - REFIID riid, /* [in] */ - LPVOID *ppv /* [out] */ -) { - ICOM_THIS_MULTI(CFProxy,lpvtbl_cf,iface); - HRESULT hres; - LPSTREAM pStream; - HGLOBAL hGlobal; - ULONG srstatus; - RPCOLEMESSAGE msg; - - TRACE("(%p,%s,%p)\n",pUnkOuter,debugstr_guid(riid),ppv); - - /* Send CreateInstance to the remote classfactory. - * - * Data: Only the 'IID'. - */ - memset(&msg, 0, sizeof(msg)); - msg.iMethod = 3; - msg.cbBuffer = sizeof(*riid); - hres = IRpcChannelBuffer_GetBuffer(This->chanbuf,&msg,&IID_IClassFactory); - if (hres) { - FIXME("IRpcChannelBuffer_GetBuffer failed with %x?\n",hres); - return hres; - } - memcpy(msg.Buffer,riid,sizeof(*riid)); - hres = IRpcChannelBuffer_SendReceive(This->chanbuf,&msg,&srstatus); - if (hres) { - FIXME("IRpcChannelBuffer_SendReceive failed with %x?\n",hres); - IRpcChannelBuffer_FreeBuffer(This->chanbuf,&msg); - return hres; - } - - if (!msg.cbBuffer) { /* interface not found on remote */ - IRpcChannelBuffer_FreeBuffer(This->chanbuf,&msg); - return srstatus; - } - - /* We got back: [Marshalled Interface data] */ - TRACE("got %d bytes data.\n",msg.cbBuffer); - hGlobal = GlobalAlloc(GMEM_MOVEABLE|GMEM_NODISCARD|GMEM_SHARE,msg.cbBuffer); - memcpy(GlobalLock(hGlobal),msg.Buffer,msg.cbBuffer); - hres = CreateStreamOnHGlobal(hGlobal,TRUE,&pStream); - if (hres != S_OK) { - FIXME("CreateStreamOnHGlobal failed with %x\n",hres); - IRpcChannelBuffer_FreeBuffer(This->chanbuf,&msg); - GlobalFree(hGlobal); - return hres; - } - hres = IStream_Read(pStream, ppv, sizeof(*ppv), NULL); - if (hres != S_OK) - hres = E_FAIL; - else if (*ppv) { - hres = CoUnmarshalInterface( - pStream, - riid, - ppv - ); - } - IStream_Release(pStream); /* Does GlobalFree hGlobal too. */ - - IRpcChannelBuffer_FreeBuffer(This->chanbuf,&msg); - - if (hres) { - FIXME("CoMarshalInterface failed, %x\n",hres); - return hres; - } - return S_OK; -} - -static HRESULT WINAPI CFProxy_LockServer(LPCLASSFACTORY iface,BOOL fLock) { - /*ICOM_THIS_MULTI(CFProxy,lpvtbl_cf,iface);*/ - FIXME("(%d), stub!\n",fLock); - /* basically: write BOOL, read empty */ - return S_OK; -} - -static const IRpcProxyBufferVtbl pspbvtbl = { - IRpcProxyBufferImpl_QueryInterface, - IRpcProxyBufferImpl_AddRef, - IRpcProxyBufferImpl_Release, - IRpcProxyBufferImpl_Connect, - IRpcProxyBufferImpl_Disconnect -}; -static const IClassFactoryVtbl cfproxyvt = { - CFProxy_QueryInterface, - CFProxy_AddRef, - CFProxy_Release, - CFProxy_CreateInstance, - CFProxy_LockServer -}; - -static HRESULT -CFProxy_Construct(IUnknown *pUnkOuter, LPVOID *ppv,LPVOID *ppProxy) { - CFProxy *cf; - - cf = HeapAlloc(GetProcessHeap(),HEAP_ZERO_MEMORY,sizeof(CFProxy)); - if (!cf) - return E_OUTOFMEMORY; - - cf->lpvtbl_cf = &cfproxyvt; - cf->lpvtbl_proxy = &pspbvtbl; - /* one reference for the proxy buffer */ - cf->ref = 1; - cf->outer_unknown = pUnkOuter; - *ppv = &(cf->lpvtbl_cf); - *ppProxy = &(cf->lpvtbl_proxy); - /* and one reference for the object */ - IUnknown_AddRef((IUnknown *)*ppv); - return S_OK; -} - - -/********************* IRemUnknown Proxy/Stub ********************************/ - -typedef struct -{ - const IRpcStubBufferVtbl *lpVtbl; - LONG refs; - IRemUnknown *iface; -} RemUnkStub; - -static HRESULT WINAPI RemUnkStub_QueryInterface(LPRPCSTUBBUFFER iface, - REFIID riid, - LPVOID *obj) -{ - RemUnkStub *This = (RemUnkStub *)iface; - TRACE("(%p)->QueryInterface(%s,%p)\n",This,debugstr_guid(riid),obj); - if (IsEqualGUID(&IID_IUnknown,riid) || - IsEqualGUID(&IID_IRpcStubBuffer,riid)) { - *obj = This; - return S_OK; - } - return E_NOINTERFACE; -} - -static ULONG WINAPI RemUnkStub_AddRef(LPRPCSTUBBUFFER iface) -{ - RemUnkStub *This = (RemUnkStub *)iface; - TRACE("(%p)->AddRef()\n",This); - return InterlockedIncrement(&This->refs); -} - -static ULONG WINAPI RemUnkStub_Release(LPRPCSTUBBUFFER iface) -{ - RemUnkStub *This = (RemUnkStub *)iface; - ULONG refs; - TRACE("(%p)->Release()\n",This); - refs = InterlockedDecrement(&This->refs); - if (!refs) - { - IRpcStubBuffer_Disconnect(iface); - HeapFree(GetProcessHeap(), 0, This); - } - return refs; -} - -static HRESULT WINAPI RemUnkStub_Connect(LPRPCSTUBBUFFER iface, - LPUNKNOWN lpUnkServer) -{ - RemUnkStub *This = (RemUnkStub *)iface; - TRACE("(%p)->Connect(%p)\n",This,lpUnkServer); - This->iface = (IRemUnknown*)lpUnkServer; - IRemUnknown_AddRef(This->iface); - return S_OK; -} - -static void WINAPI RemUnkStub_Disconnect(LPRPCSTUBBUFFER iface) -{ - RemUnkStub *This = (RemUnkStub *)iface; - TRACE("(%p)->Disconnect()\n",This); - IUnknown_Release(This->iface); - This->iface = NULL; -} - -static HRESULT WINAPI RemUnkStub_Invoke(LPRPCSTUBBUFFER iface, - PRPCOLEMESSAGE pMsg, - LPRPCCHANNELBUFFER pChannel) -{ - RemUnkStub *This = (RemUnkStub *)iface; - ULONG iMethod = pMsg->iMethod; - LPBYTE buf = pMsg->Buffer; - HRESULT hr = RPC_E_INVALIDMETHOD; - - TRACE("(%p)->Invoke(%p,%p) method %d\n", This, pMsg, pChannel, iMethod); - switch (iMethod) - { - case 3: /* RemQueryInterface */ - { - IPID ipid; - ULONG cRefs; - USHORT cIids; - IID *iids; - REMQIRESULT *pQIResults = NULL; - - /* in */ - memcpy(&ipid, buf, sizeof(ipid)); - buf += sizeof(ipid); - memcpy(&cRefs, buf, sizeof(cRefs)); - buf += sizeof(cRefs); - memcpy(&cIids, buf, sizeof(cIids)); - buf += sizeof(cIids); - iids = (IID *)buf; - - hr = IRemUnknown_RemQueryInterface(This->iface, &ipid, cRefs, cIids, iids, &pQIResults); - - /* out */ - pMsg->cbBuffer = cIids * sizeof(REMQIRESULT) + sizeof(HRESULT); - - IRpcChannelBuffer_GetBuffer(pChannel, pMsg, &IID_IRemUnknown); - - buf = pMsg->Buffer; - *(HRESULT *)buf = hr; - buf += sizeof(HRESULT); - - if (hr == S_OK) - /* FIXME: pQIResults is a unique pointer so pQIResults can be NULL! */ - memcpy(buf, pQIResults, cIids * sizeof(REMQIRESULT)); - - CoTaskMemFree(pQIResults); - - break; - } - case 4: /* RemAddRef */ - { - USHORT cIids; - REMINTERFACEREF *ir; - HRESULT *pResults; - - /* in */ - memcpy(&cIids, buf, sizeof(USHORT)); - buf += sizeof(USHORT); - ir = (REMINTERFACEREF*)buf; - pResults = CoTaskMemAlloc(cIids * sizeof(HRESULT)); - if (!pResults) return E_OUTOFMEMORY; - - hr = IRemUnknown_RemAddRef(This->iface, cIids, ir, pResults); - - /* out */ - pMsg->cbBuffer = cIids * sizeof(HRESULT); - - IRpcChannelBuffer_GetBuffer(pChannel, pMsg, &IID_IRemUnknown); - if (!hr) - { - buf = pMsg->Buffer; - memcpy(buf, pResults, cIids * sizeof(HRESULT)); - } - - CoTaskMemFree(pResults); - - break; - } - case 5: /* RemRelease */ - { - USHORT cIids; - REMINTERFACEREF *ir; - - /* in */ - memcpy(&cIids, buf, sizeof(USHORT)); - buf += sizeof(USHORT); - ir = (REMINTERFACEREF*)buf; - - hr = IRemUnknown_RemRelease(This->iface, cIids, ir); - - /* out */ - pMsg->cbBuffer = 0; - IRpcChannelBuffer_GetBuffer(pChannel, pMsg, &IID_IRemUnknown); - break; - } - } - return hr; -} - -static LPRPCSTUBBUFFER WINAPI RemUnkStub_IsIIDSupported(LPRPCSTUBBUFFER iface, - REFIID riid) -{ - RemUnkStub *This = (RemUnkStub *)iface; - TRACE("(%p)->IsIIDSupported(%s)\n", This, debugstr_guid(riid)); - return IsEqualGUID(&IID_IRemUnknown, riid) ? iface : NULL; -} - -static ULONG WINAPI RemUnkStub_CountRefs(LPRPCSTUBBUFFER iface) -{ - RemUnkStub *This = (RemUnkStub *)iface; - FIXME("(%p)->CountRefs()\n", This); - return 1; -} - -static HRESULT WINAPI RemUnkStub_DebugServerQueryInterface(LPRPCSTUBBUFFER iface, - LPVOID *ppv) -{ - RemUnkStub *This = (RemUnkStub *)iface; - FIXME("(%p)->DebugServerQueryInterface(%p)\n",This,ppv); - return E_NOINTERFACE; -} - -static void WINAPI RemUnkStub_DebugServerRelease(LPRPCSTUBBUFFER iface, - LPVOID pv) -{ - RemUnkStub *This = (RemUnkStub *)iface; - FIXME("(%p)->DebugServerRelease(%p)\n", This, pv); -} - -static const IRpcStubBufferVtbl RemUnkStub_VTable = -{ - RemUnkStub_QueryInterface, - RemUnkStub_AddRef, - RemUnkStub_Release, - RemUnkStub_Connect, - RemUnkStub_Disconnect, - RemUnkStub_Invoke, - RemUnkStub_IsIIDSupported, - RemUnkStub_CountRefs, - RemUnkStub_DebugServerQueryInterface, - RemUnkStub_DebugServerRelease -}; - -static HRESULT RemUnkStub_Construct(IRpcStubBuffer **ppStub) -{ - RemUnkStub *This = HeapAlloc(GetProcessHeap(), 0, sizeof(*This)); - if (!This) return E_OUTOFMEMORY; - This->lpVtbl = &RemUnkStub_VTable; - This->refs = 1; - This->iface = NULL; - *ppStub = (IRpcStubBuffer*)This; - return S_OK; -} - - -typedef struct _RemUnkProxy { - const IRemUnknownVtbl *lpvtbl_remunk; - const IRpcProxyBufferVtbl *lpvtbl_proxy; - LONG refs; - - IRpcChannelBuffer *chan; - IUnknown *outer_unknown; -} RemUnkProxy; - -static HRESULT WINAPI RemUnkProxy_QueryInterface(LPREMUNKNOWN iface, REFIID riid, void **ppv) -{ - RemUnkProxy *This = (RemUnkProxy *)iface; - if (This->outer_unknown) - return IUnknown_QueryInterface(This->outer_unknown, riid, ppv); - if (IsEqualIID(riid, &IID_IUnknown) || - IsEqualIID(riid, &IID_IRemUnknown)) - { - IRemUnknown_AddRef(iface); - *ppv = (LPVOID)iface; - return S_OK; - } - return E_NOINTERFACE; -} - -static ULONG WINAPI RemUnkProxy_AddRef(LPREMUNKNOWN iface) -{ - RemUnkProxy *This = (RemUnkProxy *)iface; - ULONG refs; - - TRACE("(%p)->AddRef()\n",This); - - if (This->outer_unknown) - refs = IUnknown_AddRef(This->outer_unknown); - else - refs = InterlockedIncrement(&This->refs); - return refs; -} - -static ULONG WINAPI RemUnkProxy_Release(LPREMUNKNOWN iface) -{ - RemUnkProxy *This = (RemUnkProxy *)iface; - - TRACE("(%p)->Release()\n",This); - if (This->outer_unknown) - return IUnknown_Release(This->outer_unknown); - else - return IRpcProxyBufferImpl_Release((IRpcProxyBuffer *)&This->lpvtbl_proxy); -} - -static HRESULT WINAPI RemUnkProxy_RemQueryInterface(LPREMUNKNOWN iface, - REFIPID ripid, - ULONG cRefs, - USHORT cIids, - IID* iids, - REMQIRESULT** ppQIResults) -{ - RemUnkProxy *This = (RemUnkProxy *)iface; - RPCOLEMESSAGE msg; - HRESULT hr = S_OK; - ULONG status; - - TRACE("(%p)->(%s,%d,%d,%p,%p)\n",This, - debugstr_guid(ripid),cRefs,cIids,iids,ppQIResults); - - *ppQIResults = NULL; - memset(&msg, 0, sizeof(msg)); - msg.iMethod = 3; - msg.cbBuffer = sizeof(IPID) + sizeof(ULONG) + - sizeof(USHORT) + cIids*sizeof(IID); - hr = IRpcChannelBuffer_GetBuffer(This->chan, &msg, &IID_IRemUnknown); - if (SUCCEEDED(hr)) { - LPBYTE buf = msg.Buffer; - memcpy(buf, ripid, sizeof(IPID)); - buf += sizeof(IPID); - memcpy(buf, &cRefs, sizeof(ULONG)); - buf += sizeof(ULONG); - memcpy(buf, &cIids, sizeof(USHORT)); - buf += sizeof(USHORT); - memcpy(buf, iids, cIids*sizeof(IID)); - - hr = IRpcChannelBuffer_SendReceive(This->chan, &msg, &status); - - buf = msg.Buffer; - - if (SUCCEEDED(hr)) { - hr = *(HRESULT *)buf; - buf += sizeof(HRESULT); - } - - if (SUCCEEDED(hr)) { - *ppQIResults = CoTaskMemAlloc(cIids*sizeof(REMQIRESULT)); - memcpy(*ppQIResults, buf, cIids*sizeof(REMQIRESULT)); - } - - IRpcChannelBuffer_FreeBuffer(This->chan, &msg); - } - - return hr; -} - -static HRESULT WINAPI RemUnkProxy_RemAddRef(LPREMUNKNOWN iface, - USHORT cInterfaceRefs, - REMINTERFACEREF* InterfaceRefs, - HRESULT* pResults) -{ - RemUnkProxy *This = (RemUnkProxy *)iface; - RPCOLEMESSAGE msg; - HRESULT hr = S_OK; - ULONG status; - - TRACE("(%p)->(%d,%p,%p)\n",This, - cInterfaceRefs,InterfaceRefs,pResults); - - memset(&msg, 0, sizeof(msg)); - msg.iMethod = 4; - msg.cbBuffer = sizeof(USHORT) + cInterfaceRefs*sizeof(REMINTERFACEREF); - hr = IRpcChannelBuffer_GetBuffer(This->chan, &msg, &IID_IRemUnknown); - if (SUCCEEDED(hr)) { - LPBYTE buf = msg.Buffer; - memcpy(buf, &cInterfaceRefs, sizeof(USHORT)); - buf += sizeof(USHORT); - memcpy(buf, InterfaceRefs, cInterfaceRefs*sizeof(REMINTERFACEREF)); - - hr = IRpcChannelBuffer_SendReceive(This->chan, &msg, &status); - - if (SUCCEEDED(hr)) { - buf = msg.Buffer; - memcpy(pResults, buf, cInterfaceRefs*sizeof(HRESULT)); - } - - IRpcChannelBuffer_FreeBuffer(This->chan, &msg); - } - - return hr; -} - -static HRESULT WINAPI RemUnkProxy_RemRelease(LPREMUNKNOWN iface, - USHORT cInterfaceRefs, - REMINTERFACEREF* InterfaceRefs) -{ - RemUnkProxy *This = (RemUnkProxy *)iface; - RPCOLEMESSAGE msg; - HRESULT hr = S_OK; - ULONG status; - - TRACE("(%p)->(%d,%p)\n",This, - cInterfaceRefs,InterfaceRefs); - - memset(&msg, 0, sizeof(msg)); - msg.iMethod = 5; - msg.cbBuffer = sizeof(USHORT) + cInterfaceRefs*sizeof(REMINTERFACEREF); - hr = IRpcChannelBuffer_GetBuffer(This->chan, &msg, &IID_IRemUnknown); - if (SUCCEEDED(hr)) { - LPBYTE buf = msg.Buffer; - memcpy(buf, &cInterfaceRefs, sizeof(USHORT)); - buf += sizeof(USHORT); - memcpy(buf, InterfaceRefs, cInterfaceRefs*sizeof(REMINTERFACEREF)); - - hr = IRpcChannelBuffer_SendReceive(This->chan, &msg, &status); - - IRpcChannelBuffer_FreeBuffer(This->chan, &msg); - } - - return hr; -} - -static const IRemUnknownVtbl RemUnkProxy_VTable = -{ - RemUnkProxy_QueryInterface, - RemUnkProxy_AddRef, - RemUnkProxy_Release, - RemUnkProxy_RemQueryInterface, - RemUnkProxy_RemAddRef, - RemUnkProxy_RemRelease -}; - - -static HRESULT WINAPI RURpcProxyBufferImpl_QueryInterface(LPRPCPROXYBUFFER iface,REFIID riid,LPVOID *ppv) { - *ppv = NULL; - if (IsEqualIID(riid,&IID_IRpcProxyBuffer)||IsEqualIID(riid,&IID_IUnknown)) { - IRpcProxyBuffer_AddRef(iface); - *ppv = (LPVOID)iface; - return S_OK; - } - FIXME("(%s), no interface.\n",debugstr_guid(riid)); - return E_NOINTERFACE; -} - -static ULONG WINAPI RURpcProxyBufferImpl_AddRef(LPRPCPROXYBUFFER iface) { - ICOM_THIS_MULTI(RemUnkProxy,lpvtbl_proxy,iface); - TRACE("%p, %d\n", iface, This->refs + 1); - return InterlockedIncrement(&This->refs); -} - -static ULONG WINAPI RURpcProxyBufferImpl_Release(LPRPCPROXYBUFFER iface) { - ICOM_THIS_MULTI(RemUnkProxy,lpvtbl_proxy,iface); - ULONG ref = InterlockedDecrement(&This->refs); - TRACE("%p, %d\n", iface, ref); - if (!ref) { - IRpcProxyBuffer_Disconnect(iface); - HeapFree(GetProcessHeap(),0,This); - } - return ref; -} - -static HRESULT WINAPI RURpcProxyBufferImpl_Connect(LPRPCPROXYBUFFER iface,IRpcChannelBuffer* pRpcChannelBuffer) { - ICOM_THIS_MULTI(RemUnkProxy,lpvtbl_proxy,iface); - - TRACE("%p, %p\n", iface, pRpcChannelBuffer); - This->chan = pRpcChannelBuffer; - IRpcChannelBuffer_AddRef(This->chan); - return S_OK; -} -static void WINAPI RURpcProxyBufferImpl_Disconnect(LPRPCPROXYBUFFER iface) { - ICOM_THIS_MULTI(RemUnkProxy,lpvtbl_proxy,iface); - TRACE("%p, %p\n", iface, This->chan); - if (This->chan) { - IRpcChannelBuffer_Release(This->chan); - This->chan = NULL; - } -} - - -static const IRpcProxyBufferVtbl RURpcProxyBuffer_VTable = { - RURpcProxyBufferImpl_QueryInterface, - RURpcProxyBufferImpl_AddRef, - RURpcProxyBufferImpl_Release, - RURpcProxyBufferImpl_Connect, - RURpcProxyBufferImpl_Disconnect -}; - -static HRESULT -RemUnkProxy_Construct(IUnknown *pUnkOuter, LPVOID *ppv,LPVOID *ppProxy) { - RemUnkProxy *This; - - This = HeapAlloc(GetProcessHeap(),HEAP_ZERO_MEMORY,sizeof(*This)); - if (!This) - return E_OUTOFMEMORY; - - This->lpvtbl_remunk = &RemUnkProxy_VTable; - This->lpvtbl_proxy = &RURpcProxyBuffer_VTable; - /* only one reference for the proxy buffer */ - This->refs = 1; - This->outer_unknown = pUnkOuter; - *ppv = &(This->lpvtbl_remunk); - *ppProxy = &(This->lpvtbl_proxy); - /* and one reference for the object */ - IUnknown_AddRef((IUnknown *)*ppv); - return S_OK; -} - - -/********************* OLE Proxy/Stub Factory ********************************/ -static HRESULT WINAPI -PSFacBuf_QueryInterface(LPPSFACTORYBUFFER iface, REFIID iid, LPVOID *ppv) { - if (IsEqualIID(iid,&IID_IPSFactoryBuffer)||IsEqualIID(iid,&IID_IUnknown)) { - *ppv = (LPVOID)iface; - /* No ref counting, static class */ - return S_OK; - } - FIXME("(%s) unknown IID?\n",debugstr_guid(iid)); - return E_NOINTERFACE; -} - -static ULONG WINAPI PSFacBuf_AddRef(LPPSFACTORYBUFFER iface) { return 2; } -static ULONG WINAPI PSFacBuf_Release(LPPSFACTORYBUFFER iface) { return 1; } - -static HRESULT WINAPI -PSFacBuf_CreateProxy( - LPPSFACTORYBUFFER iface, IUnknown* pUnkOuter, REFIID riid, - IRpcProxyBuffer **ppProxy, LPVOID *ppv -) { - if (IsEqualIID(&IID_IClassFactory,riid)) - return CFProxy_Construct(pUnkOuter, ppv,(LPVOID*)ppProxy); - else if (IsEqualIID(&IID_IRemUnknown,riid)) - return RemUnkProxy_Construct(pUnkOuter, ppv,(LPVOID*)ppProxy); - FIXME("proxying not implemented for (%s) yet!\n",debugstr_guid(riid)); - return E_FAIL; -} - -static HRESULT WINAPI -PSFacBuf_CreateStub( - LPPSFACTORYBUFFER iface, REFIID riid,IUnknown *pUnkServer, - IRpcStubBuffer** ppStub -) { - HRESULT hres; - - TRACE("(%s,%p,%p)\n",debugstr_guid(riid),pUnkServer,ppStub); - - if (IsEqualIID(&IID_IClassFactory, riid) || - IsEqualIID(&IID_IUnknown, riid) /* FIXME: fixup stub manager and remove this*/) { - hres = CFStub_Construct(ppStub); - if (!hres) - IRpcStubBuffer_Connect((*ppStub),pUnkServer); - return hres; - } else if (IsEqualIID(&IID_IRemUnknown,riid)) { - hres = RemUnkStub_Construct(ppStub); - if (!hres) - IRpcStubBuffer_Connect((*ppStub),pUnkServer); - return hres; - } - FIXME("stubbing not implemented for (%s) yet!\n",debugstr_guid(riid)); - return E_FAIL; -} - -static const IPSFactoryBufferVtbl psfacbufvtbl = { - PSFacBuf_QueryInterface, - PSFacBuf_AddRef, - PSFacBuf_Release, - PSFacBuf_CreateProxy, - PSFacBuf_CreateStub -}; - -/* This is the whole PSFactoryBuffer object, just the vtableptr */ -static const IPSFactoryBufferVtbl *lppsfac = &psfacbufvtbl;
/*********************************************************************** * DllGetClassObject [OLE32.@] @@ -994,8 +68,6 @@ HRESULT WINAPI DllGetClassObject(REFCLSID rclsid, REFIID iid,LPVOID *ppv) { *ppv = NULL; - if (IsEqualIID(rclsid, &CLSID_PSFactoryBuffer)) - return IPSFactoryBuffer_QueryInterface((IPSFactoryBuffer *)&lppsfac, iid, ppv); if (IsEqualIID(rclsid,&CLSID_DfMarshal)&&( IsEqualIID(iid,&IID_IClassFactory) || IsEqualIID(iid,&IID_IUnknown) @@ -1017,6 +89,6 @@ if (IsEqualCLSID(rclsid, &CLSID_PointerMoniker)) return PointerMonikerCF_Create(iid, ppv);
- FIXME("\n\tCLSID:\t%s,\n\tIID:\t%s\n",debugstr_guid(rclsid),debugstr_guid(iid)); - return CLASS_E_CLASSNOTAVAILABLE; + return NdrDllGetClassObject(rclsid, iid, ppv, OLE32_ProxyFileList, + &CLSID_PSFactoryBuffer, &PSFactoryBuffer); }
Modified: trunk/reactos/dll/win32/ole32/rpc.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/ole32/rpc.c?rev=3... ============================================================================== --- trunk/reactos/dll/win32/ole32/rpc.c [iso-8859-1] (original) +++ trunk/reactos/dll/win32/ole32/rpc.c [iso-8859-1] Sat Sep 13 13:49:51 2008 @@ -1584,7 +1584,7 @@ oxid_info->ipidRemUnknown.Data1 = 0xffffffff; oxid_info->ipidRemUnknown.Data2 = 0xffff; oxid_info->ipidRemUnknown.Data3 = 0xffff; - memcpy(&oxid_info->ipidRemUnknown.Data4, &oxid, sizeof(OXID)); + memcpy(oxid_info->ipidRemUnknown.Data4, &oxid, sizeof(OXID)); oxid_info->psa = NULL /* FIXME */;
return S_OK;
Modified: trunk/reactos/dll/win32/ole32/stg_prop.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/ole32/stg_prop.c?... ============================================================================== --- trunk/reactos/dll/win32/ole32/stg_prop.c [iso-8859-1] (original) +++ trunk/reactos/dll/win32/ole32/stg_prop.c [iso-8859-1] Sat Sep 13 13:49:51 2008 @@ -1717,7 +1717,7 @@ len = var->u.pclipdata->cbSize; StorageUtl_WriteDWord((LPBYTE)&cf_hdr[0], 0, len + 8); StorageUtl_WriteDWord((LPBYTE)&cf_hdr[1], 0, var->u.pclipdata->ulClipFmt); - hr = IStream_Write(This->stm, &cf_hdr, sizeof(cf_hdr), &count); + hr = IStream_Write(This->stm, cf_hdr, sizeof(cf_hdr), &count); if (FAILED(hr)) goto end; hr = IStream_Write(This->stm, &var->u.pclipdata->pClipData, len, &count);
Modified: trunk/reactos/dll/win32/ole32/storage32.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/ole32/storage32.c... ============================================================================== --- trunk/reactos/dll/win32/ole32/storage32.c [iso-8859-1] (original) +++ trunk/reactos/dll/win32/ole32/storage32.c [iso-8859-1] Sat Sep 13 13:49:51 2008 @@ -2100,7 +2100,6 @@ INT typeOfRelation) { StgProperty storeProperty; - HRESULT hr = S_OK; BOOL res = TRUE;
/* @@ -2162,12 +2161,12 @@ } }
- hr = StorageImpl_WriteProperty( + res = StorageImpl_WriteProperty( storage->base.ancestorStorage, storePropertyIndex, &storeProperty);
- if(! hr) + if(!res) { return E_FAIL; } @@ -3140,16 +3139,8 @@ /* * Make the bitwise arithmetic to get the size of the blocks in bytes. */ - if ((1 << 2) == 4) - { - This->bigBlockSize = 0x000000001 << (DWORD)This->bigBlockSizeBits; - This->smallBlockSize = 0x000000001 << (DWORD)This->smallBlockSizeBits; - } - else - { - This->bigBlockSize = 0x000000001 >> (DWORD)This->bigBlockSizeBits; - This->smallBlockSize = 0x000000001 >> (DWORD)This->smallBlockSizeBits; - } + This->bigBlockSize = 0x000000001 << (DWORD)This->bigBlockSizeBits; + This->smallBlockSize = 0x000000001 << (DWORD)This->smallBlockSizeBits;
/* * Right now, the code is making some assumptions about the size of the @@ -5736,13 +5727,16 @@ /* * Interpret the STGM value grfMode */ - shareMode = GetShareModeFromSTGM(grfMode); + shareMode = FILE_SHARE_READ | FILE_SHARE_WRITE; accessMode = GetAccessModeFromSTGM(grfMode);
if (grfMode & STGM_DELETEONRELEASE) fileAttributes = FILE_FLAG_RANDOM_ACCESS | FILE_FLAG_DELETE_ON_CLOSE; else fileAttributes = FILE_ATTRIBUTE_NORMAL | FILE_FLAG_RANDOM_ACCESS; + + if (STGM_SHARE_MODE(grfMode) && !(grfMode & STGM_SHARE_DENY_NONE)) + FIXME("Storage share mode not implemented.\n");
if (grfMode & STGM_TRANSACTED) FIXME("Transacted mode not implemented.\n"); @@ -7237,8 +7231,8 @@
/* Initialize the CompObj structure */ memset(&IStorageCompObj, 0, sizeof(IStorageCompObj)); - memcpy(&(IStorageCompObj.byUnknown1), pCompObjUnknown1, sizeof(pCompObjUnknown1)); - memcpy(&(IStorageCompObj.byUnknown2), pCompObjUnknown2, sizeof(pCompObjUnknown2)); + memcpy(IStorageCompObj.byUnknown1, pCompObjUnknown1, sizeof(pCompObjUnknown1)); + memcpy(IStorageCompObj.byUnknown2, pCompObjUnknown2, sizeof(pCompObjUnknown2));
/* Create a CompObj stream if it doesn't exist */
Modified: trunk/reactos/dll/win32/ole32/stubmanager.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/ole32/stubmanager... ============================================================================== --- trunk/reactos/dll/win32/ole32/stubmanager.c [iso-8859-1] (original) +++ trunk/reactos/dll/win32/ole32/stubmanager.c [iso-8859-1] Sat Sep 13 13:49:51 2008 @@ -84,7 +84,7 @@ sm->oxid_info.ipidRemUnknown.Data2 = 0xffff; sm->oxid_info.ipidRemUnknown.Data3 = 0xffff; assert(sizeof(sm->oxid_info.ipidRemUnknown.Data4) == sizeof(apt->oxid)); - memcpy(&sm->oxid_info.ipidRemUnknown.Data4, &apt->oxid, sizeof(OXID)); + memcpy(sm->oxid_info.ipidRemUnknown.Data4, &apt->oxid, sizeof(OXID)); sm->oxid_info.dwAuthnHint = RPC_C_AUTHN_LEVEL_NONE; sm->oxid_info.psa = NULL /* FIXME */;
Modified: trunk/reactos/dll/win32/ole32/usrmarshal.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/ole32/usrmarshal.... ============================================================================== --- trunk/reactos/dll/win32/ole32/usrmarshal.c [iso-8859-1] (original) +++ trunk/reactos/dll/win32/ole32/usrmarshal.c [iso-8859-1] Sat Sep 13 13:49:51 2008 @@ -1957,3 +1957,802 @@ { FIXME(":stub\n"); } + +/* call_as/local stubs for unknwn.idl */ + +HRESULT CALLBACK IClassFactory_CreateInstance_Proxy( + IClassFactory* This, + IUnknown *pUnkOuter, + REFIID riid, + void **ppvObject) +{ + TRACE("(%p, %s, %p)\n", pUnkOuter, debugstr_guid(riid), ppvObject); + *ppvObject = NULL; + if (pUnkOuter) + { + ERR("aggregation is not allowed on remote objects\n"); + return CLASS_E_NOAGGREGATION; + } + return IClassFactory_RemoteCreateInstance_Proxy(This, riid, + (IUnknown **) ppvObject); +} + +HRESULT __RPC_STUB IClassFactory_CreateInstance_Stub( + IClassFactory* This, + REFIID riid, + IUnknown **ppvObject) +{ + TRACE("(%s, %p)\n", debugstr_guid(riid), ppvObject); + return IClassFactory_CreateInstance(This, NULL, riid, (void **) ppvObject); +} + +HRESULT CALLBACK IClassFactory_LockServer_Proxy( + IClassFactory* This, + BOOL fLock) +{ + FIXME(":stub\n"); + return E_NOTIMPL; +} + +HRESULT __RPC_STUB IClassFactory_LockServer_Stub( + IClassFactory* This, + BOOL fLock) +{ + FIXME(":stub\n"); + return E_NOTIMPL; +} + +/* call_as/local stubs for objidl.idl */ + +HRESULT CALLBACK IEnumUnknown_Next_Proxy( + IEnumUnknown* This, + ULONG celt, + IUnknown **rgelt, + ULONG *pceltFetched) +{ + FIXME(":stub\n"); + return E_NOTIMPL; +} + +HRESULT __RPC_STUB IEnumUnknown_Next_Stub( + IEnumUnknown* This, + ULONG celt, + IUnknown **rgelt, + ULONG *pceltFetched) +{ + FIXME(":stub\n"); + return E_NOTIMPL; +} + +HRESULT CALLBACK IBindCtx_SetBindOptions_Proxy( + IBindCtx* This, + BIND_OPTS *pbindopts) +{ + FIXME(":stub\n"); + return E_NOTIMPL; +} + +HRESULT __RPC_STUB IBindCtx_SetBindOptions_Stub( + IBindCtx* This, + BIND_OPTS2 *pbindopts) +{ + FIXME(":stub\n"); + return E_NOTIMPL; +} + +HRESULT CALLBACK IBindCtx_GetBindOptions_Proxy( + IBindCtx* This, + BIND_OPTS *pbindopts) +{ + FIXME(":stub\n"); + return E_NOTIMPL; +} + +HRESULT __RPC_STUB IBindCtx_GetBindOptions_Stub( + IBindCtx* This, + BIND_OPTS2 *pbindopts) +{ + FIXME(":stub\n"); + return E_NOTIMPL; +} + +HRESULT CALLBACK IEnumMoniker_Next_Proxy( + IEnumMoniker* This, + ULONG celt, + IMoniker **rgelt, + ULONG *pceltFetched) +{ + FIXME(":stub\n"); + return E_NOTIMPL; +} + +HRESULT __RPC_STUB IEnumMoniker_Next_Stub( + IEnumMoniker* This, + ULONG celt, + IMoniker **rgelt, + ULONG *pceltFetched) +{ + FIXME(":stub\n"); + return E_NOTIMPL; +} + +BOOL CALLBACK IRunnableObject_IsRunning_Proxy( + IRunnableObject* This) +{ + BOOL rv; + FIXME(":stub\n"); + memset(&rv, 0, sizeof rv); + return rv; +} + +HRESULT __RPC_STUB IRunnableObject_IsRunning_Stub( + IRunnableObject* This) +{ + FIXME(":stub\n"); + return E_NOTIMPL; +} + +HRESULT CALLBACK IMoniker_BindToObject_Proxy( + IMoniker* This, + IBindCtx *pbc, + IMoniker *pmkToLeft, + REFIID riidResult, + void **ppvResult) +{ + FIXME(":stub\n"); + return E_NOTIMPL; +} + +HRESULT __RPC_STUB IMoniker_BindToObject_Stub( + IMoniker* This, + IBindCtx *pbc, + IMoniker *pmkToLeft, + REFIID riidResult, + IUnknown **ppvResult) +{ + FIXME(":stub\n"); + return E_NOTIMPL; +} + +HRESULT CALLBACK IMoniker_BindToStorage_Proxy( + IMoniker* This, + IBindCtx *pbc, + IMoniker *pmkToLeft, + REFIID riid, + void **ppvObj) +{ + FIXME(":stub\n"); + return E_NOTIMPL; +} + +HRESULT __RPC_STUB IMoniker_BindToStorage_Stub( + IMoniker* This, + IBindCtx *pbc, + IMoniker *pmkToLeft, + REFIID riid, + IUnknown **ppvObj) +{ + FIXME(":stub\n"); + return E_NOTIMPL; +} + +HRESULT CALLBACK IEnumString_Next_Proxy( + IEnumString* This, + ULONG celt, + LPOLESTR *rgelt, + ULONG *pceltFetched) +{ + FIXME(":stub\n"); + return E_NOTIMPL; +} + +HRESULT __RPC_STUB IEnumString_Next_Stub( + IEnumString* This, + ULONG celt, + LPOLESTR *rgelt, + ULONG *pceltFetched) +{ + FIXME(":stub\n"); + return E_NOTIMPL; +} + +HRESULT CALLBACK ISequentialStream_Read_Proxy( + ISequentialStream* This, + void *pv, + ULONG cb, + ULONG *pcbRead) +{ + FIXME(":stub\n"); + return E_NOTIMPL; +} + +HRESULT __RPC_STUB ISequentialStream_Read_Stub( + ISequentialStream* This, + byte *pv, + ULONG cb, + ULONG *pcbRead) +{ + FIXME(":stub\n"); + return E_NOTIMPL; +} + +HRESULT CALLBACK ISequentialStream_Write_Proxy( + ISequentialStream* This, + const void *pv, + ULONG cb, + ULONG *pcbWritten) +{ + FIXME(":stub\n"); + return E_NOTIMPL; +} + +HRESULT __RPC_STUB ISequentialStream_Write_Stub( + ISequentialStream* This, + const byte *pv, + ULONG cb, + ULONG *pcbWritten) +{ + FIXME(":stub\n"); + return E_NOTIMPL; +} + +HRESULT CALLBACK IStream_Seek_Proxy( + IStream* This, + LARGE_INTEGER dlibMove, + DWORD dwOrigin, + ULARGE_INTEGER *plibNewPosition) +{ + FIXME(":stub\n"); + return E_NOTIMPL; +} + +HRESULT __RPC_STUB IStream_Seek_Stub( + IStream* This, + LARGE_INTEGER dlibMove, + DWORD dwOrigin, + ULARGE_INTEGER *plibNewPosition) +{ + FIXME(":stub\n"); + return E_NOTIMPL; +} + +HRESULT CALLBACK IStream_CopyTo_Proxy( + IStream* This, + IStream *pstm, + ULARGE_INTEGER cb, + ULARGE_INTEGER *pcbRead, + ULARGE_INTEGER *pcbWritten) +{ + FIXME(":stub\n"); + return E_NOTIMPL; +} + +HRESULT __RPC_STUB IStream_CopyTo_Stub( + IStream* This, + IStream *pstm, + ULARGE_INTEGER cb, + ULARGE_INTEGER *pcbRead, + ULARGE_INTEGER *pcbWritten) +{ + FIXME(":stub\n"); + return E_NOTIMPL; +} + +HRESULT CALLBACK IEnumSTATSTG_Next_Proxy( + IEnumSTATSTG* This, + ULONG celt, + STATSTG *rgelt, + ULONG *pceltFetched) +{ + FIXME(":stub\n"); + return E_NOTIMPL; +} + +HRESULT __RPC_STUB IEnumSTATSTG_Next_Stub( + IEnumSTATSTG* This, + ULONG celt, + STATSTG *rgelt, + ULONG *pceltFetched) +{ + FIXME(":stub\n"); + return E_NOTIMPL; +} + +HRESULT CALLBACK IStorage_OpenStream_Proxy( + IStorage* This, + LPCOLESTR pwcsName, + void *reserved1, + DWORD grfMode, + DWORD reserved2, + IStream **ppstm) +{ + FIXME(":stub\n"); + return E_NOTIMPL; +} + +HRESULT __RPC_STUB IStorage_OpenStream_Stub( + IStorage* This, + LPCOLESTR pwcsName, + unsigned long cbReserved1, + byte *reserved1, + DWORD grfMode, + DWORD reserved2, + IStream **ppstm) +{ + FIXME(":stub\n"); + return E_NOTIMPL; +} + +HRESULT CALLBACK IStorage_EnumElements_Proxy( + IStorage* This, + DWORD reserved1, + void *reserved2, + DWORD reserved3, + IEnumSTATSTG **ppenum) +{ + FIXME(":stub\n"); + return E_NOTIMPL; +} + +HRESULT __RPC_STUB IStorage_EnumElements_Stub( + IStorage* This, + DWORD reserved1, + unsigned long cbReserved2, + byte *reserved2, + DWORD reserved3, + IEnumSTATSTG **ppenum) +{ + FIXME(":stub\n"); + return E_NOTIMPL; +} + +HRESULT CALLBACK ILockBytes_ReadAt_Proxy( + ILockBytes* This, + ULARGE_INTEGER ulOffset, + void *pv, + ULONG cb, + ULONG *pcbRead) +{ + FIXME(":stub\n"); + return E_NOTIMPL; +} + +HRESULT __RPC_STUB ILockBytes_ReadAt_Stub( + ILockBytes* This, + ULARGE_INTEGER ulOffset, + byte *pv, + ULONG cb, + ULONG *pcbRead) +{ + FIXME(":stub\n"); + return E_NOTIMPL; +} + +HRESULT CALLBACK ILockBytes_WriteAt_Proxy( + ILockBytes* This, + ULARGE_INTEGER ulOffset, + const void *pv, + ULONG cb, + ULONG *pcbWritten) +{ + FIXME(":stub\n"); + return E_NOTIMPL; +} + +HRESULT __RPC_STUB ILockBytes_WriteAt_Stub( + ILockBytes* This, + ULARGE_INTEGER ulOffset, + const byte *pv, + ULONG cb, + ULONG *pcbWritten) +{ + FIXME(":stub\n"); + return E_NOTIMPL; +} + +HRESULT CALLBACK IFillLockBytes_FillAppend_Proxy( + IFillLockBytes* This, + const void *pv, + ULONG cb, + ULONG *pcbWritten) +{ + FIXME(":stub\n"); + return E_NOTIMPL; +} + +HRESULT __RPC_STUB IFillLockBytes_FillAppend_Stub( + IFillLockBytes* This, + const byte *pv, + ULONG cb, + ULONG *pcbWritten) +{ + FIXME(":stub\n"); + return E_NOTIMPL; +} + +HRESULT CALLBACK IFillLockBytes_FillAt_Proxy( + IFillLockBytes* This, + ULARGE_INTEGER ulOffset, + const void *pv, + ULONG cb, + ULONG *pcbWritten) +{ + FIXME(":stub\n"); + return E_NOTIMPL; +} + +HRESULT __RPC_STUB IFillLockBytes_FillAt_Stub( + IFillLockBytes* This, + ULARGE_INTEGER ulOffset, + const byte *pv, + ULONG cb, + ULONG *pcbWritten) +{ + FIXME(":stub\n"); + return E_NOTIMPL; +} + +HRESULT CALLBACK IEnumFORMATETC_Next_Proxy( + IEnumFORMATETC* This, + ULONG celt, + FORMATETC *rgelt, + ULONG *pceltFetched) +{ + FIXME(":stub\n"); + return E_NOTIMPL; +} + +HRESULT __RPC_STUB IEnumFORMATETC_Next_Stub( + IEnumFORMATETC* This, + ULONG celt, + FORMATETC *rgelt, + ULONG *pceltFetched) +{ + FIXME(":stub\n"); + return E_NOTIMPL; +} + +HRESULT CALLBACK IEnumSTATDATA_Next_Proxy( + IEnumSTATDATA* This, + ULONG celt, + STATDATA *rgelt, + ULONG *pceltFetched) +{ + FIXME(":stub\n"); + return E_NOTIMPL; +} + +HRESULT __RPC_STUB IEnumSTATDATA_Next_Stub( + IEnumSTATDATA* This, + ULONG celt, + STATDATA *rgelt, + ULONG *pceltFetched) +{ + FIXME(":stub\n"); + return E_NOTIMPL; +} + +void CALLBACK IAdviseSink_OnDataChange_Proxy( + IAdviseSink* This, + FORMATETC *pFormatetc, + STGMEDIUM *pStgmed) +{ + FIXME(":stub\n"); +} + +HRESULT __RPC_STUB IAdviseSink_OnDataChange_Stub( + IAdviseSink* This, + FORMATETC *pFormatetc, + ASYNC_STGMEDIUM *pStgmed) +{ + FIXME(":stub\n"); + return E_NOTIMPL; +} + +void CALLBACK IAdviseSink_OnViewChange_Proxy( + IAdviseSink* This, + DWORD dwAspect, + LONG lindex) +{ + FIXME(":stub\n"); +} + +HRESULT __RPC_STUB IAdviseSink_OnViewChange_Stub( + IAdviseSink* This, + DWORD dwAspect, + LONG lindex) +{ + FIXME(":stub\n"); + return E_NOTIMPL; +} + +void CALLBACK IAdviseSink_OnRename_Proxy( + IAdviseSink* This, + IMoniker *pmk) +{ + FIXME(":stub\n"); +} + +HRESULT __RPC_STUB IAdviseSink_OnRename_Stub( + IAdviseSink* This, + IMoniker *pmk) +{ + FIXME(":stub\n"); + return E_NOTIMPL; +} + +void CALLBACK IAdviseSink_OnSave_Proxy( + IAdviseSink* This) +{ + FIXME(":stub\n"); +} + +HRESULT __RPC_STUB IAdviseSink_OnSave_Stub( + IAdviseSink* This) +{ + FIXME(":stub\n"); + return E_NOTIMPL; +} + +void CALLBACK IAdviseSink_OnClose_Proxy( + IAdviseSink* This) +{ + FIXME(":stub\n"); +} + +HRESULT __RPC_STUB IAdviseSink_OnClose_Stub( + IAdviseSink* This) +{ + FIXME(":stub\n"); + return E_NOTIMPL; +} + +void CALLBACK IAdviseSink2_OnLinkSrcChange_Proxy( + IAdviseSink2* This, + IMoniker *pmk) +{ + FIXME(":stub\n"); +} + +HRESULT __RPC_STUB IAdviseSink2_OnLinkSrcChange_Stub( + IAdviseSink2* This, + IMoniker *pmk) +{ + FIXME(":stub\n"); + return E_NOTIMPL; +} + +HRESULT CALLBACK IDataObject_GetData_Proxy( + IDataObject* This, + FORMATETC *pformatetcIn, + STGMEDIUM *pmedium) +{ + FIXME(":stub\n"); + return E_NOTIMPL; +} + +HRESULT __RPC_STUB IDataObject_GetData_Stub( + IDataObject* This, + FORMATETC *pformatetcIn, + STGMEDIUM *pRemoteMedium) +{ + FIXME(":stub\n"); + return E_NOTIMPL; +} + +HRESULT CALLBACK IDataObject_GetDataHere_Proxy( + IDataObject* This, + FORMATETC *pformatetc, + STGMEDIUM *pmedium) +{ + FIXME(":stub\n"); + return E_NOTIMPL; +} + +HRESULT __RPC_STUB IDataObject_GetDataHere_Stub( + IDataObject* This, + FORMATETC *pformatetc, + STGMEDIUM *pRemoteMedium) +{ + FIXME(":stub\n"); + return E_NOTIMPL; +} + +HRESULT CALLBACK IDataObject_SetData_Proxy( + IDataObject* This, + FORMATETC *pformatetc, + STGMEDIUM *pmedium, + BOOL fRelease) +{ + FIXME(":stub\n"); + return E_NOTIMPL; +} + +HRESULT __RPC_STUB IDataObject_SetData_Stub( + IDataObject* This, + FORMATETC *pformatetc, + FLAG_STGMEDIUM *pmedium, + BOOL fRelease) +{ + FIXME(":stub\n"); + return E_NOTIMPL; +} + +/* call_as/local stubs for oleidl.idl */ + +HRESULT CALLBACK IOleInPlaceActiveObject_TranslateAccelerator_Proxy( + IOleInPlaceActiveObject* This, + LPMSG lpmsg) +{ + FIXME(":stub\n"); + return E_NOTIMPL; +} + +HRESULT __RPC_STUB IOleInPlaceActiveObject_TranslateAccelerator_Stub( + IOleInPlaceActiveObject* This) +{ + FIXME(":stub\n"); + return E_NOTIMPL; +} + +HRESULT CALLBACK IOleInPlaceActiveObject_ResizeBorder_Proxy( + IOleInPlaceActiveObject* This, + LPCRECT prcBorder, + IOleInPlaceUIWindow *pUIWindow, + BOOL fFrameWindow) +{ + FIXME(":stub\n"); + return E_NOTIMPL; +} + +HRESULT __RPC_STUB IOleInPlaceActiveObject_ResizeBorder_Stub( + IOleInPlaceActiveObject* This, + LPCRECT prcBorder, + REFIID riid, + IOleInPlaceUIWindow *pUIWindow, + BOOL fFrameWindow) +{ + FIXME(":stub\n"); + return E_NOTIMPL; +} + +HRESULT CALLBACK IOleCache2_UpdateCache_Proxy( + IOleCache2* This, + LPDATAOBJECT pDataObject, + DWORD grfUpdf, + LPVOID pReserved) +{ + FIXME(":stub\n"); + return E_NOTIMPL; +} + +HRESULT __RPC_STUB IOleCache2_UpdateCache_Stub( + IOleCache2* This, + LPDATAOBJECT pDataObject, + DWORD grfUpdf, + LONG_PTR pReserved) +{ + FIXME(":stub\n"); + return E_NOTIMPL; +} + +HRESULT CALLBACK IEnumOLEVERB_Next_Proxy( + IEnumOLEVERB* This, + ULONG celt, + LPOLEVERB rgelt, + ULONG *pceltFetched) +{ + FIXME(":stub\n"); + return E_NOTIMPL; +} + +HRESULT __RPC_STUB IEnumOLEVERB_Next_Stub( + IEnumOLEVERB* This, + ULONG celt, + LPOLEVERB rgelt, + ULONG *pceltFetched) +{ + FIXME(":stub\n"); + return E_NOTIMPL; +} + +HRESULT CALLBACK IViewObject_Draw_Proxy( + IViewObject* This, + DWORD dwDrawAspect, + LONG lindex, + void *pvAspect, + DVTARGETDEVICE *ptd, + HDC hdcTargetDev, + HDC hdcDraw, + LPCRECTL lprcBounds, + LPCRECTL lprcWBounds, + BOOL (STDMETHODCALLTYPE *pfnContinue)(ULONG_PTR dwContinue), + ULONG_PTR dwContinue) +{ + FIXME(":stub\n"); + return E_NOTIMPL; +} + +HRESULT __RPC_STUB IViewObject_Draw_Stub( + IViewObject* This, + DWORD dwDrawAspect, + LONG lindex, + ULONG_PTR pvAspect, + DVTARGETDEVICE *ptd, + ULONG_PTR hdcTargetDev, + ULONG_PTR hdcDraw, + LPCRECTL lprcBounds, + LPCRECTL lprcWBounds, + IContinue *pContinue) +{ + FIXME(":stub\n"); + return E_NOTIMPL; +} + +HRESULT CALLBACK IViewObject_GetColorSet_Proxy( + IViewObject* This, + DWORD dwDrawAspect, + LONG lindex, + void *pvAspect, + DVTARGETDEVICE *ptd, + HDC hicTargetDev, + LOGPALETTE **ppColorSet) +{ + FIXME(":stub\n"); + return E_NOTIMPL; +} + +HRESULT __RPC_STUB IViewObject_GetColorSet_Stub( + IViewObject* This, + DWORD dwDrawAspect, + LONG lindex, + ULONG_PTR pvAspect, + DVTARGETDEVICE *ptd, + ULONG_PTR hicTargetDev, + LOGPALETTE **ppColorSet) +{ + FIXME(":stub\n"); + return E_NOTIMPL; +} + +HRESULT CALLBACK IViewObject_Freeze_Proxy( + IViewObject* This, + DWORD dwDrawAspect, + LONG lindex, + void *pvAspect, + DWORD *pdwFreeze) +{ + FIXME(":stub\n"); + return E_NOTIMPL; +} + +HRESULT __RPC_STUB IViewObject_Freeze_Stub( + IViewObject* This, + DWORD dwDrawAspect, + LONG lindex, + ULONG_PTR pvAspect, + DWORD *pdwFreeze) +{ + FIXME(":stub\n"); + return E_NOTIMPL; +} + +HRESULT CALLBACK IViewObject_GetAdvise_Proxy( + IViewObject* This, + DWORD *pAspects, + DWORD *pAdvf, + IAdviseSink **ppAdvSink) +{ + FIXME(":stub\n"); + return E_NOTIMPL; +} + +HRESULT __RPC_STUB IViewObject_GetAdvise_Stub( + IViewObject* This, + DWORD *pAspects, + DWORD *pAdvf, + IAdviseSink **ppAdvSink) +{ + FIXME(":stub\n"); + return E_NOTIMPL; +}
Modified: trunk/reactos/include/psdk/comcat.idl URL: http://svn.reactos.org/svn/reactos/trunk/reactos/include/psdk/comcat.idl?rev... ============================================================================== --- trunk/reactos/include/psdk/comcat.idl [iso-8859-1] (original) +++ trunk/reactos/include/psdk/comcat.idl [iso-8859-1] Sat Sep 13 13:49:51 2008 @@ -17,7 +17,9 @@ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA */
+#ifndef DO_NO_IMPORTS import "unknwn.idl"; +#endif
/***************************************************************************** * Types
Modified: trunk/reactos/include/psdk/dispex.idl URL: http://svn.reactos.org/svn/reactos/trunk/reactos/include/psdk/dispex.idl?rev... ============================================================================== --- trunk/reactos/include/psdk/dispex.idl [iso-8859-1] (original) +++ trunk/reactos/include/psdk/dispex.idl [iso-8859-1] Sat Sep 13 13:49:51 2008 @@ -16,10 +16,12 @@ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA */
+#ifndef DO_NO_IMPORTS import "ocidl.idl"; import "oleidl.idl"; import "oaidl.idl"; import "servprov.idl"; +#endif
cpp_quote("#define fdexNameCaseSensitive 0x00000001L") cpp_quote("#define fdexNameEnsure 0x00000002L") @@ -171,6 +173,18 @@ ] interface IObjectIdentity : IUnknown { - HRESULT IsEqualObject( + HRESULT IsEqualObject( [in] IUnknown *punk); } + +[ + object, + uuid(c5598e60-b307-11d1-b27d-006008c3fbfb), + pointer_default(unique) +] +interface ICanHandleException : IUnknown +{ + HRESULT CanHandleException( + [in] EXCEPINFO *pExcepInfo, + [in] VARIANT *pvar); +}
Modified: trunk/reactos/include/psdk/mlang.idl URL: http://svn.reactos.org/svn/reactos/trunk/reactos/include/psdk/mlang.idl?rev=... ============================================================================== --- trunk/reactos/include/psdk/mlang.idl [iso-8859-1] (original) +++ trunk/reactos/include/psdk/mlang.idl [iso-8859-1] Sat Sep 13 13:49:51 2008 @@ -16,7 +16,9 @@ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA */
+#ifndef DO_NO_IMPORTS import "unknwn.idl"; +#endif
interface IStream;
@@ -32,19 +34,19 @@ ] interface IMLangCodePages : IUnknown { - HRESULT GetCharCodePages( + HRESULT GetCharCodePages( [in] WCHAR chSrc, DWORD *pdwCodePages); - HRESULT GetStrCodePages( + HRESULT GetStrCodePages( [in, size_is(cchSrc)] const WCHAR *pszSrc, [in] long cchSrc, [in] DWORD dwPriorityCodePages, [out] DWORD *pdwCodePages, [out] long *pcchCodePages); - HRESULT CodePageToCodePages( + HRESULT CodePageToCodePages( [in] UINT uCodePage, [out] DWORD *pdwCodePages); - HRESULT CodePagesToCodePage( + HRESULT CodePagesToCodePage( [in] DWORD dwCodePages, [in] UINT uDefaultCodePage, [out] UINT *puCodePage); @@ -62,13 +64,13 @@ [in] HFONT hFont, [out] DWORD *pdwCodePages );
- HRESULT MapFont( + HRESULT MapFont( [in] HDC hDC, [in] DWORD dwCodePages, [in] HFONT hSrcFont, [out] HFONT *phDestFont);
- HRESULT ReleaseFont( + HRESULT ReleaseFont( [in] HFONT hFont);
HRESULT ResetFontMapping(); @@ -158,18 +160,153 @@ WCHAR wszProportionalFont[MAX_MIMEFACE_NAME]; } SCRIPTINFO, *PSCRIPTINFO;
- HRESULT Clone( + HRESULT Clone( [out] IEnumScript **ppEnum);
- HRESULT Next( + HRESULT Next( [in] ULONG celt, [out] PSCRIPTINFO rgelt, [out] ULONG *pceltFetched);
HRESULT Reset();
- HRESULT Skip( + HRESULT Skip( [in] ULONG celt); +} + +[ + object, + uuid(dccfc162-2b38-11d2-b7ec-00c04f8f5d9a), + pointer_default(unique) +] +interface IMLangFontLink2 : IMLangCodePages +{ + typedef struct tagUNICODERANGE + { + WCHAR wcFrom; + WCHAR wcTo; + } UNICODERANGE; + + typedef [unique] IMLangFontLink2 *PMLANGFONTLINK2; + + HRESULT GetFontCodePages( + [in] HDC hDC, + [in] HFONT hFont, + [out] DWORD *pdwCodePages ); + + HRESULT ReleaseFont( + [in] HFONT hFont); + + HRESULT ResetFontMapping(); + + HRESULT MapFont( + [in] HDC hDC, + [in] DWORD dwCodePages, + [in] WCHAR chSrc, + [out] HFONT *pFont); + + HRESULT GetFontUnicodeRanges( + [in] HDC hDC, + [in,out] UINT *puiRanges, + [out] UNICODERANGE* pUranges); + + HRESULT GetScriptFontInfo( + [in] SCRIPT_ID sid, + [in] DWORD dwFlags, + [in,out] UINT *puiFonts, + [out] SCRIPTFONTINFO* pScriptFont); + + HRESULT CodePageToScriptID( + [in] UINT uiCodePage, + [out] SCRIPT_ID *pSid); +} + +[ + object, + uuid(c04d65ce-b70d-11d0-b188-00aa0038c969), + pointer_default(unique) +] +interface IMLangString : IUnknown +{ +#ifdef NEWMLSTR + HRESULT LockMLStr( + [in] long lPos, + [in] DWORD dwFlags, + [out] DWORD* pdwCookie, + [out] long* plActualPos, + [out] long* plActualLen); + + HRESULT UnlockMLStr( + [in] DWORD dwCookie); +#else + HRESULT Sync( + [in] BOOL fNoAccess); +#endif + HRESULT GetLength( + [out, retval] long* plLen); + HRESULT SetMLStr( + [in] long lDestPos, + [in] long lDestLen, + [in] IUnknown *pSrcMLStr, + [in] long lSrcPos, + [in] long lSrcLen); +#ifdef NEWMLSTR + HRESULT RegisterAttr( + [in] IUnknown *pUnk, + [out] DWORD* pdwCookie); + HRESULT UnregisterAttr( + [in] DWORD dwCookie); + HRESULT EnumAttr( + [out] IEnumUnknown **ppEnumUnk); + HRESULT FindAttr( + [in] REFIID riid, + [in] LPARAM lParam, + [out] IUnknown **ppUnk); +#else + HRESULT GetMLStr( + [in] long lSrcPos, + [in] long lSrcLen, + [in] IUnknown *pUnkOuter, + [in] DWORD dwClsContext, + [in] const IID* piid, + [out] IUnknown** ppDestMLStr, + [out] long* plDestPos, + [out] long* plDestLen); +#endif +} + +[ + object, + uuid(f5be2ee1-bfd7-11d0-b188-00aa0038c969), + pointer_default(unique) +] +interface IMLangLineBreakConsole : IUnknown +{ + HRESULT BreakLineML( + [in] IMLangString* pSrcMLStr, + [in] long lSrcPos, + [in] long lSrcLen, + [in] long cMinColumns, + [in] long cMaxColumns, + [out] long* plLineLen, + [out] long* plSkipLen); + + HRESULT BreakLineW( + [in] LCID locale, + [in, size_is(cchSrc)] const WCHAR* pszSrc, + [in] long cchSrc, + [in] long cMaxColumns, + [out] long* pcchLine, + [out] long* pcchSkip ); + + HRESULT BreakLineA( + [in] LCID locale, + [in] UINT uCodePage, + [in, size_is(cchSrc)] const CHAR* pszSrc, + [in] long cchSrc, + [in] long cMaxColumns, + [out] long* pcchLine, + [out] long* pcchSkip); }
[ @@ -219,17 +356,17 @@ WCHAR wszCharset[MAX_MIMECSET_NAME]; } MIMECSETINFO, *PMIMECSETINFO;
- HRESULT Clone( + HRESULT Clone( [out] IEnumCodePage **ppEnum);
- HRESULT Next( + HRESULT Next( [in] ULONG celt, [out] PMIMECPINFO rgelt, [out] ULONG *pceltFetched);
HRESULT Reset();
- HRESULT Skip( + HRESULT Skip( [in] ULONG celt); }
@@ -240,33 +377,33 @@ ] interface IMLangConvertCharset : IUnknown { - HRESULT Initialize( + HRESULT Initialize( [in] UINT uiSrcCodePage, [in] UINT uiDstCodePage, [in] DWORD dwProperty);
- HRESULT GetSourceCodePage( + HRESULT GetSourceCodePage( [out] UINT *puiSrcCodePage);
- HRESULT GetDestinationCodePage( + HRESULT GetDestinationCodePage( [out] UINT *puiDstCodePage);
- HRESULT GetProperty( + HRESULT GetProperty( [out] DWORD *pdwProperty);
- HRESULT DoConversion( + HRESULT DoConversion( [in] BYTE *pSrcStr, [in,out] UINT *pcSrcSize, [in] BYTE *pDstStr, [in,out] UINT *pcDstSize);
- HRESULT DoConversionToUnicode( + HRESULT DoConversionToUnicode( [in] CHAR *pSrcStr, [in,out] UINT *pcSrcSize, [in] WCHAR *pDstStr, [in,out] UINT *pcDstSize);
- HRESULT DoConversionFromUnicode( + HRESULT DoConversionFromUnicode( [in] WCHAR *pSrcStr, [in,out] UINT *pcSrcSize, [in] CHAR *pDstStr, @@ -298,17 +435,17 @@ WCHAR wszLocaleName[MAX_LOCALE_NAME]; } RFC1766INFO, *PRFC1766INFO;
- HRESULT Clone( + HRESULT Clone( [out] IEnumRfc1766 **ppEnum);
- HRESULT Next( + HRESULT Next( [in] ULONG celt, [out] PRFC1766INFO rgelt, [out] ULONG *pceltFetched);
HRESULT Reset();
- HRESULT Skip( + HRESULT Skip( [in] ULONG celt); }
@@ -319,30 +456,30 @@ ] interface IMultiLanguage : IUnknown { - HRESULT GetNumberOfCodePageInfo( + HRESULT GetNumberOfCodePageInfo( [out] UINT *pcCodePage);
- HRESULT GetCodePageInfo( + HRESULT GetCodePageInfo( [in] UINT uiCodePage, [out] PMIMECPINFO pCodePageInfo);
- HRESULT GetFamilyCodePage( + HRESULT GetFamilyCodePage( [in] UINT uiCodePage, [out] UINT *puiFamilyCodePage);
- HRESULT EnumCodePages( + HRESULT EnumCodePages( [in] DWORD grfFlags, [out] IEnumCodePage **ppEnumCodePage);
- HRESULT GetCharsetInfo( + HRESULT GetCharsetInfo( [in] BSTR Charset, [in] PMIMECSETINFO pCharsetInfo);
- HRESULT IsConvertible( + HRESULT IsConvertible( [in] DWORD dwSrcEncoding, [in] DWORD dwDstEncoding);
- HRESULT ConvertString( + HRESULT ConvertString( [in,out] DWORD *pdwMode, [in] DWORD dwSrcEncoding, [in] DWORD dwDstEncoding, @@ -351,7 +488,7 @@ [in] BYTE *pDstStr, [in,out] UINT *pcDstSize);
- HRESULT ConvertStringToUnicode( + HRESULT ConvertStringToUnicode( [in,out] DWORD *pdwMode, [in] DWORD dwEncoding, [in] CHAR *pSrcStr, @@ -359,7 +496,7 @@ [in] WCHAR *pDstStr, [in,out] UINT *pcDstSize);
- HRESULT ConvertStringFromUnicode( + HRESULT ConvertStringFromUnicode( [in,out] DWORD *pdwMode, [in] DWORD dwEncoding, [in] WCHAR *pSrcStr, @@ -369,22 +506,22 @@
HRESULT ConvertStringReset();
- HRESULT GetRfc1766FromLcid( + HRESULT GetRfc1766FromLcid( [in] LCID Locale, [out] BSTR *pbstrRfc1766);
- HRESULT GetLcidFromRfc1766( + HRESULT GetLcidFromRfc1766( [out] LCID *pLocale, [in] BSTR bstrRfc1766);
- HRESULT EnumRfc1766( + HRESULT EnumRfc1766( [out] IEnumRfc1766 **ppEnumRfc1766);
- HRESULT GetRfc1766Info( + HRESULT GetRfc1766Info( [in] LCID Locale, [out] PRFC1766INFO pRfc1766Info);
- HRESULT CreateConvertCharset( + HRESULT CreateConvertCharset( [in] UINT uiSrcCodePage, [in] UINT uiDstCodePage, [in] DWORD dwProperty, @@ -407,32 +544,32 @@ INT nConfidence; } DetectEncodingInfo, *pDetectEncodingInfo;
- HRESULT GetNumberOfCodePageInfo( + HRESULT GetNumberOfCodePageInfo( [out] UINT *pcCodePage);
- HRESULT GetCodePageInfo( + HRESULT GetCodePageInfo( [in] UINT uiCodePage, [in] LANGID LangId, [out] PMIMECPINFO pCodePageInfo);
- HRESULT GetFamilyCodePage( + HRESULT GetFamilyCodePage( [in] UINT uiCodePage, [out] UINT *puiFamilyCodePage);
- HRESULT EnumCodePages( + HRESULT EnumCodePages( [in] DWORD grfFlags, [in] LANGID LangId, [out] IEnumCodePage **ppEnumCodePage);
- HRESULT GetCharsetInfo( + HRESULT GetCharsetInfo( [in] BSTR Charset, [in] PMIMECSETINFO pCharsetInfo);
- HRESULT IsConvertible( + HRESULT IsConvertible( [in] DWORD dwSrcEncoding, [in] DWORD dwDstEncoding);
- HRESULT ConvertString( + HRESULT ConvertString( [in,out] DWORD *pdwMode, [in] DWORD dwSrcEncoding, [in] DWORD dwDstEncoding, @@ -441,7 +578,7 @@ [in] BYTE *pDstStr, [in,out] UINT *pcDstSize);
- HRESULT ConvertStringToUnicode( + HRESULT ConvertStringToUnicode( [in,out] DWORD *pdwMode, [in] DWORD dwEncoding, [in] CHAR *pSrcStr, @@ -449,7 +586,7 @@ [in] WCHAR *pDstStr, [in,out] UINT *pcDstSize);
- HRESULT ConvertStringFromUnicode( + HRESULT ConvertStringFromUnicode( [in,out] DWORD *pdwMode, [in] DWORD dwEncoding, [in] WCHAR *pSrcStr, @@ -459,30 +596,30 @@
HRESULT ConvertStringReset();
- HRESULT GetRfc1766FromLcid( + HRESULT GetRfc1766FromLcid( [in] LCID Locale, [out] BSTR *pbstrRfc1766);
- HRESULT GetLcidFromRfc1766( + HRESULT GetLcidFromRfc1766( [out] LCID *pLocale, [in] BSTR bstrRfc1766);
- HRESULT EnumRfc1766( + HRESULT EnumRfc1766( [in] LANGID LangId, [out] IEnumRfc1766 **ppEnumRfc1766);
- HRESULT GetRfc1766Info( + HRESULT GetRfc1766Info( [in] LCID Locale, [in] LANGID LangId, [out] PRFC1766INFO pRfc1766Info);
- HRESULT CreateConvertCharset( + HRESULT CreateConvertCharset( [in] UINT uiSrcCodePage, [in] UINT uiDstCodePage, [in] DWORD dwProperty, [out] IMLangConvertCharset **ppMLangConvertCharset);
- HRESULT ConvertStringInIStream( + HRESULT ConvertStringInIStream( [in,out] DWORD *pdwMode, [in] DWORD dwFlag, [in] WCHAR *lpFallBack, @@ -491,7 +628,7 @@ [in] IStream *pstmIn, [in] IStream *pstmOut);
- HRESULT ConvertStringToUnicodeEx( + HRESULT ConvertStringToUnicodeEx( [in,out] DWORD *pdwMode, [in] DWORD dwEncoding, [in] CHAR *pSrcStr, @@ -511,14 +648,14 @@ [in] DWORD dwFlag, [in] WCHAR *lpFallBack);
- HRESULT DetectCodepageInIStream( + HRESULT DetectCodepageInIStream( [in] DWORD dwFlag, [in] DWORD dwPrefWinCodePage, [in] IStream *pstmIn, [in,out] DetectEncodingInfo *lpEncoding, [in,out] INT *pnScores);
- HRESULT DetectInputCodepage( + HRESULT DetectInputCodepage( [in] DWORD dwFlag, [in] DWORD dwPrefWinCodePage, [in] CHAR *pSrcStr, @@ -530,7 +667,7 @@ [in] UINT uiCodePage, [in] HWND hwnd);
- HRESULT GetCodePageDescription( + HRESULT GetCodePageDescription( [in] UINT uiCodePage, [in] LCID lcid, [in,out] LPWSTR lpWideCharStr, @@ -539,13 +676,13 @@ HRESULT IsCodePageInstallable( [in] UINT uiCodePage);
- HRESULT SetMimeDBSource( + HRESULT SetMimeDBSource( [in] MIMECONTF dwSource);
- HRESULT GetNumberOfScripts( + HRESULT GetNumberOfScripts( [out] UINT *pnScripts);
- HRESULT EnumScripts( + HRESULT EnumScripts( [in] DWORD dwFlags, [in] LANGID LangId, [out] IEnumScript **ppEnumScript); @@ -593,6 +730,7 @@ interface IMLangCodePages; interface IMLangFontLink; /* interface IMLangLineBreakConsole; */ + interface IMLangFontLink2; }
cpp_quote("STDAPI LcidToRfc1766A(LCID, LPSTR, INT);")
Modified: trunk/reactos/include/psdk/objsafe.idl URL: http://svn.reactos.org/svn/reactos/trunk/reactos/include/psdk/objsafe.idl?re... ============================================================================== --- trunk/reactos/include/psdk/objsafe.idl [iso-8859-1] (original) +++ trunk/reactos/include/psdk/objsafe.idl [iso-8859-1] Sat Sep 13 13:49:51 2008 @@ -16,7 +16,9 @@ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA */
+#ifndef DO_NO_IMPORTS import "unknwn.idl"; +#endif
cpp_quote("#define INTERFACESAFE_FOR_UNTRUSTED_CALLER 1") cpp_quote("#define INTERFACESAFE_FOR_UNTRUSTED_DATA 2")
Modified: trunk/reactos/include/psdk/rpc.h URL: http://svn.reactos.org/svn/reactos/trunk/reactos/include/psdk/rpc.h?rev=3619... ============================================================================== --- trunk/reactos/include/psdk/rpc.h [iso-8859-1] (original) +++ trunk/reactos/include/psdk/rpc.h [iso-8859-1] Sat Sep 13 13:49:51 2008 @@ -1,6 +1,14 @@
#if !defined( RPC_NO_WINDOWS_H ) && !defined( MAC ) && !defined( _MAC ) -#include <windows.h> +# ifdef __WINESRC__ +# ifndef RC_INVOKED +# include <stdarg.h> +# endif +# include <windef.h> +# include <winbase.h> +# else +# include <windows.h> +# endif #endif
#ifdef __GNUC__