diff --git a/dlls/hlink/hlink.spec b/dlls/hlink/hlink.spec index 7dac4d90e5c..117327bbfbd 100644 --- a/dlls/hlink/hlink.spec +++ b/dlls/hlink/hlink.spec @@ -11,7 +11,7 @@ 14 stub HlinkResolveMonikerForData 15 stub HlinkResolveStringForData 16 stub OleSaveToStreamEx -18 stub HlinkParseDisplayName +18 stdcall HlinkParseDisplayName(ptr wstr long ptr ptr) 20 stdcall HlinkQueryCreateFromData(ptr) 21 stub HlinkSetSpecialReference 22 stdcall HlinkGetSpecialReference(long ptr) diff --git a/dlls/hlink/hlink_main.c b/dlls/hlink/hlink_main.c index 4e321899c39..b9ce4af44ca 100644 --- a/dlls/hlink/hlink_main.c +++ b/dlls/hlink/hlink_main.c @@ -322,6 +322,31 @@ HRESULT WINAPI HlinkUpdateStackItem(IHlinkFrame *pihlframe, IHlinkBrowseContext return E_NOTIMPL; } +HRESULT WINAPI HlinkParseDisplayName(LPBC pibc, LPCWSTR pwzDisplayName, BOOL fNoForceAbs, + ULONG *pcchEaten, IMoniker **ppimk) +{ + HRESULT hres; + + TRACE("(%p %s %x %p %p)\n", pibc, debugstr_w(pwzDisplayName), fNoForceAbs, pcchEaten, ppimk); + + if(fNoForceAbs) + FIXME("Unsupported fNoForceAbs\n"); + + hres = MkParseDisplayNameEx(pibc, pwzDisplayName, pcchEaten, ppimk); + if(SUCCEEDED(hres)) + return hres; + + hres = MkParseDisplayName(pibc, pwzDisplayName, pcchEaten, ppimk); + if(SUCCEEDED(hres)) + return hres; + + hres = CreateFileMoniker(pwzDisplayName, ppimk); + if(SUCCEEDED(hres)) + *pcchEaten = strlenW(pwzDisplayName); + + return hres; +} + static HRESULT WINAPI HLinkCF_fnQueryInterface ( LPCLASSFACTORY iface, REFIID riid, LPVOID *ppvObj) {