【发布时间】:2012-03-15 00:44:45
【问题描述】:
我仍在尝试解决我遇到的问题,the first part of it 是我显然需要调用 WNetAddConnection2 才能使用 CreateFile 通过网络共享打开文件。
完成后,我现在收到来自 WNet...2 调用的 ERROR_BAD_NET_NAME 返回。
远程资源是 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 的原始回答者?如果是这样,是否有资源可以执行此操作,或者我应该自己解析字符串?
【问题讨论】:
-
转换为 (char*) 只是阻止编译器告诉你做错了。移除石膏。如果编译器再次报错,实际转换字符串。或者始终使用 UNICODE。
标签: c++ winapi networking file-io