/*********************************************************************** * HlinkParseDisplayName (HLINK.@) */ HRESULT WINAPI HlinkParseDisplayName(LPBC pibc, LPCWSTR pwzDisplayName, BOOL fNoForceAbs, ULONG *pcchEaten, IMoniker **ppimk) { static const WCHAR file_colonW[] = {'f','i','l','e',':'}; ULONG eaten = 0; HRESULT hres; TRACE("(%p %s %x %p %p)\n", pibc, debugstr_w(pwzDisplayName), fNoForceAbs, pcchEaten, ppimk); if(fNoForceAbs) FIXME("Unsupported fNoForceAbs\n"); if(!strncmpiW(pwzDisplayName, file_colonW, sizeof(file_colonW)/sizeof(WCHAR))) { pwzDisplayName += sizeof(file_colonW)/sizeof(WCHAR); eaten += sizeof(file_colonW)/sizeof(WCHAR); while(*pwzDisplayName == '/') { pwzDisplayName++; eaten++; } }else { 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 = eaten + strlenW(pwzDisplayName); return hres; }
/*********************************************************************** * HlinkParseDisplayName (HLINK.@) */ 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; }