Я пытаюсь преобразовать строку в строку wchar_t, чтобы использовать ее в функции WNetUseConnection.В основном это имя unc, похожее на это "\\remoteserver"
.Я получаю код возврата 1113 , который описывается следующим образом:
В целевой многобайтовой кодовой странице нет сопоставления для символа Unicode.
Мой код выглядит следующим образом:
std::string serverName = "\\uncDrive";
wchar_t *remoteName = new wchar_t[ serverName.size() ];
MultiByteToWideChar(CP_ACP, 0, serverName.c_str(), serverName.size(), remoteName, serverName.size()); //also doesn't work if CP_UTF8
NETRESOURCE nr;
memset( &nr, 0, sizeof( nr ));
nr.dwType = RESOURCETYPE_DISK;
nr.lpRemoteName = remoteName;
wchar_t pswd[] = L"user"; //would have the same problem if converted and not set
wchar_t usrnm[] = L"pwd"; //would have the same problem if converted and not set
int ret = WNetUseConnection(NULL, &nr, pswd, usrnm, 0, NULL, NULL, NULL);
std::cerr << ret << std::endl;
Интересно то, что если remoteName - это жесткий код, например:
char_t remoteName[] = L"\\\\uncName";
Все работает нормально.Но так как позже на сервере, user и pwd будут параметрами, которые я получу в виде строк, мне нужен способ их преобразования (также пробовал функцию mbstowcs с тем же результатом).