diff --git a/reactos/dll/win32/ole32/antimoniker.c b/reactos/dll/win32/ole32/antimoniker.c index 86d30267dae..fd6c6af6dcb 100644 --- a/reactos/dll/win32/ole32/antimoniker.c +++ b/reactos/dll/win32/ole32/antimoniker.c @@ -49,7 +49,7 @@ AntiMonikerImpl_QueryInterface(IMoniker* iface,REFIID riid,void** ppvObject) { AntiMonikerImpl *This = impl_from_IMoniker(iface); - TRACE("(%p,%p,%p)\n",This,riid,ppvObject); + TRACE("(%p,%s,%p)\n",This,debugstr_guid(riid),ppvObject); /* Perform a sanity check on the parameters.*/ if ( ppvObject==0 ) @@ -217,7 +217,7 @@ static HRESULT WINAPI AntiMonikerImpl_BindToObject(IMoniker* iface, IBindCtx* pbc, IMoniker* pmkToLeft, REFIID riid, VOID** ppvResult) { - TRACE("(%p,%p,%p,%p,%p)\n",iface,pbc,pmkToLeft,riid,ppvResult); + TRACE("(%p,%p,%p,%s,%p)\n",iface,pbc,pmkToLeft,debugstr_guid(riid),ppvResult); return E_NOTIMPL; } @@ -228,7 +228,7 @@ static HRESULT WINAPI AntiMonikerImpl_BindToStorage(IMoniker* iface, IBindCtx* pbc, IMoniker* pmkToLeft, REFIID riid, VOID** ppvResult) { - TRACE("(%p,%p,%p,%p,%p)\n",iface,pbc,pmkToLeft,riid,ppvResult); + TRACE("(%p,%p,%p,%s,%p)\n",iface,pbc,pmkToLeft,debugstr_guid(riid),ppvResult); return E_NOTIMPL; } @@ -483,7 +483,7 @@ AntiMonikerROTDataImpl_QueryInterface(IROTData *iface,REFIID riid,VOID** ppvObje { AntiMonikerImpl *This = impl_from_IROTData(iface); - TRACE("(%p,%p,%p)\n",iface,riid,ppvObject); + TRACE("(%p,%s,%p)\n",iface,debugstr_guid(riid),ppvObject); return AntiMonikerImpl_QueryInterface(&This->IMoniker_iface, riid, ppvObject); } diff --git a/reactos/dll/win32/ole32/classmoniker.c b/reactos/dll/win32/ole32/classmoniker.c index d3c4250c7a8..eaf31725caa 100644 --- a/reactos/dll/win32/ole32/classmoniker.c +++ b/reactos/dll/win32/ole32/classmoniker.c @@ -52,7 +52,7 @@ static HRESULT WINAPI ClassMoniker_QueryInterface(IMoniker* iface,REFIID riid,vo { ClassMoniker *This = impl_from_IMoniker(iface); - TRACE("(%p,%p,%p)\n",This,riid,ppvObject); + TRACE("(%p,%s,%p)\n",This,debugstr_guid(riid),ppvObject); /* Perform a sanity check on the parameters.*/ if (!ppvObject) diff --git a/reactos/dll/win32/ole32/clipboard.c b/reactos/dll/win32/ole32/clipboard.c index 77a2dfa3ca9..c778023a841 100644 --- a/reactos/dll/win32/ole32/clipboard.c +++ b/reactos/dll/win32/ole32/clipboard.c @@ -2025,10 +2025,12 @@ static LRESULT CALLBACK clipbrd_wndproc(HWND hwnd, UINT message, WPARAM wparam, case WM_RENDERALLFORMATS: { DWORD i; - ole_priv_data_entry *entries = clipbrd->cached_enum->entries; + ole_priv_data_entry *entries; TRACE("(): WM_RENDERALLFORMATS\n"); + if (!clipbrd || !clipbrd->cached_enum) break; + entries = clipbrd->cached_enum->entries; for(i = 0; i < clipbrd->cached_enum->count; i++) { if(entries[i].first_use) diff --git a/reactos/dll/win32/ole32/compositemoniker.c b/reactos/dll/win32/ole32/compositemoniker.c index 300df072ddd..533fb0cf0e5 100644 --- a/reactos/dll/win32/ole32/compositemoniker.c +++ b/reactos/dll/win32/ole32/compositemoniker.c @@ -74,7 +74,7 @@ CompositeMonikerImpl_QueryInterface(IMoniker* iface,REFIID riid,void** ppvObject { CompositeMonikerImpl *This = impl_from_IMoniker(iface); - TRACE("(%p,%p,%p)\n",This,riid,ppvObject); + TRACE("(%p,%s,%p)\n",This,debugstr_guid(riid),ppvObject); /* Perform a sanity check on the parameters.*/ if ( ppvObject==0 ) @@ -323,7 +323,7 @@ CompositeMonikerImpl_BindToObject(IMoniker* iface, IBindCtx* pbc, IMoniker *tempMk,*antiMk,*rightMostMk; IEnumMoniker *enumMoniker; - TRACE("(%p,%p,%p,%p,%p)\n",iface,pbc,pmkToLeft,riid,ppvResult); + TRACE("(%p,%p,%p,%s,%p)\n",iface,pbc,pmkToLeft,debugstr_guid(riid),ppvResult); if (ppvResult==NULL) return E_POINTER; @@ -376,7 +376,7 @@ CompositeMonikerImpl_BindToStorage(IMoniker* iface, IBindCtx* pbc, IMoniker *tempMk,*antiMk,*rightMostMk,*leftMk; IEnumMoniker *enumMoniker; - TRACE("(%p,%p,%p,%p,%p)\n",iface,pbc,pmkToLeft,riid,ppvResult); + TRACE("(%p,%p,%p,%s,%p)\n",iface,pbc,pmkToLeft,debugstr_guid(riid),ppvResult); *ppvResult=0; @@ -1182,7 +1182,7 @@ CompositeMonikerROTDataImpl_QueryInterface(IROTData *iface,REFIID riid, { CompositeMonikerImpl *This = impl_from_IROTData(iface); - TRACE("(%p,%p,%p)\n",iface,riid,ppvObject); + TRACE("(%p,%s,%p)\n",iface,debugstr_guid(riid),ppvObject); return CompositeMonikerImpl_QueryInterface(&This->IMoniker_iface, riid, ppvObject); } @@ -1486,7 +1486,7 @@ EnumMonikerImpl_QueryInterface(IEnumMoniker* iface,REFIID riid,void** ppvObject) { EnumMonikerImpl *This = impl_from_IEnumMoniker(iface); - TRACE("(%p,%p,%p)\n",This,riid,ppvObject); + TRACE("(%p,%s,%p)\n",This,debugstr_guid(riid),ppvObject); /* Perform a sanity check on the parameters.*/ if ( ppvObject==0 ) diff --git a/reactos/dll/win32/ole32/itemmoniker.c b/reactos/dll/win32/ole32/itemmoniker.c index ac75d43e6a1..aecd40a862f 100644 --- a/reactos/dll/win32/ole32/itemmoniker.c +++ b/reactos/dll/win32/ole32/itemmoniker.c @@ -760,7 +760,7 @@ static HRESULT WINAPI ItemMonikerROTDataImpl_QueryInterface(IROTData *iface,REFI ItemMonikerImpl *This = impl_from_IROTData(iface); - TRACE("(%p,%p,%p)\n",iface,riid,ppvObject); + TRACE("(%p,%s,%p)\n",iface,debugstr_guid(riid),ppvObject); return ItemMonikerImpl_QueryInterface(&This->IMoniker_iface, riid, ppvObject); } diff --git a/reactos/dll/win32/ole32/moniker.c b/reactos/dll/win32/ole32/moniker.c index f6f1691d07b..915caace505 100644 --- a/reactos/dll/win32/ole32/moniker.c +++ b/reactos/dll/win32/ole32/moniker.c @@ -23,6 +23,7 @@ #include "precomp.h" +#include #include #include @@ -113,32 +114,52 @@ static IrotHandle get_irot_handle(void) static BOOL start_rpcss(void) { - PROCESS_INFORMATION pi; - STARTUPINFOW si; - WCHAR cmd[MAX_PATH]; - static const WCHAR rpcss[] = {'\\','r','p','c','s','s','.','e','x','e',0}; - BOOL rslt; - void *redir; + static const WCHAR rpcssW[] = {'R','p','c','S','s',0}; + SC_HANDLE scm, service; + SERVICE_STATUS_PROCESS status; + BOOL ret = FALSE; TRACE("\n"); - ZeroMemory(&si, sizeof(STARTUPINFOA)); - si.cb = sizeof(STARTUPINFOA); - GetSystemDirectoryW( cmd, MAX_PATH - sizeof(rpcss)/sizeof(WCHAR) ); - strcatW( cmd, rpcss ); - - Wow64DisableWow64FsRedirection( &redir ); - rslt = CreateProcessW( cmd, cmd, NULL, NULL, FALSE, DETACHED_PROCESS, NULL, NULL, &si, &pi ); - Wow64RevertWow64FsRedirection( redir ); - - if (rslt) + if (!(scm = OpenSCManagerW( NULL, NULL, 0 ))) { - CloseHandle(pi.hProcess); - CloseHandle(pi.hThread); - Sleep(100); + ERR( "failed to open service manager\n" ); + return FALSE; } + if (!(service = OpenServiceW( scm, rpcssW, SERVICE_START | SERVICE_QUERY_STATUS ))) + { + ERR( "failed to open RpcSs service\n" ); + CloseServiceHandle( scm ); + return FALSE; + } + if (StartServiceW( service, 0, NULL ) || GetLastError() == ERROR_SERVICE_ALREADY_RUNNING) + { + ULONGLONG start_time = GetTickCount64(); + do + { + DWORD dummy; - return rslt; + if (!QueryServiceStatusEx( service, SC_STATUS_PROCESS_INFO, + (BYTE *)&status, sizeof(status), &dummy )) + break; + if (status.dwCurrentState == SERVICE_RUNNING) + { + ret = TRUE; + break; + } + if (GetTickCount64() - start_time > 30000) break; + Sleep( 100 ); + + } while (status.dwCurrentState == SERVICE_START_PENDING); + + if (status.dwCurrentState != SERVICE_RUNNING) + WARN( "RpcSs failed to start %u\n", status.dwCurrentState ); + } + else ERR( "failed to start RpcSs service\n" ); + + CloseServiceHandle( service ); + CloseServiceHandle( scm ); + return ret; } static HRESULT create_stream_on_mip_ro(const InterfaceData *mip, IStream **stream) @@ -287,7 +308,7 @@ RunningObjectTableImpl_QueryInterface(IRunningObjectTable* iface, { RunningObjectTableImpl *This = impl_from_IRunningObjectTable(iface); - TRACE("(%p,%p,%p)\n",This,riid,ppvObject); + TRACE("(%p,%s,%p)\n",This,debugstr_guid(riid),ppvObject); /* validate arguments */ @@ -1275,7 +1296,7 @@ static HRESULT WINAPI EnumMonikerImpl_QueryInterface(IEnumMoniker* iface,REFIID { EnumMonikerImpl *This = impl_from_IEnumMoniker(iface); - TRACE("(%p,%p,%p)\n",This,riid,ppvObject); + TRACE("(%p,%s,%p)\n",This,debugstr_guid(riid),ppvObject); /* validate arguments */ if (ppvObject == NULL) diff --git a/reactos/dll/win32/ole32/ole32_ros.diff b/reactos/dll/win32/ole32/ole32_ros.diff index 5e6e8a5bb73..8cc2db7299c 100644 --- a/reactos/dll/win32/ole32/ole32_ros.diff +++ b/reactos/dll/win32/ole32/ole32_ros.diff @@ -1,21 +1,20 @@ -diff -pudN e:\wine\dlls\ole32/comcat.c e:\reactos\dll\win32\ole32/comcat.c ---- e:\wine\dlls\ole32/comcat.c 2016-05-31 18:02:11 +0100 -+++ e:\reactos\dll\win32\ole32/comcat.c 2016-03-04 10:20:45 +0100 -@@ -229,7 +229,11 @@ static HRESULT COMCAT_IsClassOfCategorie - if (res != ERROR_SUCCESS) return S_FALSE; - for (string = impl_strings; *string; string += CHARS_IN_GUID) { - HKEY catkey; +diff -pudN e:\wine\dlls\ole32/clipboard.c e:\reactos\dll\win32\ole32/clipboard.c +--- e:\wine\dlls\ole32/clipboard.c 2016-11-16 17:29:23 +0100 ++++ e:\reactos\dll\win32\ole32/clipboard.c 2016-11-16 23:37:23 +0100 +@@ -2001,6 +2001,10 @@ static LRESULT CALLBACK clipbrd_wndproc( + ole_clipbrd *clipbrd; + + get_ole_clipbrd(&clipbrd); +#ifdef __REACTOS__ - res = open_classes_key(subkey, string, READ_CONTROL, &catkey); -+#else -+ res = open_classes_key(subkey, string, 0, &catkey); ++ if(clipbrd == NULL) ++ return DefWindowProcW(hwnd, message, wparam, lparam); +#endif - if (res != ERROR_SUCCESS) { - RegCloseKey(subkey); - return S_FALSE; + + switch (message) + { diff -pudN e:\wine\dlls\ole32/compobj.c e:\reactos\dll\win32\ole32/compobj.c ---- e:\wine\dlls\ole32/compobj.c 2016-05-31 18:02:11 +0100 -+++ e:\reactos\dll\win32\ole32/compobj.c 2016-06-07 11:34:16 +0100 +--- e:\wine\dlls\ole32/compobj.c 2016-11-16 17:29:23 +0100 ++++ e:\reactos\dll\win32\ole32/compobj.c 2016-11-17 15:23:00 +0100 @@ -43,6 +43,7 @@ WINE_DEFAULT_DEBUG_CHANNEL(ole); @@ -39,8 +38,8 @@ diff -pudN e:\wine\dlls\ole32/compobj.c e:\reactos\dll\win32\ole32/compobj.c static HKEY classes_root_hkey; diff -pudN e:\wine\dlls\ole32/stg_prop.c e:\reactos\dll\win32\ole32/stg_prop.c ---- e:\wine\dlls\ole32/stg_prop.c 2016-05-31 18:02:11 +0100 -+++ e:\reactos\dll\win32\ole32/stg_prop.c 2016-06-07 11:34:17 +0100 +--- e:\wine\dlls\ole32/stg_prop.c 2016-11-16 17:29:23 +0100 ++++ e:\reactos\dll\win32\ole32/stg_prop.c 2016-08-15 16:49:04 +0100 @@ -41,6 +41,10 @@ WINE_DEFAULT_DEBUG_CHANNEL(storage); diff --git a/reactos/dll/win32/ole32/pointermoniker.c b/reactos/dll/win32/ole32/pointermoniker.c index e8cca62e9f1..d2113b1aed0 100644 --- a/reactos/dll/win32/ole32/pointermoniker.c +++ b/reactos/dll/win32/ole32/pointermoniker.c @@ -43,7 +43,7 @@ PointerMonikerImpl_QueryInterface(IMoniker* iface,REFIID riid,void** ppvObject) { PointerMonikerImpl *This = impl_from_IMoniker(iface); - TRACE("(%p,%p,%p)\n",This,riid,ppvObject); + TRACE("(%p,%s,%p)\n",This,debugstr_guid(riid),ppvObject); /* Perform a sanity check on the parameters.*/ if ( (This==0) || (ppvObject==0) ) @@ -187,7 +187,7 @@ PointerMonikerImpl_BindToObject(IMoniker* iface, IBindCtx* pbc, IMoniker* pmkToL { PointerMonikerImpl *This = impl_from_IMoniker(iface); - TRACE("(%p,%p,%p,%p,%p)\n",iface,pbc,pmkToLeft,riid,ppvResult); + TRACE("(%p,%p,%p,%s,%p)\n",iface,pbc,pmkToLeft,debugstr_guid(riid),ppvResult); if (!This->pObject) return E_UNEXPECTED; @@ -204,7 +204,7 @@ PointerMonikerImpl_BindToStorage(IMoniker* iface, IBindCtx* pbc, IMoniker* pmkTo { PointerMonikerImpl *This = impl_from_IMoniker(iface); - TRACE("(%p,%p,%p,%p,%p)\n",iface,pbc,pmkToLeft,riid,ppvResult); + TRACE("(%p,%p,%p,%s,%p)\n",iface,pbc,pmkToLeft,debugstr_guid(riid),ppvResult); if (!This->pObject) return E_UNEXPECTED; diff --git a/reactos/dll/win32/ole32/rpc.c b/reactos/dll/win32/ole32/rpc.c index 750955bfd72..985c622ac67 100644 --- a/reactos/dll/win32/ole32/rpc.c +++ b/reactos/dll/win32/ole32/rpc.c @@ -643,7 +643,7 @@ static HRESULT WINAPI ClientRpcChannelBuffer_GetBuffer(LPRPCCHANNELBUFFER iface, message_state->channel_hook_info.cbSize = sizeof(message_state->channel_hook_info); message_state->channel_hook_info.uCausality = COM_CurrentCausalityId(); message_state->channel_hook_info.dwServerPid = This->server_pid; - message_state->channel_hook_info.iMethod = msg->ProcNum; + message_state->channel_hook_info.iMethod = msg->ProcNum & ~RPC_FLAGS_VALID_BIT; message_state->channel_hook_info.pObject = NULL; /* only present on server-side */ message_state->target_hwnd = NULL; message_state->target_tid = 0; diff --git a/reactos/media/doc/README.WINE b/reactos/media/doc/README.WINE index 446fda2013b..309f823ab63 100644 --- a/reactos/media/doc/README.WINE +++ b/reactos/media/doc/README.WINE @@ -139,7 +139,7 @@ reactos/dll/win32/ntdsapi # Synced to WineStaging-1.9.11 reactos/dll/win32/objsel # Synced to WineStaging-1.9.11 reactos/dll/win32/odbc32 # Synced to WineStaging-1.9.23. Depends on port of Linux ODBC. reactos/dll/win32/odbccp32 # Synced to WineStaging-1.9.11 -reactos/dll/win32/ole32 # Synced to WineStaging-1.9.16 +reactos/dll/win32/ole32 # Synced to WineStaging-1.9.23 reactos/dll/win32/oleacc # Synced to WineStaging-1.9.11 reactos/dll/win32/oleaut32 # Synced to WineStaging-1.9.23 reactos/dll/win32/olecli32 # Synced to WineStaging-1.9.11