有一个简短的例子:

WIN32_FIND_DATA fd;
HANDLE h = FindFirstFile(L"C:", &fd);
if (h == INVALID_HANDLE_VALUE)
{
    wprintf(L"Err = %d\n", GetLastError());
    return 1;
}

do {
    std::wstring fullPath(fd.cFileName);
    wprintf(L"FullPath = %s\n", fullPath.c_str());
} while (FindNextFile(h, &fd));

FindClose(h);


我很困惑,因为

HANDLE h = FindFirstFile(L"C:", &fd); // OK

HANDLE h = FindFirstFile(L"E:", &fd); // INVALID_HANDLE_VALUE

HANDLE h = FindFirstFile(L"F:", &fd); // INVALID_HANDLE_VALUE


但是EF是真实的现有卷。

之所以这样做,是因为我需要来自WIN32_FIND_DATA结构的所有信息,这些信息将传递给内核模式。

最佳答案

这个问题似乎是基于一种误解。你说:


  我不想检查“ E:*”中的文件和目录,我想获取有关此卷的信息。





  我需要WIN32_FIND_DATA结构的所有信息。


好吧,查找数据信息对文件和目录对象有意义,但对卷对象却没有意义。

您将需要使用其他方法来获取音量信息。也许GetVolumeInformation,WMI或其他取决于您的需求。

关于c++ - 当lpFileName为volume时,FindFirstFile返回INVALID_HANDLE_VALUE,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33013391/

10-11 22:46
查看更多