我的程序通过LAN将文件从Windows笔记本电脑复制到Windows桌面。我使用从资源管理器中拖放来提供源和目标。
来源是:C:\Paul
目的地为:\\SERVER\Paul
但是,_stat(dst,&dst_statbuf)
失败,-1
和errno
设置为ENOENT
(找不到文件)。
请注意,来自Explorer drag&删除提供的路径是正确和存在的,在资源管理器中我可以看到目标目录,并可以打开文件,因此权限似乎没问题。
有没有人知道_stat
失败的原因?
答案 0 :(得分:4)
发现问题。
在stat64.c
(VC2008)中有一个奇怪的评论:
/* root dir. ('C:\') or UNC root dir. ('\\server\share\') */
然后调用未记录的API函数(第145行):
IsRootUNCName(path)
实际上,在服务器路径上添加反斜杠会使_stat
正常工作。但请注意,在服务器路径上的常规目录上调用_stat
也可以。所以它只会在共享的根目录上失败。
我认为这是一个错误(或者至少是Windows资源管理器和_stat
之间的不一致)