有一个简短的例子:
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
但是
E
和F
是真实的现有卷。之所以这样做,是因为我需要来自
WIN32_FIND_DATA
结构的所有信息,这些信息将传递给内核模式。 最佳答案
这个问题似乎是基于一种误解。你说:
我不想检查“ E:*”中的文件和目录,我想获取有关此卷的信息。
和
我需要WIN32_FIND_DATA结构的所有信息。
好吧,查找数据信息对文件和目录对象有意义,但对卷对象却没有意义。
您将需要使用其他方法来获取音量信息。也许GetVolumeInformation
,WMI或其他取决于您的需求。
关于c++ - 当lpFileName为volume时,FindFirstFile返回INVALID_HANDLE_VALUE,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33013391/