c++ - FindFirstFile 在根路径上失败

标签 c++ windows winapi ntfs

我正在使用以下代码获取有关文件系统目录的信息:

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/

相关文章:

c# - 如何捕获屏幕的一部分

c++ - 如何在WSL上获取VS Code来调试C++代码?

c++ - C++ 中运行时定义的全局 const 变量

javascript - 如果父窗口关闭,如何关闭子窗口?

c++ - Affdex-SDK 帧检测器的像素顺序?

windows - 检索最大化最小化窗口的窗口位置

python - 使用 pywin32(win32evtlog 模块)在 Python 中读取 Windows 事件日志

c++ - 为两种架构构建 NetBeans

c++ - 为什么转换构造函数在这里被调用

winapi - WIN32登录问题