gpt4 book ai didi

c++ - FindFirstFile Windows8 错误

转载 作者:行者123 更新时间:2023-11-28 06:05:57 25 4
gpt4 key购买 nike

我正在尝试查找所有驱动器上的所有文件,操作系统是 Windows 8

    std::string FolderName = "C:\\";
FindAllFiles(FolderName);
...
void FindAllFiles(std::string FolderName)
{
WIN32_FIND_DATA FileData;
HANDLE FirstFile = FindFirstFile(&FolderName[0], &FileData);
if (FirstFile == INVALID_HANDLE_VALUE) {
std::cout << "Invalid handle value" << std::endl;
return;
}

while (FindNextFile(FirstFile, &FileData))
{
if (isalpha(FileData.cFileName[0]))
{
if (FileData.dwFileAttributes != FILE_ATTRIBUTE_DIRECTORY)
{
std::cout << FileData.cFileName << std::endl;
}
else
{
std::string NewPath = FolderName + FileData.cFileName;
NewPath = NewPath + "\\*.*";
FindAllFiles(NewPath);
}
}
}
}

但总是收到 Invalid_handle_value 错误。有什么问题?

最佳答案

您没有调用 GetLastError(),当 Windows 函数失败时您应该始终这样做,但最可能的原因是您未能填写 FileData在调用 FindFirstFile 之前正确。

几乎所有供 Windows 函数使用的输出缓冲区都必须准备好:

  • 使用sizeof填充dwSize成员(这个结构没有这个)
  • 用零填充所有其他成员。

所以尝试初始化缓冲区:

WIN32_FIND_DATAA FileData = {};

关于c++ - FindFirstFile Windows8 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32402427/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com