我正在使用以下代码获取有关文件系统目录的信息:
LPCTSTR pStrPath = L"D:\\1";
WIN32_FIND_DATA wfd;
HANDLE hDummy = ::FindFirstFile(pStrPath, &wfd);
if(hDummy != INVALID_HANDLE_VALUE)
{
//Use 'wfd' info
//...
::FindClose(hDummy);
}
else
{
int error = ::GetLastError();
}
代码工作正常,除非我指定了根路径:
D:\
- 错误代码ERROR_FILE_NOT_FOUND
D:
- 错误代码ERROR_FILE_NOT_FOUND
\\SRVR-1\share
- 错误代码ERROR_BAD_NET_NAME
\\SRVR-1\share\
- 错误代码ERROR_BAD_NET_NAME
\\SRVR-1\HiddenShare$
- 错误代码ERROR_BAD_NET_NAME
但它适用于以下情况:
D:\1
- 没有错误\\SRVR-1\share\1
- 没有错误\\SRVR-1\HiddenShare$\1
- 没有错误知道为什么吗?
答案 0 :(得分:4)
FindFirstFile()
用于枚举目录的内容。因此,它意味着与文件模式一起使用,例如D:\*
。
当您使用D:\1
时,您只是使用限制性很强的文件模式(1
)来过滤D:\
中的文件,但只使用D:\
或{ {1}}根本没有模式!
共享资源也是如此。请注意,D:
不计为模式,因为\\SRV-1\share
不能被视为目录。