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(a)free.fr>
- Fix compatibility with native advpack dlls.
Sync to Wine-0_9_7:
Dmitry Timoshkov <dmitry(a)codeweavers.com>
- Make more arrays const.
Sync to Wine-0_9_6:
Jacek Caban <jacek(a)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(a)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?…
==============================================================================
--- 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?r…
==============================================================================
--- 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_mai…
==============================================================================
--- 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&…
==============================================================================
--- 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=2…
==============================================================================
--- 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