#include "util.h" #include "tfilepath.h" #include "texception.h" #ifdef WIN32 #include #endif string convertToUncString(const TFilePath &fp) { #ifdef WIN32 DWORD cbBuff = 1024; // Size of Buffer char szBuff[1024]; // Buffer to receive information REMOTE_NAME_INFO *prni = (REMOTE_NAME_INFO *)&szBuff; // Pointers to head of buffer UNIVERSAL_NAME_INFO *puni = (UNIVERSAL_NAME_INFO *)&szBuff; DWORD dwResult = WNetGetUniversalName(toString(fp.getWideString()).c_str(), UNIVERSAL_NAME_INFO_LEVEL, (LPVOID)&szBuff, &cbBuff); switch (dwResult) { case NO_ERROR: return puni->lpUniversalName; case ERROR_NOT_CONNECTED: // The network connection does not exists. throw TException("The path specified doesn't refer to a shared folder"); case ERROR_CONNECTION_UNAVAIL: // The device is not currently connected, // but it is a persistent connection. throw TException("The shared folder is not currently connected"); default: throw TException("Cannot convert the path specified to UNC"); } #else return fp.getFullPath().c_str(); #endif }