0

我正在 Qt 中编写一个应用程序,并尝试使用 Windows 函数 FindFirstFile 和 FindNextFile 来加快计算多个目录中大量文件的速度。为了列出文件,我几乎逐字逐句地从微软网站上复制了这段代码,但调试它表明当我触发该函数时它只列出一个文件;

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。有人知道我在做什么错吗?谢谢!

4

0 回答 0