Author: akhaldi Date: Sat May 19 10:12:58 2012 New Revision: 56615
URL: http://svn.reactos.org/svn/reactos?rev=56615&view=rev Log: [HLINK] * Sync to Wine 1.5.4.
Modified: trunk/reactos/dll/win32/hlink/CMakeLists.txt trunk/reactos/dll/win32/hlink/extserv.c trunk/reactos/dll/win32/hlink/link.c trunk/reactos/media/doc/README.WINE
Modified: trunk/reactos/dll/win32/hlink/CMakeLists.txt URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/hlink/CMakeLists.... ============================================================================== --- trunk/reactos/dll/win32/hlink/CMakeLists.txt [iso-8859-1] (original) +++ trunk/reactos/dll/win32/hlink/CMakeLists.txt [iso-8859-1] Sat May 19 10:12:58 2012 @@ -2,7 +2,6 @@ add_definitions(-D__WINESRC__) include_directories(${REACTOS_SOURCE_DIR}/include/reactos/wine)
-set_rc_compiler() spec2def(hlink.dll hlink.spec ADD_IMPORTLIB)
list(APPEND SOURCE @@ -18,15 +17,6 @@ set_module_type(hlink win32dll) target_link_libraries(hlink uuid wine) add_delay_importlibs(hlink urlmon) - -add_importlibs(hlink - shell32 - ole32 - advapi32 - msvcrt - kernel32 - ntdll) - +add_importlibs(hlink shell32 ole32 advapi32 msvcrt kernel32 ntdll) add_pch(hlink hlink_private.h) - add_cd_file(TARGET hlink DESTINATION reactos/system32 FOR all)
Modified: trunk/reactos/dll/win32/hlink/extserv.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/hlink/extserv.c?r... ============================================================================== --- trunk/reactos/dll/win32/hlink/extserv.c [iso-8859-1] (original) +++ trunk/reactos/dll/win32/hlink/extserv.c [iso-8859-1] Sat May 19 10:12:58 2012 @@ -24,13 +24,13 @@ WINE_DEFAULT_DEBUG_CHANNEL(hlink);
typedef struct { - IUnknown IUnknown_iface; + IUnknown IUnknown_inner; IAuthenticate IAuthenticate_iface; IHttpNegotiate IHttpNegotiate_iface; IExtensionServices IExtensionServices_iface;
+ IUnknown *outer_unk; LONG ref; - IUnknown *outer;
HWND hwnd; LPWSTR username; @@ -40,7 +40,7 @@
static inline ExtensionService *impl_from_IUnknown(IUnknown *iface) { - return CONTAINING_RECORD(iface, ExtensionService, IUnknown_iface); + return CONTAINING_RECORD(iface, ExtensionService, IUnknown_inner); }
static HRESULT WINAPI ExtServUnk_QueryInterface(IUnknown *iface, REFIID riid, void **ppv) @@ -51,7 +51,7 @@
if(IsEqualGUID(&IID_IUnknown, riid)) { TRACE("(%p)->(IID_IUnknown %p)\n", This, ppv); - *ppv = &This->IUnknown_iface; + *ppv = &This->IUnknown_inner; }else if(IsEqualGUID(&IID_IAuthenticate, riid)) { TRACE("(%p)->(IID_IAuthenticate %p)\n", This, ppv); *ppv = &This->IAuthenticate_iface; @@ -113,19 +113,19 @@ static HRESULT WINAPI Authenticate_QueryInterface(IAuthenticate *iface, REFIID riid, void **ppv) { ExtensionService *This = impl_from_IAuthenticate(iface); - return IUnknown_QueryInterface(This->outer, riid, ppv); + return IUnknown_QueryInterface(This->outer_unk, riid, ppv); }
static ULONG WINAPI Authenticate_AddRef(IAuthenticate *iface) { ExtensionService *This = impl_from_IAuthenticate(iface); - return IUnknown_AddRef(This->outer); + return IUnknown_AddRef(This->outer_unk); }
static ULONG WINAPI Authenticate_Release(IAuthenticate *iface) { ExtensionService *This = impl_from_IAuthenticate(iface); - return IUnknown_Release(This->outer); + return IUnknown_Release(This->outer_unk); }
static HRESULT WINAPI Authenticate_Authenticate(IAuthenticate *iface, @@ -160,19 +160,19 @@ static HRESULT WINAPI HttpNegotiate_QueryInterface(IHttpNegotiate *iface, REFIID riid, void **ppv) { ExtensionService *This = impl_from_IHttpNegotiate(iface); - return IUnknown_QueryInterface(This->outer, riid, ppv); + return IUnknown_QueryInterface(This->outer_unk, riid, ppv); }
static ULONG WINAPI HttpNegotiate_AddRef(IHttpNegotiate *iface) { ExtensionService *This = impl_from_IHttpNegotiate(iface); - return IUnknown_AddRef(This->outer); + return IUnknown_AddRef(This->outer_unk); }
static ULONG WINAPI HttpNegotiate_Release(IHttpNegotiate *iface) { ExtensionService *This = impl_from_IHttpNegotiate(iface); - return IUnknown_Release(This->outer); + return IUnknown_Release(This->outer_unk); }
static HRESULT WINAPI HttpNegotiate_BeginningTransaction(IHttpNegotiate *iface, @@ -218,19 +218,19 @@ static HRESULT WINAPI ExtServ_QueryInterface(IExtensionServices *iface, REFIID riid, void **ppv) { ExtensionService *This = impl_from_IExtensionServices(iface); - return IUnknown_QueryInterface(This->outer, riid, ppv); + return IUnknown_QueryInterface(This->outer_unk, riid, ppv); }
static ULONG WINAPI ExtServ_AddRef(IExtensionServices *iface) { ExtensionService *This = impl_from_IExtensionServices(iface); - return IUnknown_AddRef(This->outer); + return IUnknown_AddRef(This->outer_unk); }
static ULONG WINAPI ExtServ_Release(IExtensionServices *iface) { ExtensionService *This = impl_from_IExtensionServices(iface); - return IUnknown_Release(This->outer); + return IUnknown_Release(This->outer_unk); }
static HRESULT ExtServ_ImplSetAdditionalHeaders(ExtensionService* This, LPCWSTR pwzAdditionalHeaders) @@ -311,7 +311,7 @@
ret = heap_alloc(sizeof(*ret));
- ret->IUnknown_iface.lpVtbl = &ExtServUnkVtbl; + ret->IUnknown_inner.lpVtbl = &ExtServUnkVtbl; ret->IAuthenticate_iface.lpVtbl = &AuthenticateVtbl; ret->IHttpNegotiate_iface.lpVtbl = &HttpNegotiateVtbl; ret->IExtensionServices_iface.lpVtbl = &ExtServVtbl; @@ -325,14 +325,14 @@ ExtServ_ImplSetAdditionalHeaders(ret, pwzAdditionalHeaders);
if(!punkOuter) { - ret->outer = &ret->IUnknown_iface; - hres = IUnknown_QueryInterface(&ret->IUnknown_iface, riid, ppv); - IUnknown_Release(&ret->IUnknown_iface); + ret->outer_unk = &ret->IUnknown_inner; + hres = IUnknown_QueryInterface(&ret->IUnknown_inner, riid, ppv); + IUnknown_Release(&ret->IUnknown_inner); }else if(IsEqualGUID(&IID_IUnknown, riid)) { - ret->outer = punkOuter; - *ppv = &ret->IUnknown_iface; + ret->outer_unk = punkOuter; + *ppv = &ret->IUnknown_inner; }else { - IUnknown_Release(&ret->IUnknown_iface); + IUnknown_Release(&ret->IUnknown_inner); hres = E_INVALIDARG; }
Modified: trunk/reactos/dll/win32/hlink/link.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/hlink/link.c?rev=... ============================================================================== --- trunk/reactos/dll/win32/hlink/link.c [iso-8859-1] (original) +++ trunk/reactos/dll/win32/hlink/link.c [iso-8859-1] Sat May 19 10:12:58 2012 @@ -78,6 +78,19 @@ if (ref_type == HLINKGETREF_DEFAULT) ref_type = HLINKGETREF_RELATIVE;
+ if (This->Moniker) + { + DWORD mktype = MKSYS_NONE; + + hres = IMoniker_IsSystemMoniker(This->Moniker, &mktype); + if (hres == S_OK && mktype != MKSYS_NONE) + { + *moniker = This->Moniker; + IMoniker_AddRef(*moniker); + return S_OK; + } + } + if (ref_type == HLINKGETREF_ABSOLUTE && This->Site) { IMoniker *hls_moniker; @@ -217,9 +230,12 @@ This->Moniker = pmkTarget; if (This->Moniker) { + IBindCtx *pbc; LPOLESTR display_name; IMoniker_AddRef(This->Moniker); - IMoniker_GetDisplayName(This->Moniker, NULL, NULL, &display_name); + CreateBindCtx( 0, &pbc); + IMoniker_GetDisplayName(This->Moniker, pbc, NULL, &display_name); + IBindCtx_Release(pbc); This->absolute = display_name && strchrW(display_name, ':'); CoTaskMemFree(display_name); }
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 May 19 10:12:58 2012 @@ -63,7 +63,7 @@ reactos/dll/win32/fusion # Synced to Wine-1.5.4 reactos/dll/win32/gdiplus # Synced to Wine-1.5.4 reactos/dll/win32/hhctrl.ocx # Autosync -reactos/dll/win32/hlink # Synced to Wine-1.3.37 +reactos/dll/win32/hlink # Synced to Wine-1.5.4 reactos/dll/win32/hnetcfg # Synced to Wine-1.3.37 reactos/dll/win32/httpapi # Synced to Wine-1.3.37 reactos/dll/win32/iccvid # Autosync