HRESULT SHELL32_GetDetailsOfGuidItem(IShellFolder2* psf, PCUITEMID_CHILD pidl, UINT iColumn, SHELLDETAILS *psd);
-HRESULT SH_ParseGuidDisplayName(IShellFolder * pFolder,
+HRESULT SH_ParseGuidDisplayName(IShellFolder2 * pFolder,
HWND hwndOwner,
LPBC pbc,
LPOLESTR lpszDisplayName,
return nReturn;
}
-HRESULT SH_ParseGuidDisplayName(IShellFolder * pFolder,
+HRESULT SH_ParseGuidDisplayName(IShellFolder2 * pFolder,
HWND hwndOwner,
LPBC pbc,
LPOLESTR lpszDisplayName,
*pchEaten = 0;
UINT cch = wcslen(lpszDisplayName);
- if (cch < 40)
- return E_FAIL;
-
- if (lpszDisplayName[0] != L':' || lpszDisplayName[1] != L':' || lpszDisplayName[2] != L'{' || lpszDisplayName[40] != L'}')
+ if (cch < 39 || lpszDisplayName[0] != L':' || lpszDisplayName[1] != L':')
return E_FAIL;
pidl = _ILCreateGuidFromStrW(lpszDisplayName + 2);
if (pidl == NULL)
return E_FAIL;
- if (cch < 42)
+ if (cch < 41)
{
*ppidl = pidl;
if (pdwAttributes && *pdwAttributes)
}
else
{
- IShellFolder* psf;
- LPITEMIDLIST pidlChild;
- HRESULT hres;
-
- hres = SHELL32_BindToGuidItem(NULL, pidl, NULL, IID_PPV_ARG(IShellFolder, &psf));
- if (SUCCEEDED(hres))
+ HRESULT hr = SHELL32_ParseNextElement(pFolder, hwndOwner, pbc, &pidl, lpszDisplayName + 41, pchEaten, pdwAttributes);
+ if (SUCCEEDED(hr))
{
- return psf->ParseDisplayName(hwndOwner, pbc, lpszDisplayName + 42, pchEaten, &pidlChild, pdwAttributes);
+ *ppidl = pidl;
}
+ return hr;
}
return S_OK;
return pidlOut;
}
+#ifndef __REACTOS__
LPITEMIDLIST _ILCreateGuidFromStrA(LPCSTR szGUID)
{
IID iid;
}
return _ILCreateGuid(PT_GUID, &iid);
}
+#endif
LPITEMIDLIST _ILCreateGuidFromStrW(LPCWSTR szGUID)
{
IID iid;
+#ifndef __REACTOS__
if (FAILED(SHCLSIDFromStringW(szGUID, &iid)))
+#else
+ if (!GUIDFromStringW(szGUID, &iid))
+#endif
{
ERR("%s is not a GUID\n", debugstr_w(szGUID));
return NULL;
HRESULT WINAPI SHGetImageList(int iImageList, REFIID riid, void **ppv);
+BOOL WINAPI GUIDFromStringW(
+ _In_ PCWSTR psz,
+ _Out_ LPGUID pguid
+ );
+
static inline ULONG
Win32DbgPrint(const char *filename, int line, const char *lpFormat, ...)
{