Author: fireball Date: Sun Apr 16 21:34:25 2006 New Revision: 21614
URL: http://svn.reactos.ru/svn/reactos?rev=21614&view=rev Log: Sync to Wine-0_9_10: Francois Gouget fgouget@free.fr - Fix compatibility with native advpack dlls.
Sync to Wine-0_9_7: Dmitry Timoshkov dmitry@codeweavers.com - Make more arrays const.
Sync to Wine-0_9_6: Jacek Caban jacek@codeweavers.com - urlmon: Pass FORMATETC to OnDataAvailable. - urlmon: Added implementation of protocol stream. - urlmon: Added implementation of QueryService and stub implementation of IHttpNegotiate2 interface. - urlmon: Query service provider for IInternetProtocol. - urlmon: Added GetBindInfoString implementation. - urlmon: Reimplement CoInternetCombineUrl to use pluggable protocol. - urlmon: Use CoInternetCombineUrl in URLMonikerImpl_Construct. - urlmon: Fix ref counting. Rolf Kalbermatter rolf.kalbermatter@citeng.com - urlmon: Fix a LARGE_INTEGER truncation.
Modified: trunk/reactos/dll/win32/urlmon/binding.c trunk/reactos/dll/win32/urlmon/internet.c trunk/reactos/dll/win32/urlmon/regsvr.c trunk/reactos/dll/win32/urlmon/umon.c trunk/reactos/dll/win32/urlmon/umstream.c trunk/reactos/dll/win32/urlmon/urlmon_main.c trunk/reactos/include/advpub.h trunk/reactos/media/doc/README.WINE
Modified: trunk/reactos/dll/win32/urlmon/binding.c URL: http://svn.reactos.ru/svn/reactos/trunk/reactos/dll/win32/urlmon/binding.c?r... ============================================================================== --- trunk/reactos/dll/win32/urlmon/binding.c (original) +++ trunk/reactos/dll/win32/urlmon/binding.c Sun Apr 16 21:34:25 2006 @@ -34,6 +34,8 @@
WINE_DEFAULT_DEBUG_CHANNEL(urlmon);
+typedef struct ProtocolStream ProtocolStream; + typedef struct { const IBindingVtbl *lpBindingVtbl; const IInternetProtocolSinkVtbl *lpInternetProtocolSinkVtbl; @@ -44,7 +46,8 @@
IBindStatusCallback *callback; IInternetProtocol *protocol; - IStream *stream; + IServiceProvider *service_provider; + ProtocolStream *stream;
BINDINFO bindinfo; DWORD bindf; @@ -52,13 +55,311 @@ LPWSTR url; } Binding;
+struct ProtocolStream { + const IStreamVtbl *lpStreamVtbl; + + LONG ref; + + IInternetProtocol *protocol; + + BYTE buf[1024*8]; + DWORD buf_size; +}; + #define BINDING(x) ((IBinding*) &(x)->lpBindingVtbl) #define PROTSINK(x) ((IInternetProtocolSink*) &(x)->lpInternetProtocolSinkVtbl) #define BINDINF(x) ((IInternetBindInfo*) &(x)->lpInternetBindInfoVtbl) #define SERVPROV(x) ((IServiceProvider*) &(x)->lpServiceProviderVtbl)
+#define STREAM(x) ((IStream*) &(x)->lpStreamVtbl) + +static HRESULT WINAPI HttpNegotiate_QueryInterface(IHttpNegotiate2 *iface, + REFIID riid, void **ppv) +{ + *ppv = NULL; + + if(IsEqualGUID(&IID_IUnknown, riid)) { + TRACE("(IID_IUnknown %p)\n", ppv); + *ppv = iface; + }else if(IsEqualGUID(&IID_IHttpNegotiate, riid)) { + TRACE("(IID_IHttpNegotiate %p)\n", ppv); + *ppv = iface; + }else if(IsEqualGUID(&IID_IHttpNegotiate2, riid)) { + TRACE("(IID_IHttpNegotiate2 %p)\n", ppv); + *ppv = iface; + } + + if(*ppv) { + IHttpNegotiate2_AddRef(iface); + return S_OK; + } + + WARN("Unsupported interface %s\n", debugstr_guid(riid)); + return E_NOINTERFACE; +} + +static ULONG WINAPI HttpNegotiate_AddRef(IHttpNegotiate2 *iface) +{ + URLMON_LockModule(); + return 2; +} + +static ULONG WINAPI HttpNegotiate_Release(IHttpNegotiate2 *iface) +{ + URLMON_UnlockModule(); + return 1; +} + +static HRESULT WINAPI HttpNegotiate_BeginningTransaction(IHttpNegotiate2 *iface, + LPCWSTR szURL, LPCWSTR szHeaders, DWORD dwReserved, LPWSTR *pszAdditionalHeaders) +{ + FIXME("(%s %s %ld %p)\n", debugstr_w(szURL), debugstr_w(szHeaders), dwReserved, + pszAdditionalHeaders); + return E_NOTIMPL; +} + +static HRESULT WINAPI HttpNegotiate_OnResponse(IHttpNegotiate2 *iface, DWORD dwResponseCode, + LPCWSTR szResponseHeaders, LPCWSTR szRequestHeaders, + LPWSTR *pszAdditionalRequestHeaders) +{ + FIXME("(%ld %s %s %p)\n", dwResponseCode, debugstr_w(szResponseHeaders), + debugstr_w(szRequestHeaders), pszAdditionalRequestHeaders); + return E_NOTIMPL; +} + +static HRESULT WINAPI HttpNegotiate_GetRootSecurityId(IHttpNegotiate2 *iface, + BYTE *pbSecurityId, DWORD *pcbSecurityId, DWORD_PTR dwReserved) +{ + FIXME("(%p %p %ld)\n", pbSecurityId, pcbSecurityId, dwReserved); + return E_NOTIMPL; +} + +static const IHttpNegotiate2Vtbl HttpNegotiate2Vtbl = { + HttpNegotiate_QueryInterface, + HttpNegotiate_AddRef, + HttpNegotiate_Release, + HttpNegotiate_BeginningTransaction, + HttpNegotiate_OnResponse, + HttpNegotiate_GetRootSecurityId +}; + +static IHttpNegotiate2 HttpNegotiate = { &HttpNegotiate2Vtbl }; + +#define STREAM_THIS(iface) DEFINE_THIS(ProtocolStream, Stream, iface) + +static HRESULT WINAPI ProtocolStream_QueryInterface(IStream *iface, + REFIID riid, void **ppv) +{ + ProtocolStream *This = STREAM_THIS(iface); + + *ppv = NULL; + + if(IsEqualGUID(&IID_IUnknown, riid)) { + TRACE("(%p)->(IID_IUnknown %p)\n", This, ppv); + *ppv = STREAM(This); + }else if(IsEqualGUID(&IID_ISequentialStream, riid)) { + TRACE("(%p)->(IID_ISequentialStream %p)\n", This, ppv); + *ppv = STREAM(This); + }else if(IsEqualGUID(&IID_IStream, riid)) { + TRACE("(%p)->(IID_IStream %p)\n", This, ppv); + *ppv = STREAM(This); + } + + if(*ppv) { + IStream_AddRef(STREAM(This)); + return S_OK; + } + + WARN("(%p)->(%s %p)\n", This, debugstr_guid(riid), ppv); + return E_NOINTERFACE; +} + +static ULONG WINAPI ProtocolStream_AddRef(IStream *iface) +{ + ProtocolStream *This = STREAM_THIS(iface); + LONG ref = InterlockedIncrement(&This->ref); + + TRACE("(%p) ref=%ld\n", This, ref); + + return ref; +} + +static ULONG WINAPI ProtocolStream_Release(IStream *iface) +{ + ProtocolStream *This = STREAM_THIS(iface); + LONG ref = InterlockedDecrement(&This->ref); + + TRACE("(%p) ref=%ld\n", This, ref); + + if(!ref) { + IInternetProtocol_Release(This->protocol); + HeapFree(GetProcessHeap(), 0, This); + + URLMON_UnlockModule(); + } + + return ref; +} + +static HRESULT WINAPI ProtocolStream_Read(IStream *iface, void *pv, + ULONG cb, ULONG *pcbRead) +{ + ProtocolStream *This = STREAM_THIS(iface); + DWORD read = 0, pread = 0; + + TRACE("(%p)->(%p %ld %p)\n", This, pv, cb, pcbRead); + + if(This->buf_size) { + read = cb; + + if(read > This->buf_size) + read = This->buf_size; + + memcpy(pv, This->buf, read); + + if(read < This->buf_size) + memmove(This->buf, This->buf+read, This->buf_size-read); + This->buf_size -= read; + } + + if(read == cb) { + *pcbRead = read; + return S_OK; + } + + IInternetProtocol_Read(This->protocol, (PBYTE)pv+read, cb-read, &pread); + *pcbRead = read + pread; + + return read || pread ? S_OK : S_FALSE; +} + +static HRESULT WINAPI ProtocolStream_Write(IStream *iface, const void *pv, + ULONG cb, ULONG *pcbWritten) +{ + ProtocolStream *This = STREAM_THIS(iface); + + TRACE("(%p)->(%p %ld %p)\n", This, pv, cb, pcbWritten); + + return STG_E_ACCESSDENIED; +} + +static HRESULT WINAPI ProtocolStream_Seek(IStream *iface, LARGE_INTEGER dlibMove, + DWORD dwOrigin, ULARGE_INTEGER *plibNewPosition) +{ + ProtocolStream *This = STREAM_THIS(iface); + FIXME("(%p)->(%ld %08lx %p)\n", This, dlibMove.u.LowPart, dwOrigin, plibNewPosition); + return E_NOTIMPL; +} + +static HRESULT WINAPI ProtocolStream_SetSize(IStream *iface, ULARGE_INTEGER libNewSize) +{ + ProtocolStream *This = STREAM_THIS(iface); + FIXME("(%p)->(%ld)\n", This, libNewSize.u.LowPart); + return E_NOTIMPL; +} + +static HRESULT WINAPI ProtocolStream_CopyTo(IStream *iface, IStream *pstm, + ULARGE_INTEGER cb, ULARGE_INTEGER *pcbRead, ULARGE_INTEGER *pcbWritten) +{ + ProtocolStream *This = STREAM_THIS(iface); + FIXME("(%p)->(%p %ld %p %p)\n", This, pstm, cb.u.LowPart, pcbRead, pcbWritten); + return E_NOTIMPL; +} + +static HRESULT WINAPI ProtocolStream_Commit(IStream *iface, DWORD grfCommitFlags) +{ + ProtocolStream *This = STREAM_THIS(iface); + + TRACE("(%p)->(%08lx)\n", This, grfCommitFlags); + + return E_NOTIMPL; +} + +static HRESULT WINAPI ProtocolStream_Revert(IStream *iface) +{ + ProtocolStream *This = STREAM_THIS(iface); + + TRACE("(%p)\n", This); + + return E_NOTIMPL; +} + +static HRESULT WINAPI ProtocolStream_LockRegion(IStream *iface, ULARGE_INTEGER libOffset, + ULARGE_INTEGER cb, DWORD dwLockType) +{ + ProtocolStream *This = STREAM_THIS(iface); + FIXME("(%p)->(%ld %ld %ld)\n", This, libOffset.u.LowPart, cb.u.LowPart, dwLockType); + return E_NOTIMPL; +} + +static HRESULT WINAPI ProtocolStream_UnlockRegion(IStream *iface, + ULARGE_INTEGER libOffset, ULARGE_INTEGER cb, DWORD dwLockType) +{ + ProtocolStream *This = STREAM_THIS(iface); + FIXME("(%p)->(%ld %ld %ld)\n", This, libOffset.u.LowPart, cb.u.LowPart, dwLockType); + return E_NOTIMPL; +} + +static HRESULT WINAPI ProtocolStream_Stat(IStream *iface, STATSTG *pstatstg, + DWORD dwStatFlag) +{ + ProtocolStream *This = STREAM_THIS(iface); + FIXME("(%p)->(%p %08lx)\n", This, pstatstg, dwStatFlag); + return E_NOTIMPL; +} + +static HRESULT WINAPI ProtocolStream_Clone(IStream *iface, IStream **ppstm) +{ + ProtocolStream *This = STREAM_THIS(iface); + FIXME("(%p)->(%p)\n", This, ppstm); + return E_NOTIMPL; +} + +#undef STREAM_THIS + +static const IStreamVtbl ProtocolStreamVtbl = { + ProtocolStream_QueryInterface, + ProtocolStream_AddRef, + ProtocolStream_Release, + ProtocolStream_Read, + ProtocolStream_Write, + ProtocolStream_Seek, + ProtocolStream_SetSize, + ProtocolStream_CopyTo, + ProtocolStream_Commit, + ProtocolStream_Revert, + ProtocolStream_LockRegion, + ProtocolStream_UnlockRegion, + ProtocolStream_Stat, + ProtocolStream_Clone +};
#define BINDING_THIS(iface) DEFINE_THIS(Binding, Binding, iface) + +static ProtocolStream *create_stream(IInternetProtocol *protocol) +{ + ProtocolStream *ret = HeapAlloc(GetProcessHeap(), 0, sizeof(ProtocolStream)); + + ret->lpStreamVtbl = &ProtocolStreamVtbl; + ret->ref = 1; + ret->buf_size = 0; + + IInternetProtocol_AddRef(protocol); + ret->protocol = protocol; + + URLMON_LockModule(); + + return ret; +} + +static void fill_stream_buffer(ProtocolStream *This) +{ + DWORD read = 0; + + IInternetProtocol_Read(This->protocol, This->buf+This->buf_size, + sizeof(This->buf)-This->buf_size, &read); + This->buf_size += read; +}
static HRESULT WINAPI Binding_QueryInterface(IBinding *iface, REFIID riid, void **ppv) { @@ -83,8 +384,10 @@ *ppv = SERVPROV(This); }
- if(*ppv) + if(*ppv) { + IBinding_AddRef(BINDING(This)); return S_OK; + }
WARN("Unsupported interface %s\n", debugstr_guid(riid)); return E_NOINTERFACE; @@ -112,14 +415,18 @@ IBindStatusCallback_Release(This->callback); if(This->protocol) IInternetProtocol_Release(This->protocol); + if(This->service_provider) + IServiceProvider_Release(This->service_provider); if(This->stream) - IStream_Release(This->stream); + IStream_Release(STREAM(This->stream));
ReleaseBindInfo(&This->bindinfo); HeapFree(GetProcessHeap(), 0, This->mime); HeapFree(GetProcessHeap(), 0, This->url);
HeapFree(GetProcessHeap(), 0, This); + + URLMON_UnlockModule(); }
return ref; @@ -247,9 +554,8 @@ DWORD grfBSCF, ULONG ulProgress, ULONG ulProgressMax) { Binding *This = PROTSINK_THIS(iface); - DWORD read = 0, cread; STGMEDIUM stgmed; - BYTE buf[1024]; + FORMATETC formatetc;
TRACE("(%p)->(%ld %lu %lu)\n", This, grfBSCF, ulProgress, ulProgressMax);
@@ -267,18 +573,20 @@
if(grfBSCF & BSCF_FIRSTDATANOTIFICATION) IInternetProtocol_LockRequest(This->protocol, 0); - do { - cread = 0; - IInternetProtocol_Read(This->protocol, buf, sizeof(buf), &cread); - IStream_Write(This->stream, buf, read, NULL); - read += cread; - }while(cread); + + fill_stream_buffer(This->stream);
stgmed.tymed = TYMED_ISTREAM; - stgmed.u.pstm = This->stream; - - IBindStatusCallback_OnDataAvailable(This->callback, grfBSCF, read, - NULL /* FIXME */, &stgmed); + stgmed.u.pstm = STREAM(This->stream); + + formatetc.cfFormat = 0; /* FIXME */ + formatetc.ptd = NULL; + formatetc.dwAspect = 1; + formatetc.lindex = -1; + formatetc.tymed = TYMED_ISTREAM; + + IBindStatusCallback_OnDataAvailable(This->callback, grfBSCF, This->stream->buf_size, + &formatetc, &stgmed);
if(grfBSCF & BSCF_LASTDATANOTIFICATION) IBindStatusCallback_OnStopBinding(This->callback, S_OK, NULL); @@ -351,7 +659,39 @@ ULONG ulStringType, LPOLESTR *ppwzStr, ULONG cEl, ULONG *pcElFetched) { Binding *This = BINDINF_THIS(iface); - FIXME("(%p)->(%ld %p %ld %p)\n", This, ulStringType, ppwzStr, cEl, pcElFetched); + + TRACE("(%p)->(%ld %p %ld %p)\n", This, ulStringType, ppwzStr, cEl, pcElFetched); + + switch(ulStringType) { + case BINDSTRING_ACCEPT_MIMES: { + static const WCHAR wszMimes[] = {'*','/','*',0}; + + if(!ppwzStr || !pcElFetched) + return E_INVALIDARG; + + ppwzStr[0] = CoTaskMemAlloc(sizeof(wszMimes)); + memcpy(ppwzStr[0], wszMimes, sizeof(wszMimes)); + *pcElFetched = 1; + return S_OK; + } + case BINDSTRING_USER_AGENT: { + IInternetBindInfo *bindinfo = NULL; + HRESULT hres; + + hres = IBindStatusCallback_QueryInterface(This->callback, &IID_IInternetBindInfo, + (void**)&bindinfo); + if(FAILED(hres)) + return hres; + + hres = IInternetBindInfo_GetBindString(bindinfo, ulStringType, ppwzStr, + cEl, pcElFetched); + IInternetBindInfo_Release(bindinfo); + + return hres; + } + } + + FIXME("not supported string type %ld\n", ulStringType); return E_NOTIMPL; }
@@ -390,7 +730,22 @@ REFGUID guidService, REFIID riid, void **ppv) { Binding *This = SERVPROV_THIS(iface); - FIXME("(%p)->(%s %s %p)\n", This, debugstr_guid(guidService), debugstr_guid(riid), ppv); + HRESULT hres; + + TRACE("(%p)->(%s %s %p)\n", This, debugstr_guid(guidService), debugstr_guid(riid), ppv); + + if(This->service_provider) { + hres = IServiceProvider_QueryService(This->service_provider, guidService, + riid, ppv); + if(SUCCEEDED(hres)) + return hres; + } + + if(IsEqualGUID(&IID_IHttpNegotiate, guidService) + || IsEqualGUID(&IID_IHttpNegotiate2, guidService)) + return IHttpNegotiate2_QueryInterface(&HttpNegotiate, riid, ppv); + + WARN("unknown service %s\n", debugstr_guid(guidService)); return E_NOTIMPL; }
@@ -427,6 +782,13 @@ if(SUCCEEDED(hres)) return S_OK;
+ if(This->service_provider) { + hres = IServiceProvider_QueryService(This->service_provider, &IID_IInternetProtocol, + &IID_IInternetProtocol, (void**)&This->protocol); + if(SUCCEEDED(hres)) + return S_OK; + } + hres = get_protocol_iface(url, &unk); if(FAILED(hres)) return hres; @@ -455,6 +817,8 @@ return E_NOTIMPL; }
+ URLMON_LockModule(); + ret = HeapAlloc(GetProcessHeap(), 0, sizeof(Binding));
ret->lpBindingVtbl = &BindingVtbl; @@ -466,6 +830,7 @@
ret->callback = NULL; ret->protocol = NULL; + ret->service_provider = NULL; ret->stream = NULL; ret->mime = NULL; ret->url = NULL; @@ -481,6 +846,9 @@ return hres; }
+ IBindStatusCallback_QueryInterface(ret->callback, &IID_IServiceProvider, + (void**)&ret->service_provider); + hres = get_protocol(ret, url); if(FAILED(hres)) { WARN("Could not get protocol handler\n"); @@ -505,7 +873,7 @@ ret->url = HeapAlloc(GetProcessHeap(), 0, len*sizeof(WCHAR)); memcpy(ret->url, url, len*sizeof(WCHAR));
- CreateStreamOnHGlobal(NULL, TRUE, &ret->stream); + ret->stream = create_stream(ret->protocol);
*binding = ret; return S_OK; @@ -541,7 +909,7 @@ IBindStatusCallback_OnStopBinding(binding->callback, S_OK, NULL); }
- IStream_AddRef(binding->stream); + IStream_AddRef(STREAM(binding->stream)); *ppv = binding->stream;
IBinding_Release(BINDING(binding));
Modified: trunk/reactos/dll/win32/urlmon/internet.c URL: http://svn.reactos.ru/svn/reactos/trunk/reactos/dll/win32/urlmon/internet.c?... ============================================================================== --- trunk/reactos/dll/win32/urlmon/internet.c (original) +++ trunk/reactos/dll/win32/urlmon/internet.c Sun Apr 16 21:34:25 2006 @@ -166,7 +166,9 @@ return E_FAIL; }
- +/************************************************************************** + * CoInternetParseUrl (URLMON.@) + */ HRESULT WINAPI CoInternetParseUrl(LPCWSTR pwzUrl, PARSEACTION ParseAction, DWORD dwFlags, LPWSTR pszResult, DWORD cchResult, DWORD *pcchResult, DWORD dwReserved) { @@ -190,3 +192,36 @@
return E_NOTIMPL; } + +/************************************************************************** + * CoInternetCombineUrl (URLMON.@) + */ +HRESULT WINAPI CoInternetCombineUrl(LPCWSTR pwzBaseUrl, LPCWSTR pwzRelativeUrl, + DWORD dwCombineFlags, LPWSTR pwzResult, DWORD cchResult, DWORD *pcchResult, + DWORD dwReserved) +{ + IInternetProtocolInfo *protocol_info; + DWORD size = cchResult; + HRESULT hres; + + TRACE("(%s,%s,0x%08lx,%p,%ld,%p,%ld)\n", debugstr_w(pwzBaseUrl), + debugstr_w(pwzRelativeUrl), dwCombineFlags, pwzResult, cchResult, pcchResult, + dwReserved); + + protocol_info = get_protocol_info(pwzBaseUrl); + + if(protocol_info) { + hres = IInternetProtocolInfo_CombineUrl(protocol_info, pwzBaseUrl, pwzRelativeUrl, + dwCombineFlags, pwzResult, cchResult, pcchResult, dwReserved); + if(SUCCEEDED(hres)) + return hres; + } + + + hres = UrlCombineW(pwzBaseUrl, pwzRelativeUrl, pwzResult, &size, dwCombineFlags); + + if(pcchResult) + *pcchResult = size; + + return hres; +}
Modified: trunk/reactos/dll/win32/urlmon/regsvr.c URL: http://svn.reactos.ru/svn/reactos/trunk/reactos/dll/win32/urlmon/regsvr.c?re... ============================================================================== --- trunk/reactos/dll/win32/urlmon/regsvr.c (original) +++ trunk/reactos/dll/win32/urlmon/regsvr.c Sun Apr 16 21:34:25 2006 @@ -580,9 +580,9 @@ { HRESULT hres; HMODULE hAdvpack; - typeof(RegInstall) *pRegInstall; - STRTABLE strtable; - STRENTRY pse[7]; + typeof(RegInstallA) *pRegInstall; + STRTABLEA strtable; + STRENTRYA pse[7]; static CLSID const *clsids[34]; int i = 0;
@@ -608,7 +608,7 @@ strtable.pse = pse;
hAdvpack = LoadLibraryW(wszAdvpack); - pRegInstall = (typeof(RegInstall)*)GetProcAddress(hAdvpack, "RegInstall"); + pRegInstall = (typeof(RegInstallA)*)GetProcAddress(hAdvpack, "RegInstall");
hres = pRegInstall(URLMON_hInstance, doregister ? "RegisterDll" : "UnregisterDll", &strtable);
Modified: trunk/reactos/dll/win32/urlmon/umon.c URL: http://svn.reactos.ru/svn/reactos/trunk/reactos/dll/win32/urlmon/umon.c?rev=... ============================================================================== --- trunk/reactos/dll/win32/urlmon/umon.c (original) +++ trunk/reactos/dll/win32/urlmon/umon.c Sun Apr 16 21:34:25 2006 @@ -259,7 +259,7 @@ 0, NULL); if (!pwchError) { - static WCHAR achFormat[] = { '%', '0', '8', 'x', 0 }; + static const WCHAR achFormat[] = { '%', '0', '8', 'x', 0 };
pwchError =(WCHAR *) LocalAlloc(LMEM_FIXED, sizeof(WCHAR) * 9); wsprintfW(pwchError, achFormat, hr); @@ -1065,29 +1065,19 @@ DWORD sizeStr = INTERNET_MAX_URL_LENGTH;
TRACE("(%p,%s,%s)\n",This,debugstr_w(lpszLeftURLName),debugstr_w(lpszURLName)); - memset(This, 0, sizeof(*This)); - - /* Initialize the virtual function table. */ + This->lpvtbl = &VT_URLMonikerImpl; This->ref = 0;
+ sizeStr = lstrlenW(lpszURLName)+1; + if(lpszLeftURLName) + sizeStr += strlenW(lpszLeftURLName)+32; + + This->URLName = HeapAlloc(GetProcessHeap(), 0, sizeStr*sizeof(WCHAR)); + if(lpszLeftURLName) { - hres = UrlCombineW(lpszLeftURLName, lpszURLName, NULL, &sizeStr, 0); - if(FAILED(hres)) { - return hres; - } - sizeStr++; - } - else - sizeStr = lstrlenW(lpszURLName)+1; - - This->URLName=HeapAlloc(GetProcessHeap(),0,sizeof(WCHAR)*(sizeStr)); - - if (This->URLName==NULL) - return E_OUTOFMEMORY; - - if(lpszLeftURLName) { - hres = UrlCombineW(lpszLeftURLName, lpszURLName, This->URLName, &sizeStr, 0); + hres = CoInternetCombineUrl(lpszLeftURLName, lpszURLName, 0, This->URLName, sizeStr, + &sizeStr, 0); if(FAILED(hres)) { HeapFree(GetProcessHeap(), 0, This->URLName); return hres;
Modified: trunk/reactos/dll/win32/urlmon/umstream.c URL: http://svn.reactos.ru/svn/reactos/trunk/reactos/dll/win32/urlmon/umstream.c?... ============================================================================== --- trunk/reactos/dll/win32/urlmon/umstream.c (original) +++ trunk/reactos/dll/win32/urlmon/umstream.c Sun Apr 16 21:34:25 2006 @@ -252,26 +252,21 @@ return E_NOTIMPL; }
-static HRESULT WINAPI IStream_fnSeek ( IStream * iface, +static HRESULT WINAPI IStream_fnSeek (IStream * iface, LARGE_INTEGER dlibMove, DWORD dwOrigin, ULARGE_INTEGER* plibNewPosition) { - DWORD pos, newposlo; - LONG newposhi; - - IUMCacheStream *This = (IUMCacheStream *)iface; - - TRACE("(%p)\n",This); - - pos = dlibMove.QuadPart; /* FIXME: truncates */ - newposhi = 0; - newposlo = SetFilePointer( This->handle, pos, &newposhi, dwOrigin ); - if( newposlo == INVALID_SET_FILE_POINTER && GetLastError()) + LARGE_INTEGER newpos; + IUMCacheStream *This = (IUMCacheStream *)iface; + + TRACE("(%p)\n",This); + + if (!SetFilePointerEx( This->handle, dlibMove, &newpos, dwOrigin )) return E_FAIL;
if (plibNewPosition) - plibNewPosition->QuadPart = newposlo | ( (LONGLONG)newposhi<<32); + plibNewPosition->QuadPart = newpos.QuadPart;
return S_OK; } @@ -279,11 +274,13 @@ static HRESULT WINAPI IStream_fnSetSize (IStream * iface, ULARGE_INTEGER libNewSize) { - IUMCacheStream *This = (IUMCacheStream *)iface; - - TRACE("(%p)\n",This); - - if( ! SetFilePointer( This->handle, libNewSize.QuadPart, NULL, FILE_BEGIN ) ) + LARGE_INTEGER newpos; + IUMCacheStream *This = (IUMCacheStream *)iface; + + TRACE("(%p)\n",This); + + newpos.QuadPart = libNewSize.QuadPart; + if( ! SetFilePointerEx( This->handle, newpos, NULL, FILE_BEGIN ) ) return E_FAIL;
if( ! SetEndOfFile( This->handle ) )
Modified: trunk/reactos/dll/win32/urlmon/urlmon_main.c URL: http://svn.reactos.ru/svn/reactos/trunk/reactos/dll/win32/urlmon/urlmon_main... ============================================================================== --- trunk/reactos/dll/win32/urlmon/urlmon_main.c (original) +++ trunk/reactos/dll/win32/urlmon/urlmon_main.c Sun Apr 16 21:34:25 2006 @@ -293,19 +293,6 @@ return S_OK; }
-HRESULT WINAPI CoInternetCombineUrl(LPCWSTR pwzBaseUrl, LPCWSTR pwzRelativeUrl, DWORD dwCombineFlags, - LPWSTR pwzResult, DWORD cchResult, DWORD *pcchResult, DWORD dwReserved) -{ - HRESULT hres; - DWORD size = cchResult; - - TRACE("(%s,%s,0x%08lx,%p,%ld,%p,%ld)\n", debugstr_w(pwzBaseUrl), debugstr_w(pwzRelativeUrl), dwCombineFlags, - pwzResult, cchResult, pcchResult, dwReserved); - hres = UrlCombineW(pwzBaseUrl, pwzRelativeUrl, pwzResult, &size, dwCombineFlags); - if(pcchResult) *pcchResult = size; - return hres; -} - HRESULT WINAPI CoInternetCompareUrl(LPCWSTR pwzUrl1, LPCWSTR pwzUrl2, DWORD dwCompareFlags) { TRACE("(%s,%s,%08lx)\n", debugstr_w(pwzUrl1), debugstr_w(pwzUrl2), dwCompareFlags);
Modified: trunk/reactos/include/advpub.h URL: http://svn.reactos.ru/svn/reactos/trunk/reactos/include/advpub.h?rev=21614&a... ============================================================================== --- trunk/reactos/include/advpub.h (original) +++ trunk/reactos/include/advpub.h Sun Apr 16 21:34:25 2006 @@ -18,33 +18,109 @@ #ifndef __WINE_ADVPUB_H #define __WINE_ADVPUB_H
+#include <setupapi.h> +/* FIXME: #include <cfgmgr32.h> */ + #ifdef __cplusplus extern "C" { #endif
-typedef struct _CabInfo { - PSTR pszCab; - PSTR pszInf; - PSTR pszSection; - char szSrcPath[MAX_PATH]; - DWORD dwFlags; -} CABINFO, *PCABINFO; - -typedef struct _StrEntry { +typedef struct _CabInfoA +{ + LPSTR pszCab; + LPSTR pszInf; + LPSTR pszSection; + CHAR szSrcPath[MAX_PATH]; + DWORD dwFlags; +} CABINFOA, *PCABINFOA; + +typedef struct _CabInfoW +{ + LPWSTR pszCab; + LPWSTR pszInf; + LPWSTR pszSection; + WCHAR szSrcPath[MAX_PATH]; + DWORD dwFlags; +} CABINFOW, *PCABINFOW; + +DECL_WINELIB_TYPE_AW(CABINFO) +DECL_WINELIB_TYPE_AW(PCABINFO) + +typedef struct _PERUSERSECTIONA +{ + CHAR szGUID[39 /*MAX_GUID_STRING_LEN*/ + 20]; + CHAR szDispName[128]; + CHAR szLocale[10]; + CHAR szStub[MAX_PATH * 4]; + CHAR szVersion[32]; + CHAR szCompID[128]; + DWORD dwIsInstalled; + BOOL bRollback; +} PERUSERSECTIONA, *PPERUSERSECTIONA; + +typedef struct _PERUSERSECTIONW +{ + WCHAR szGUID[39 /*MAX_GUID_STRING_LEN*/ + 20]; + WCHAR szDispName[128]; + WCHAR szLocale[10]; + WCHAR szStub[MAX_PATH * 4]; + WCHAR szVersion[32]; + WCHAR szCompID[128]; + DWORD dwIsInstalled; + BOOL bRollback; +} PERUSERSECTIONW, *PPERUSERSECTIONW; + +DECL_WINELIB_TYPE_AW(PERUSERSECTION) +DECL_WINELIB_TYPE_AW(PPERUSERSECTION) + +typedef struct _StrEntryA +{ LPSTR pszName; LPSTR pszValue; -} STRENTRY, *LPSTRENTRY; - -typedef const STRENTRY CSTRENTRY; -typedef CSTRENTRY *LPCSTRENTRY; - -typedef struct _StrTable { +} STRENTRYA, *LPSTRENTRYA; + +typedef struct _StrEntryW +{ + LPWSTR pszName; + LPWSTR pszValue; +} STRENTRYW, *LPSTRENTRYW; + +DECL_WINELIB_TYPE_AW(STRENTRY) +DECL_WINELIB_TYPE_AW(LPSTRENTRY) + +typedef struct _StrTableA +{ DWORD cEntries; - LPSTRENTRY pse; -} STRTABLE, *LPSTRTABLE; - -typedef const STRTABLE CSTRTABLE; -typedef CSTRTABLE *LPCSTRTABLE; + STRENTRYA* pse; +} STRTABLEA, *LPSTRTABLEA; +typedef const STRTABLEA CSTRTABLEA, *LPCSTRTABLEA; + +typedef struct _StrTableW +{ + DWORD cEntries; + STRENTRYW* pse; +} STRTABLEW, *LPSTRTABLEW; +typedef const STRTABLEW CSTRTABLEW, *LPCSTRTABLEW; + +DECL_WINELIB_TYPE_AW(STRTABLE) +DECL_WINELIB_TYPE_AW(CSTRTABLE) +DECL_WINELIB_TYPE_AW(LPSTRTABLE) +DECL_WINELIB_TYPE_AW(LPCSTRTABLE) + +/* Flags for AddDelBackupEntry */ +#define AADBE_ADD_ENTRY 0x01 +#define AADBE_DEL_ENTRY 0x02 + +/* Flags for AdvInstallFile */ +#define AIF_WARNIFSKIP 0x00000001 +#define AIF_NOSKIP 0x00000002 +#define AIF_NOVERSIONCHECK 0x00000004 +#define AIF_FORCE_FILE_IN_USE 0x00000008 +#define AIF_NOOVERWRITE 0x00000010 +#define AIF_NO_VERSION_DIALOG 0x00000020 +#define AIF_REPLACEONLY 0x00000400 +#define AIF_NOLANGUAGECHECK 0x10000000 +#define AIF_QUIET 0x20000000
/* Flags for RunSetupCommand */ #define RSC_FLAG_INF 0x00000001 @@ -59,16 +135,139 @@ #define ADN_DEL_IF_EMPTY 0x00000001 #define ADN_DONT_DEL_SUBDIRS 0x00000002 #define ADN_DONT_DEL_DIR 0x00000004 - -HRESULT WINAPI RunSetupCommand(HWND hWnd, +#define ADN_DEL_UNC_PATHS 0x00000008 + +/* Flags for RegRestoreAll, RegSaveRestore, RegSaveRestoreOnINF */ +#define IE4_RESTORE 0x00000001 +#define IE4_BACKNEW 0x00000002 +#define IE4_NODELETENEW 0x00000004 +#define IE4_NOMESSAGES 0x00000008 +#define IE4_NOPROGRESS 0x00000010 +#define IE4_NOENUMKEY 0x00000020 +#define IE4_NO_CRC_MAPPING 0x00000040 +#define IE4_REGSECTION 0x00000080 +#define IE4_FRDOALL 0x00000100 +#define IE4_UPDREFCNT 0x00000200 +#define IE4_USEREFCNT 0x00000400 +#define IE4_EXTRAINCREFCNT 0x00000800 + +/* Flags for file save and restore functions */ +#define AFSR_RESTORE IE4_RESTORE +#define AFSR_BACKNEW IE4_BACKNEW +#define AFSR_NODELETENEW IE4_NODELETENEW +#define AFSR_NOMESSAGES IE4_NOMESSAGES +#define AFSR_NOPROGRESS IE4_NOPROGRESS +#define AFSR_UPDREFCNT IE4_UPDREFCNT +#define AFSR_USEREFCNT IE4_USEREFCNT +#define AFSR_EXTRAINCREFCNT IE4_EXTRAINCREFCNT + +HRESULT WINAPI AddDelBackupEntryA(LPCSTR lpcszFileList, LPCSTR lpcszBackupDir, + LPCSTR lpcszBaseName, DWORD dwFlags); +HRESULT WINAPI AddDelBackupEntryW(LPCWSTR lpcszFileList, LPCWSTR lpcszBackupDir, + LPCWSTR lpcszBaseName, DWORD dwFlags); +#define AddDelBackupEntry WINELIB_NAME_AW(AddDelBackupEntry) +HRESULT WINAPI AdvInstallFileA(HWND hwnd, LPCSTR lpszSourceDir, + LPCSTR lpszSourceFile, LPCSTR lpszDestDir, LPCSTR lpszDestFile, + DWORD dwFlags, DWORD dwReserved); +HRESULT WINAPI AdvInstallFileW(HWND hwnd, LPCWSTR lpszSourceDir, + LPCWSTR lpszSourceFile, LPCWSTR lpszDestDir, LPCWSTR lpszDestFile, + DWORD dwFlags, DWORD dwReserved); +#define AdvInstallFile WINELIB_NAME_AW(AdvInstallFile) +HRESULT WINAPI CloseINFEngine(HINF hInf); +HRESULT WINAPI DelNodeA(LPCSTR pszFileOrDirName, DWORD dwFlags); +HRESULT WINAPI DelNodeW(LPCWSTR pszFileOrDirName, DWORD dwFlags); +#define DelNode WINELIB_NAME_AW(DelNode) +HRESULT WINAPI DelNodeRunDLL32A(HWND,HINSTANCE,LPSTR,INT); +HRESULT WINAPI DelNodeRunDLL32W(HWND,HINSTANCE,LPWSTR,INT); +#define DelNodeRunDLL32 WINELIB_NAME_AW(DelNodeRunDLL32) +HRESULT WINAPI ExecuteCabA( HWND hwnd, CABINFOA* pCab, LPVOID pReserved ); +HRESULT WINAPI ExecuteCabW( HWND hwnd, CABINFOW* pCab, LPVOID pReserved ); +#define ExecuteCab WINELIB_NAME_AW(ExecuteCab) +HRESULT WINAPI ExtractFilesA(LPCSTR,LPCSTR,DWORD,LPCSTR,LPVOID,DWORD); +HRESULT WINAPI ExtractFilesW(LPCWSTR,LPCWSTR,DWORD,LPCWSTR,LPVOID,DWORD); +#define ExtractFiles WINELIB_NAME_AW(ExtractFiles) +HRESULT WINAPI FileSaveMarkNotExistA(LPSTR pszFileList, LPSTR pszDir, LPSTR pszBaseName); +HRESULT WINAPI FileSaveMarkNotExistW(LPWSTR pszFileList, LPWSTR pszDir, LPWSTR pszBaseName); +#define FileSaveMarkNotExist WINELIB_NAME_AW(FileSaveMarkNotExist) +HRESULT WINAPI FileSaveRestoreA(HWND hDlg, LPSTR pszFileList, LPSTR pszDir, + LPSTR pszBaseName, DWORD dwFlags); +HRESULT WINAPI FileSaveRestoreW(HWND hDlg, LPWSTR pszFileList, LPWSTR pszDir, + LPWSTR pszBaseName, DWORD dwFlags); +#define FileSaveRestore WINELIB_NAME_AW(FileSaveRestore) +HRESULT WINAPI FileSaveRestoreOnINFA(HWND hWnd, LPCSTR pszTitle, LPCSTR pszINF, + LPCSTR pszSection, LPCSTR pszBackupDir, LPCSTR pszBaseBackupFile, DWORD dwFlags); +HRESULT WINAPI FileSaveRestoreOnINFW(HWND hWnd, LPCWSTR pszTitle, LPCWSTR pszINF, + LPCWSTR pszSection, LPCWSTR pszBackupDir, LPCWSTR pszBaseBackupFile, DWORD dwFlags); +#define FileSaveRestoreOnINF WINELIB_NAME_AW(FileSaveRestoreOnINF) +HRESULT WINAPI GetVersionFromFileA(LPCSTR lpszFilename, LPDWORD pdwMSVer, LPDWORD pdwLSVer, BOOL bVersion); +HRESULT WINAPI GetVersionFromFileW(LPCWSTR lpszFilename, LPDWORD pdwMSVer, LPDWORD pdwLSVer, BOOL bVersion); +#define GetVersionFromFile WINELIB_NAME_AW(GetVersionFromFile) +HRESULT WINAPI GetVersionFromFileExA(LPCSTR lpszFilename, LPDWORD pdwMSVer, LPDWORD pdwLSVer, BOOL bVersion); +HRESULT WINAPI GetVersionFromFileExW(LPCWSTR lpszFilename, LPDWORD pdwMSVer, LPDWORD pdwLSVer, BOOL bVersion); +#define GetVersionFromFileEx WINELIB_NAME_AW(GetVersionFromFileEx) +BOOL WINAPI IsNTAdmin(DWORD,LPDWORD); +INT WINAPI LaunchINFSectionA(HWND,HINSTANCE,LPSTR,INT); +INT WINAPI LaunchINFSectionW(HWND,HINSTANCE,LPWSTR,INT); +#define LaunchINFSection WINELIB_NAME_AW(LaunchINFSection) +HRESULT WINAPI LaunchINFSectionExA(HWND,HINSTANCE,LPSTR,INT); +HRESULT WINAPI LaunchINFSectionExW(HWND,HINSTANCE,LPWSTR,INT); +#define LaunchINFSectionEx WINELIB_NAME_AW(LaunchINFSectionEx) +DWORD WINAPI NeedRebootInit(VOID); +BOOL WINAPI NeedReboot(DWORD dwRebootCheck); +HRESULT WINAPI OpenINFEngineA(LPCSTR pszInfFilename, LPCSTR pszInstallSection, + DWORD dwFlags, HINF *phInf, PVOID pvReserved); +HRESULT WINAPI OpenINFEngineW(LPCWSTR pszInfFilename, LPCWSTR pszInstallSection, + DWORD dwFlags, HINF *phInf, PVOID pvReserved); +#define OpenINFEngine WINELIB_NAME_AW(OpenINFEngine) +HRESULT WINAPI RebootCheckOnInstallA(HWND hWnd, LPCSTR pszINF, LPSTR pszSec, DWORD dwReserved); +HRESULT WINAPI RebootCheckOnInstallW(HWND hWnd, LPCWSTR pszINF, LPWSTR pszSec, DWORD dwReserved); +#define RebootCheckOnInstall WINELIB_NAME_AW(RebootCheckOnInstall) +HRESULT WINAPI RegInstallA(HMODULE hm, LPCSTR pszSection, const STRTABLEA* pstTable); +HRESULT WINAPI RegInstallW(HMODULE hm, LPCWSTR pszSection, const STRTABLEW* pstTable); +#define RegInstall WINELIB_NAME_AW(RegInstall) +HRESULT WINAPI RegRestoreAllA(HWND hWnd, LPSTR pszTitleString, HKEY hkBackupKey); +HRESULT WINAPI RegRestoreAllW(HWND hWnd, LPWSTR pszTitleString, HKEY hkBackupKey); +#define RegRestoreAll WINELIB_NAME_AW(RegRestoreAll) +HRESULT WINAPI RegSaveRestoreA(HWND hWnd, LPCSTR pszTitleString, HKEY hkBackupKey, + LPCSTR pcszRootKey, LPCSTR pcszSubKey, LPCSTR pcszValueName, DWORD dwFlags); +HRESULT WINAPI RegSaveRestoreW(HWND hWnd, LPCWSTR pszTitleString, HKEY hkBackupKey, + LPCWSTR pcszRootKey, LPCWSTR pcszSubKey, LPCWSTR pcszValueName, DWORD dwFlags); +#define RegSaveRestore WINELIB_NAME_AW(RegSaveRestore) +HRESULT WINAPI RegSaveRestoreOnINFA(HWND hWnd, LPCSTR pszTitle, LPCSTR pszINF, + LPCSTR pszSection, HKEY hHKLMBackKey, HKEY hHKCUBackKey, DWORD dwFlags); +HRESULT WINAPI RegSaveRestoreOnINFW(HWND hWnd, LPCWSTR pszTitle, LPCWSTR pszINF, + LPCWSTR pszSection, HKEY hHKLMBackKey, HKEY hHKCUBackKey, DWORD dwFlags); +#define RegSaveRestoreOnINF WINELIB_NAME_AW(RegSaveRestoreOnINF) +HRESULT WINAPI RunSetupCommandA(HWND hWnd, LPCSTR szCmdName, LPCSTR szInfSection, LPCSTR szDir, LPCSTR lpszTitle, HANDLE *phEXE, DWORD dwFlags, LPVOID pvReserved); -HRESULT WINAPI DelNode(LPCSTR pszFileOrDirName, DWORD dwFlags); -DWORD WINAPI NeedRebootInit(VOID); -BOOL WINAPI NeedReboot(DWORD dwRebootCheck); -HRESULT WINAPI RegInstall(HMODULE hm, LPCSTR pszSection, LPCSTRTABLE pstTable); -HRESULT WINAPI GetVersionFromFile(LPSTR lpszFilename, LPDWORD pdwMSVer, LPDWORD pdwLSVer, BOOL bVersion); -HRESULT WINAPI GetVersionFromFileEx(LPSTR lpszFilename, LPDWORD pdwMSVer, LPDWORD pdwLSVer, BOOL bVersion); +HRESULT WINAPI RunSetupCommandW(HWND hWnd, + LPCWSTR szCmdName, LPCWSTR szInfSection, LPCWSTR szDir, LPCWSTR lpszTitle, + HANDLE *phEXE, DWORD dwFlags, LPVOID pvReserved); +#define RunSetupCommand WINELIB_NAME_AW(RunSetupCommand) +HRESULT WINAPI SetPerUserSecValuesA(PPERUSERSECTIONA pPerUser); +HRESULT WINAPI SetPerUserSecValuesW(PPERUSERSECTIONW pPerUser); +#define SetPerUserSecValues WINELIB_NAME_AW(SetPerUserSecValues) +HRESULT WINAPI TranslateInfStringA(LPCSTR pszInfFilename, LPCSTR pszInstallSection, + LPCSTR pszTranslateSection, LPCSTR pszTranslateKey, LPSTR pszBuffer, + DWORD dwBufferSize, PDWORD pdwRequiredSize, PVOID pvReserved); +HRESULT WINAPI TranslateInfStringW(LPCWSTR pszInfFilename, LPCWSTR pszInstallSection, + LPCWSTR pszTranslateSection, LPCWSTR pszTranslateKey, LPWSTR pszBuffer, + DWORD dwBufferSize, PDWORD pdwRequiredSize, PVOID pvReserved); +#define TranslateInfString WINELIB_NAME_AW(TranslateInfString) +HRESULT WINAPI TranslateInfStringExA(HINF hInf, LPCSTR pszInfFilename, + LPCSTR pszTranslateSection, LPCSTR pszTranslateKey, LPSTR pszBuffer, + DWORD dwBufferSize, PDWORD pdwRequiredSize, PVOID pvReserved); +HRESULT WINAPI TranslateInfStringExW(HINF hInf, LPCWSTR pszInfFilename, + LPCWSTR pszTranslateSection, LPCWSTR pszTranslateKey, LPWSTR pszBuffer, + DWORD dwBufferSize, PDWORD pdwRequiredSize, PVOID pvReserved); +#define TranslateInfStringEx WINELIB_NAME_AW(TranslateInfStringEx) +HRESULT WINAPI UserInstStubWrapperA(HWND hWnd, HINSTANCE hInstance, LPSTR pszParms, INT nShow); +HRESULT WINAPI UserInstStubWrapperW(HWND hWnd, HINSTANCE hInstance, LPWSTR pszParms, INT nShow); +#define UserInstStubWrapper WINELIB_NAME_AW(UserInstStubWrapper) +HRESULT WINAPI UserUnInstStubWrapperA(HWND hWnd, HINSTANCE hInstance, LPSTR pszParms, INT nShow); +HRESULT WINAPI UserUnInstStubWrapperW(HWND hWnd, HINSTANCE hInstance, LPWSTR pszParms, INT nShow); +#define UserUnInstStubWrapper WINELIB_NAME_AW(UserUnInstStubWrapper)
#ifdef __cplusplus }
Modified: trunk/reactos/media/doc/README.WINE URL: http://svn.reactos.ru/svn/reactos/trunk/reactos/media/doc/README.WINE?rev=21... ============================================================================== --- trunk/reactos/media/doc/README.WINE (original) +++ trunk/reactos/media/doc/README.WINE Sun Apr 16 21:34:25 2006 @@ -51,11 +51,11 @@ reactos/dll/win32/msvcrt20 # Out of sync reactos/dll/win32/mpr # Synced to Wine-0_9_5 reactos/dll/win32/msacm # Out of sync -reactos/dll/win32/msimg32 # Synced to Wine-0_9_5 +reactos/dll/win32/msimg32 # Synced to Wine-0_9_12 reactos/dll/win32/msi # Synced to Wine-0_9_5 reactos/dll/win32/msvideo # Out of sync reactos/dll/win32/netapi32 # Synced to Wine-0_9_5 -reactos/dll/win32/objsel # Synced to Wine-0_9_5 +reactos/dll/win32/objsel # Synced to Wine-0_9_12 reactos/dll/win32/odbc32 # Out of sync. Depends on port of Linux ODBC. reactos/dll/win32/ole32 # Synced to Wine-0_9_5 reactos/dll/win32/oleacc # Synced to Wine-0_9_5 @@ -71,7 +71,7 @@ reactos/dll/win32/shfolder # Synced to Wine-0_9_5 reactos/dll/win32/shlwapi # Synced to Wine-0_9_5 reactos/dll/win32/twain # Out of sync -reactos/dll/win32/urlmon # Synced to Wine-0_9_5 +reactos/dll/win32/urlmon # Synced to Wine-0_9_10 reactos/dll/win32/uxtheme # Synced to Wine-0_9_5 reactos/dll/win32/version # Out of sync reactos/dll/win32/wininet # Synced to Wine-0_9_5