我正在使用以下代码获取有关文件系统目录的信息:
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
- 没有错误
知道为什么吗?
最佳答案
FindFirstFile()
用于枚举目录的内容。因此,它应该与文件模式一起使用,例如 D:\*
。
当您使用 D:\1
时,您只是在使用非常严格的文件模式 (1
) 来过滤 D:\
中的文件>,但是当您只使用 D:\
或 D:
时,根本就没有模式!
共享资源也是如此。请注意,\\SRV-1\share
不算作模式,因为 \\SRV-1
不能被视为目录。
关于c++ - FindFirstFile 在根路径上失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21742849/