diff --git a/dll/win32/shlwapi/path.c b/dll/win32/shlwapi/path.c index e2f05cff78a..cc6640506cb 100644 --- a/dll/win32/shlwapi/path.c +++ b/dll/win32/shlwapi/path.c @@ -35,6 +35,9 @@ #include "winternl.h" #define NO_SHLWAPI_STREAM #include "shlwapi.h" +#ifdef __REACTOS__ +#include "winnetwk.h" +#endif #include "wine/debug.h" WINE_DEFAULT_DEBUG_CHANNEL(shell); @@ -1712,8 +1715,27 @@ BOOL WINAPI PathIsDirectoryA(LPCSTR lpszPath) if (PathIsUNCServerShareA(lpszPath)) { +#ifdef __REACTOS__ + LPSTR lpSystem = NULL; + BYTE buffer[512] = {0}; + DWORD cbBuffer = sizeof(buffer); + LPNETRESOURCEA pNetRes = (LPNETRESOURCEA)buffer; + DWORD dwError; + + pNetRes->dwScope = RESOURCE_GLOBALNET; + pNetRes->dwType = RESOURCETYPE_ANY; + pNetRes->lpRemoteName = (LPSTR)lpszPath; + + dwError = WNetGetResourceInformationA(pNetRes, pNetRes, &cbBuffer, &lpSystem); + if (dwError == NO_ERROR && pNetRes->dwDisplayType != RESOURCEDISPLAYTYPE_GENERIC) + { + return (pNetRes->dwDisplayType == RESOURCEDISPLAYTYPE_SHARE) && + (pNetRes->dwType == RESOURCETYPE_ANY || pNetRes->dwType == RESOURCETYPE_DISK); + } +#else FIXME("UNC Server Share not yet supported - FAILING\n"); return FALSE; +#endif } if ((dwAttr = GetFileAttributesA(lpszPath)) == INVALID_FILE_ATTRIBUTES) @@ -1737,8 +1759,27 @@ BOOL WINAPI PathIsDirectoryW(LPCWSTR lpszPath) if (PathIsUNCServerShareW(lpszPath)) { +#ifdef __REACTOS__ + LPWSTR lpSystem = NULL; + BYTE buffer[1024] = {0}; + DWORD cbBuffer = sizeof(buffer); + LPNETRESOURCEW pNetRes = (LPNETRESOURCEW)buffer; + DWORD dwError; + + pNetRes->dwScope = RESOURCE_GLOBALNET; + pNetRes->dwType = RESOURCETYPE_ANY; + pNetRes->lpRemoteName = (LPWSTR)lpszPath; + + dwError = WNetGetResourceInformationW(pNetRes, pNetRes, &cbBuffer, &lpSystem); + if (dwError == NO_ERROR && pNetRes->dwDisplayType != RESOURCEDISPLAYTYPE_GENERIC) + { + return (pNetRes->dwDisplayType == RESOURCEDISPLAYTYPE_SHARE) && + (pNetRes->dwType == RESOURCETYPE_ANY || pNetRes->dwType == RESOURCETYPE_DISK); + } +#else FIXME("UNC Server Share not yet supported - FAILING\n"); return FALSE; +#endif } if ((dwAttr = GetFileAttributesW(lpszPath)) == INVALID_FILE_ATTRIBUTES)