windows.h如何使用FindFirstFile()和FindNextFile()列出目录中的所有文件?

时间:2016-03-07 09:36:55

标签: c++ qt findfirst

我正在Qt中编写一个应用程序并试图使用Windows函数FindFirstFile和FindNextFile来加速计算多个目录中的大量文件。为了列出文件,我已经将这段代码从microsoft网站上复制了几乎verbatum,但调试它表明它只在我触发函数时列出了一个文件;

QStringList Manager::returnDirectoryFileData(QString ChangedDirectory)
{
    QStringList DirectoryFiles;
    WIN32_FIND_DATA FindFileData;
    LARGE_INTEGER filesize;
    HANDLE hFind = INVALID_HANDLE_VALUE;
    DWORD dwError = 0;

    //string directorySearch = "E:\\My Documents\\Visual Studio 2010\\Projects\\SEP-Asignment-One\\Debug\\*";

    // Find the first file in the directory.
    LPCWSTR ConvertedDir = (const wchar_t*)ChangedDirectory.utf16();
    PVOID OldValue = NULL;

    if (Wow64DisableWow64FsRedirection(&OldValue))
    {
        hFind = FindFirstFile(ConvertedDir, &FindFileData);

        if (hFind == INVALID_HANDLE_VALUE)
        {
            printf("Invalid file handle. Error is %u.\n", GetLastError());
        }

        do
        {
            QString Newname = "Want to do stuff here";
            DirectoryFiles.append(Newname);

            printf("  %s   <DIR>\n", FindFileData.cFileName);

        } while (FindNextFile(hFind, &FindFileData) != 0);

        dwError = GetLastError();
        if (dwError != ERROR_NO_MORE_FILES)
        {
            DisplayErrorBox(TEXT("FindFirstFile"));
        }

        FindClose(hFind);

    }
    Wow64RevertWow64FsRedirection(&OldValue);
    return DirectoryFiles;
}       

这是在64位Windows 10上运行的32位程序,因此应该在使用这些函数之前调用Wow64DisableWow64fsredirection。谁知道我做错了什么?谢谢!

0 个答案:

没有答案