Author: akhaldi Date: Sat Mar 23 10:35:27 2013 New Revision: 58586
URL: http://svn.reactos.org/svn/reactos?rev=58586&view=rev Log: [OLE32] * Sync with Wine 1.5.26.
Modified: trunk/reactos/dll/win32/ole32/compobj.c trunk/reactos/dll/win32/ole32/compositemoniker.c trunk/reactos/dll/win32/ole32/defaulthandler.c trunk/reactos/dll/win32/ole32/moniker.c trunk/reactos/dll/win32/ole32/ole2.c trunk/reactos/dll/win32/ole32/pointermoniker.c trunk/reactos/dll/win32/ole32/rpc.c trunk/reactos/dll/win32/ole32/storage32.c trunk/reactos/dll/win32/ole32/usrmarshal.c trunk/reactos/media/doc/README.WINE
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 Mar 23 10:35:27 2013 @@ -818,14 +818,17 @@ real_delay = 0; }
- if (!real_delay || (entry->unload_time && (entry->unload_time < GetTickCount()))) + if (!real_delay || (entry->unload_time && ((int)(GetTickCount() - entry->unload_time) > 0))) { list_remove(&entry->entry); COMPOBJ_DllList_ReleaseRef(entry->dll, TRUE); HeapFree(GetProcessHeap(), 0, entry); } else + { entry->unload_time = GetTickCount() + real_delay; + if (!entry->unload_time) entry->unload_time = 1; + } } else if (entry->unload_time) entry->unload_time = 0; @@ -2035,8 +2038,11 @@ *ppszProgID = CoTaskMemAlloc(progidlen * sizeof(WCHAR)); if (*ppszProgID) { - if (RegQueryValueW(hkey, NULL, *ppszProgID, &progidlen)) + if (RegQueryValueW(hkey, NULL, *ppszProgID, &progidlen)) { ret = REGDB_E_CLASSNOTREG; + CoTaskMemFree(*ppszProgID); + *ppszProgID = NULL; + } } else ret = E_OUTOFMEMORY; @@ -2732,83 +2738,82 @@ * CoGetClassObject() */ HRESULT WINAPI CoCreateInstance( - REFCLSID rclsid, - LPUNKNOWN pUnkOuter, - DWORD dwClsContext, - REFIID iid, - LPVOID *ppv) -{ - HRESULT hres; - LPCLASSFACTORY lpclf = 0; - APARTMENT *apt; - - TRACE("(rclsid=%s, pUnkOuter=%p, dwClsContext=%08x, riid=%s, ppv=%p)\n", debugstr_guid(rclsid), - pUnkOuter, dwClsContext, debugstr_guid(iid), ppv); - - /* - * Sanity check - */ - if (ppv==0) - return E_POINTER; - - /* - * Initialize the "out" parameter - */ - *ppv = 0; - - if (!(apt = COM_CurrentApt())) - { - if (!(apt = apartment_find_multi_threaded())) - { - ERR("apartment not initialised\n"); - return CO_E_NOTINITIALIZED; - } - apartment_release(apt); - } - - /* - * The Standard Global Interface Table (GIT) object is a process-wide singleton. - * Rather than create a class factory, we can just check for it here - */ - if (IsEqualIID(rclsid, &CLSID_StdGlobalInterfaceTable)) { - if (StdGlobalInterfaceTableInstance == NULL) - StdGlobalInterfaceTableInstance = StdGlobalInterfaceTable_Construct(); - hres = IGlobalInterfaceTable_QueryInterface( (IGlobalInterfaceTable*) StdGlobalInterfaceTableInstance, iid, ppv); - if (hres) return hres; - - TRACE("Retrieved GIT (%p)\n", *ppv); - return S_OK; - } - - if (IsEqualCLSID(rclsid, &CLSID_ManualResetEvent)) - return ManualResetEvent_Construct(pUnkOuter, iid, ppv); - - /* - * Get a class factory to construct the object we want. - */ - hres = CoGetClassObject(rclsid, - dwClsContext, - NULL, - &IID_IClassFactory, - (LPVOID)&lpclf); - - if (FAILED(hres)) + REFCLSID rclsid, + LPUNKNOWN pUnkOuter, + DWORD dwClsContext, + REFIID iid, + LPVOID *ppv) +{ + HRESULT hres; + LPCLASSFACTORY lpclf = 0; + APARTMENT *apt; + + TRACE("(rclsid=%s, pUnkOuter=%p, dwClsContext=%08x, riid=%s, ppv=%p)\n", debugstr_guid(rclsid), + pUnkOuter, dwClsContext, debugstr_guid(iid), ppv); + + if (ppv==0) + return E_POINTER; + + *ppv = 0; + + if (!(apt = COM_CurrentApt())) + { + if (!(apt = apartment_find_multi_threaded())) + { + ERR("apartment not initialised\n"); + return CO_E_NOTINITIALIZED; + } + apartment_release(apt); + } + + /* + * The Standard Global Interface Table (GIT) object is a process-wide singleton. + * Rather than create a class factory, we can just check for it here + */ + if (IsEqualIID(rclsid, &CLSID_StdGlobalInterfaceTable)) + { + if (StdGlobalInterfaceTableInstance == NULL) + StdGlobalInterfaceTableInstance = StdGlobalInterfaceTable_Construct(); + hres = IGlobalInterfaceTable_QueryInterface((IGlobalInterfaceTable*)StdGlobalInterfaceTableInstance, + iid, + ppv); + if (hres) return hres; + + TRACE("Retrieved GIT (%p)\n", *ppv); + return S_OK; + } + + if (IsEqualCLSID(rclsid, &CLSID_ManualResetEvent)) + return ManualResetEvent_Construct(pUnkOuter, iid, ppv); + + /* + * Get a class factory to construct the object we want. + */ + hres = CoGetClassObject(rclsid, + dwClsContext, + NULL, + &IID_IClassFactory, + (LPVOID)&lpclf); + + if (FAILED(hres)) + return hres; + + /* + * Create the object and don't forget to release the factory + */ + hres = IClassFactory_CreateInstance(lpclf, pUnkOuter, iid, ppv); + IClassFactory_Release(lpclf); + if (FAILED(hres)) + { + if (hres == CLASS_E_NOAGGREGATION && pUnkOuter) + FIXME("Class %s does not support aggregation\n", debugstr_guid(rclsid)); + else + FIXME("no instance created for interface %s of class %s, hres is 0x%08x\n", + debugstr_guid(iid), + debugstr_guid(rclsid),hres); + } + return hres; - - /* - * Create the object and don't forget to release the factory - */ - hres = IClassFactory_CreateInstance(lpclf, pUnkOuter, iid, ppv); - IClassFactory_Release(lpclf); - if(FAILED(hres)) - { - if (hres == CLASS_E_NOAGGREGATION && pUnkOuter) - FIXME("Class %s does not support aggregation\n", debugstr_guid(rclsid)); - else - FIXME("no instance created for interface %s of class %s, hres is 0x%08x\n", debugstr_guid(iid), debugstr_guid(rclsid),hres); - } - - return hres; }
/*********************************************************************** @@ -3876,6 +3881,7 @@ if (res == WAIT_OBJECT_0 + cHandles) /* messages available */ { MSG msg; + int count = 0;
/* call message filter */
@@ -3905,7 +3911,9 @@ } }
- while (COM_PeekMessage(apt, &msg)) + /* some apps (e.g. Visio 2010) don't handle WM_PAINT properly and loop forever, + * so after processing 100 messages we go back to checking the wait handles */ + while (count++ < 100 && COM_PeekMessage(apt, &msg)) { TRACE("received message whilst waiting for RPC: 0x%04x\n", msg.message); TranslateMessage(&msg);
Modified: trunk/reactos/dll/win32/ole32/compositemoniker.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/ole32/compositemo... ============================================================================== --- trunk/reactos/dll/win32/ole32/compositemoniker.c [iso-8859-1] (original) +++ trunk/reactos/dll/win32/ole32/compositemoniker.c [iso-8859-1] Sat Mar 23 10:35:27 2013 @@ -1641,10 +1641,10 @@ ******************************************************************************/ static HRESULT EnumMonikerImpl_CreateEnumMoniker(IMoniker** tabMoniker, ULONG tabSize, - ULONG currentPos, BOOL leftToRigth, IEnumMoniker ** ppmk) + ULONG currentPos, BOOL leftToRight, IEnumMoniker ** ppmk) { EnumMonikerImpl* newEnumMoniker; - int i; + ULONG i;
if (currentPos > tabSize) return E_INVALIDARG; @@ -1668,17 +1668,17 @@ return E_OUTOFMEMORY; }
- if (leftToRigth) + if (leftToRight) for (i=0;i<tabSize;i++){
newEnumMoniker->tabMoniker[i]=tabMoniker[i]; IMoniker_AddRef(tabMoniker[i]); } else - for (i=tabSize-1;i>=0;i--){ - - newEnumMoniker->tabMoniker[tabSize-i-1]=tabMoniker[i]; - IMoniker_AddRef(tabMoniker[i]); + for (i = tabSize; i > 0; i--){ + + newEnumMoniker->tabMoniker[tabSize-i]=tabMoniker[i - 1]; + IMoniker_AddRef(tabMoniker[i - 1]); }
*ppmk=&newEnumMoniker->IEnumMoniker_iface;
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 Mar 23 10:35:27 2013 @@ -1325,7 +1325,7 @@
release_delegates(This);
- hr = CoCreateInstance(&This->clsid, NULL, CLSCTX_ALL, + hr = CoCreateInstance(&This->clsid, NULL, CLSCTX_LOCAL_SERVER | CLSCTX_REMOTE_SERVER, &IID_IOleObject, (void **)&This->pOleDelegate); if (FAILED(hr)) return hr;
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 Mar 23 10:35:27 2013 @@ -149,7 +149,7 @@ strcatW( cmd, rpcss );
Wow64DisableWow64FsRedirection( &redir ); - rslt = CreateProcessW( cmd, cmd, NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi ); + rslt = CreateProcessW( cmd, cmd, NULL, NULL, FALSE, DETACHED_PROCESS, NULL, NULL, &si, &pi ); Wow64RevertWow64FsRedirection( redir );
if (rslt)
Modified: trunk/reactos/dll/win32/ole32/ole2.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/ole32/ole2.c?rev=... ============================================================================== --- trunk/reactos/dll/win32/ole32/ole2.c [iso-8859-1] (original) +++ trunk/reactos/dll/win32/ole32/ole2.c [iso-8859-1] Sat Mar 23 10:35:27 2013 @@ -1880,11 +1880,11 @@ * Destroy the shared menu descriptor */ HRESULT WINAPI OleDestroyMenuDescriptor( - HOLEMENU hmenuDescriptor) -{ - if ( hmenuDescriptor ) - GlobalFree( hmenuDescriptor ); - return S_OK; + HOLEMENU hmenuDescriptor) +{ + if ( hmenuDescriptor ) + GlobalFree( hmenuDescriptor ); + return S_OK; }
/*********************************************************************** @@ -1908,72 +1908,73 @@ * these are non null. */ HRESULT WINAPI OleSetMenuDescriptor( - HOLEMENU hOleMenu, - HWND hwndFrame, - HWND hwndActiveObject, - LPOLEINPLACEFRAME lpFrame, - LPOLEINPLACEACTIVEOBJECT lpActiveObject) -{ - OleMenuDescriptor *pOleMenuDescriptor = NULL; - - /* Check args */ - if ( !hwndFrame || (hOleMenu && !hwndActiveObject) ) - return E_INVALIDARG; - - if ( lpFrame || lpActiveObject ) - { - FIXME("(%p, %p, %p, %p, %p), Context sensitive help filtering not implemented!\n", - hOleMenu, - hwndFrame, - hwndActiveObject, - lpFrame, - lpActiveObject); - } - - /* Set up a message hook to intercept the containers frame window messages. - * The message filter is responsible for dispatching menu messages from the - * shared menu which are intended for the object. - */ - - if ( hOleMenu ) /* Want to install dispatching code */ - { - /* If OLEMenu hooks are already installed for this thread, fail - * Note: This effectively means that OleSetMenuDescriptor cannot - * be called twice in succession on the same frame window - * without first calling it with a null hOleMenu to uninstall */ - if ( OLEMenu_IsHookInstalled( GetCurrentThreadId() ) ) - return E_FAIL; - - /* Get the menu descriptor */ - pOleMenuDescriptor = GlobalLock( hOleMenu ); - if ( !pOleMenuDescriptor ) - return E_UNEXPECTED; - - /* Update the menu descriptor */ - pOleMenuDescriptor->hwndFrame = hwndFrame; - pOleMenuDescriptor->hwndActiveObject = hwndActiveObject; - - GlobalUnlock( hOleMenu ); - pOleMenuDescriptor = NULL; - - /* Add a menu descriptor windows property to the frame window */ - SetPropW( hwndFrame, prop_olemenuW, hOleMenu ); - - /* Install thread scope message hooks for WH_GETMESSAGE and WH_CALLWNDPROC */ - if ( !OLEMenu_InstallHooks( GetCurrentThreadId() ) ) - return E_FAIL; - } - else /* Want to uninstall dispatching code */ - { - /* Uninstall the hooks */ - if ( !OLEMenu_UnInstallHooks( GetCurrentThreadId() ) ) - return E_FAIL; - - /* Remove the menu descriptor property from the frame window */ - RemovePropW( hwndFrame, prop_olemenuW ); - } - - return S_OK; + HOLEMENU hOleMenu, + HWND hwndFrame, + HWND hwndActiveObject, + LPOLEINPLACEFRAME lpFrame, + LPOLEINPLACEACTIVEOBJECT lpActiveObject) +{ + OleMenuDescriptor *pOleMenuDescriptor = NULL; + + /* Check args */ + if ( !hwndFrame || (hOleMenu && !hwndActiveObject) ) + return E_INVALIDARG; + + if ( lpFrame || lpActiveObject ) + { + FIXME("(%p, %p, %p, %p, %p), Context sensitive help filtering not implemented!\n", + hOleMenu, + hwndFrame, + hwndActiveObject, + lpFrame, + lpActiveObject); + } + + /* Set up a message hook to intercept the containers frame window messages. + * The message filter is responsible for dispatching menu messages from the + * shared menu which are intended for the object. + */ + + if ( hOleMenu ) /* Want to install dispatching code */ + { + /* If OLEMenu hooks are already installed for this thread, fail + * Note: This effectively means that OleSetMenuDescriptor cannot + * be called twice in succession on the same frame window + * without first calling it with a null hOleMenu to uninstall + */ + if ( OLEMenu_IsHookInstalled( GetCurrentThreadId() ) ) + return E_FAIL; + + /* Get the menu descriptor */ + pOleMenuDescriptor = GlobalLock( hOleMenu ); + if ( !pOleMenuDescriptor ) + return E_UNEXPECTED; + + /* Update the menu descriptor */ + pOleMenuDescriptor->hwndFrame = hwndFrame; + pOleMenuDescriptor->hwndActiveObject = hwndActiveObject; + + GlobalUnlock( hOleMenu ); + pOleMenuDescriptor = NULL; + + /* Add a menu descriptor windows property to the frame window */ + SetPropW( hwndFrame, prop_olemenuW, hOleMenu ); + + /* Install thread scope message hooks for WH_GETMESSAGE and WH_CALLWNDPROC */ + if ( !OLEMenu_InstallHooks( GetCurrentThreadId() ) ) + return E_FAIL; + } + else /* Want to uninstall dispatching code */ + { + /* Uninstall the hooks */ + if ( !OLEMenu_UnInstallHooks( GetCurrentThreadId() ) ) + return E_FAIL; + + /* Remove the menu descriptor property from the frame window */ + RemovePropW( hwndFrame, prop_olemenuW ); + } + + return S_OK; }
/******************************************************************************
Modified: trunk/reactos/dll/win32/ole32/pointermoniker.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/ole32/pointermoni... ============================================================================== --- trunk/reactos/dll/win32/ole32/pointermoniker.c [iso-8859-1] (original) +++ trunk/reactos/dll/win32/ole32/pointermoniker.c [iso-8859-1] Sat Mar 23 10:35:27 2013 @@ -632,7 +632,7 @@ if (FAILED(hr)) return hr;
- hr = IMoniker_QueryInterface(pMoniker, riid, ppv); + hr = IMoniker_QueryInterface(pMoniker, riid, ppv);
if (FAILED(hr)) IMoniker_Release(pMoniker);
Modified: trunk/reactos/dll/win32/ole32/rpc.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/ole32/rpc.c?rev=5... ============================================================================== --- trunk/reactos/dll/win32/ole32/rpc.c [iso-8859-1] (original) +++ trunk/reactos/dll/win32/ole32/rpc.c [iso-8859-1] Sat Mar 23 10:35:27 2013 @@ -1683,7 +1683,7 @@
/* FIXME: Win2003 supports a ServerExecutable value that is passed into * CreateProcess */ - if (!CreateProcessW(NULL, command, NULL, NULL, FALSE, 0, NULL, NULL, &sinfo, &pinfo)) { + if (!CreateProcessW(NULL, command, NULL, NULL, FALSE, DETACHED_PROCESS, NULL, NULL, &sinfo, &pinfo)) { WARN("failed to run local server %s\n", debugstr_w(command)); return HRESULT_FROM_WIN32(GetLastError()); } @@ -1880,7 +1880,7 @@ { CLSID clsid; IStream *stream; - HANDLE ready_event; + HANDLE pipe; HANDLE stop_event; HANDLE thread; BOOL multi_use; @@ -1901,7 +1901,7 @@ ULONG res; BOOL multi_use = lsp->multi_use; OVERLAPPED ovl; - HANDLE pipe_event, hPipe, new_pipe; + HANDLE pipe_event, hPipe = lsp->pipe, new_pipe; DWORD bytes;
TRACE("Starting threader for %s.\n",debugstr_guid(&lsp->clsid)); @@ -1909,18 +1909,6 @@ memset(&ovl, 0, sizeof(ovl)); get_localserver_pipe_name(pipefn, &lsp->clsid); ovl.hEvent = pipe_event = CreateEventW(NULL, FALSE, FALSE, NULL); - - hPipe = CreateNamedPipeW( pipefn, PIPE_ACCESS_DUPLEX | FILE_FLAG_OVERLAPPED, - PIPE_TYPE_BYTE|PIPE_WAIT, PIPE_UNLIMITED_INSTANCES, - 4096, 4096, 500 /* 0.5 second timeout */, NULL ); - if (hPipe == INVALID_HANDLE_VALUE) - { - FIXME("pipe creation failed for %s, le is %u\n", debugstr_w(pipefn), GetLastError()); - CloseHandle(pipe_event); - return 1; - } - - SetEvent(lsp->ready_event);
while (1) { if (!ConnectNamedPipe(hPipe, &ovl)) @@ -2011,8 +1999,9 @@ /* starts listening for a local server */ HRESULT RPC_StartLocalServer(REFCLSID clsid, IStream *stream, BOOL multi_use, void **registration) { - DWORD tid; + DWORD tid, err; struct local_server_params *lsp; + WCHAR pipefn[100];
lsp = HeapAlloc(GetProcessHeap(), 0, sizeof(*lsp)); if (!lsp) @@ -2021,33 +2010,35 @@ lsp->clsid = *clsid; lsp->stream = stream; IStream_AddRef(stream); - lsp->ready_event = CreateEventW(NULL, FALSE, FALSE, NULL); - if (!lsp->ready_event) + lsp->stop_event = CreateEventW(NULL, FALSE, FALSE, NULL); + if (!lsp->stop_event) { HeapFree(GetProcessHeap(), 0, lsp); return HRESULT_FROM_WIN32(GetLastError()); } - lsp->stop_event = CreateEventW(NULL, FALSE, FALSE, NULL); - if (!lsp->stop_event) - { - CloseHandle(lsp->ready_event); + lsp->multi_use = multi_use; + + get_localserver_pipe_name(pipefn, &lsp->clsid); + lsp->pipe = CreateNamedPipeW(pipefn, PIPE_ACCESS_DUPLEX | FILE_FLAG_OVERLAPPED, + PIPE_TYPE_BYTE|PIPE_WAIT, PIPE_UNLIMITED_INSTANCES, + 4096, 4096, 500 /* 0.5 second timeout */, NULL); + if (lsp->pipe == INVALID_HANDLE_VALUE) + { + err = GetLastError(); + FIXME("pipe creation failed for %s, le is %u\n", debugstr_w(pipefn), GetLastError()); + CloseHandle(lsp->stop_event); HeapFree(GetProcessHeap(), 0, lsp); - return HRESULT_FROM_WIN32(GetLastError()); - } - lsp->multi_use = multi_use; + return HRESULT_FROM_WIN32(err); + }
lsp->thread = CreateThread(NULL, 0, local_server_thread, lsp, 0, &tid); if (!lsp->thread) { - CloseHandle(lsp->ready_event); + CloseHandle(lsp->pipe); CloseHandle(lsp->stop_event); HeapFree(GetProcessHeap(), 0, lsp); return HRESULT_FROM_WIN32(GetLastError()); } - - WaitForSingleObject(lsp->ready_event, INFINITE); - CloseHandle(lsp->ready_event); - lsp->ready_event = NULL;
*registration = lsp; return S_OK;
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 Mar 23 10:35:27 2013 @@ -1767,7 +1767,7 @@ StorageBaseImpl *This = impl_from_IStorage(iface);
BOOL skip_storage = FALSE, skip_stream = FALSE; - int i; + DWORD i;
TRACE("(%p, %d, %p, %p, %p)\n", iface, ciidExclude, rgiidExclude, @@ -2822,7 +2822,7 @@ { ULONG current_block = This->extBigBlockDepotStart; ULONG cache_size = This->extBigBlockDepotCount * 2; - int i; + ULONG i;
This->extBigBlockDepotLocations = HeapAlloc(GetProcessHeap(), 0, sizeof(ULONG) * cache_size); if (!This->extBigBlockDepotLocations)
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 Mar 23 10:35:27 2013 @@ -2360,8 +2360,8 @@ REFIID riid, void **ppvObj) { - FIXME(":stub\n"); - return E_NOTIMPL; + TRACE("(%p)->(%p %p %s %p)\n", This, pbc, pmkToLeft, debugstr_guid(riid), ppvObj); + return IMoniker_RemoteBindToStorage_Proxy(This, pbc, pmkToLeft, riid, (IUnknown**)ppvObj); }
HRESULT __RPC_STUB IMoniker_BindToStorage_Stub( @@ -2371,8 +2371,8 @@ REFIID riid, IUnknown **ppvObj) { - FIXME(":stub\n"); - return E_NOTIMPL; + TRACE("(%p)->(%p %p %s %p)\n", This, pbc, pmkToLeft, debugstr_guid(riid), ppvObj); + return IMoniker_BindToStorage(This, pbc, pmkToLeft, riid, (void**)ppvObj); }
HRESULT CALLBACK IEnumString_Next_Proxy(
Modified: trunk/reactos/media/doc/README.WINE URL: http://svn.reactos.org/svn/reactos/trunk/reactos/media/doc/README.WINE?rev=5... ============================================================================== --- trunk/reactos/media/doc/README.WINE [iso-8859-1] (original) +++ trunk/reactos/media/doc/README.WINE [iso-8859-1] Sat Mar 23 10:35:27 2013 @@ -130,7 +130,7 @@ reactos/dll/win32/objsel # Synced to Wine-1.5.19 reactos/dll/win32/odbc32 # Out of sync. Depends on port of Linux ODBC. reactos/dll/win32/odbccp32 # Synced to Wine-1.5.19 -reactos/dll/win32/ole32 # Synced to Wine-1.5.19 +reactos/dll/win32/ole32 # Synced to Wine-1.5.26 reactos/dll/win32/oleacc # Autosync reactos/dll/win32/oleaut32 # Synced to Wine-1.5.19 reactos/dll/win32/olecli32 # Synced to Wine-1.5.19