Я все еще пытаюсь решить проблему, с которой я столкнулся, первая часть заключалась в том, что мне, очевидно, нужно вызвать WNetAddConnection2, чтобы использовать CreateFile для открытия файла через сетевой ресурс.
После этого я получаю сообщение ERROR_BAD_NET_NAME из вызова WNet ... 2.
Удаленный ресурс - это сопоставленная сетевая папка в сети Windows (клиент, где мы находимся, Windows XP). Сетевой ресурс должен быть подключен при запуске, но, конечно, было бы неправильно предположить, что это так. Папка сопоставляется с локальной Z:
. Я могу получить доступ, читать, писать и удалять файлы из папки назначения на машине с помощью Проводника.
HANDLE initFile ( LPCTSTR iNCfileName ) {
DWORD dw;
HANDLE fHandle=NULL;
NETRESOURCE nr = {0}; //new structure for network resource
nr.dwType = RESOURCETYPE_ANY; //generic resource (any type allowed)
nr.lpLocalName = NULL; //does not use a device
// typical iNCfileName is std::string a="Z:\\Documents\\somefile.txt".c_str()
nr.lpRemoteName = (char*)iNCfileName;
//"\\\\DOMAIN\\PATH\\FOLDER";
nr.lpProvider = NULL; //no provider
// CONNECT_CURRENT_MEDIA ??
DWORD ret = WNetAddConnection2 (&nr, NULL, NULL, CONNECT_TEMPORARY);
//...
return fHandle;
}
Я думаю , что проблема в том, что я не могу использовать Z:\Documents\somefile.txt
, а скорее должен использовать нотацию \\ DOMAIN \ PATH \ FOLDER. Если это так, как мне программно получить эту информацию, чтобы я мог предоставить ее в качестве входных данных? Неужели я не правильно понял ответчик оригинала, который может преобразовать имя файла в \\\\Z\\Documents\\somefile.txt
? Если да, есть ли ресурс для этого или я должен сам разобрать строку?