windows.h Как использовать FindFirstFile() и FindNextFile(), чтобы вывести список всех файлов в каталоге?

Я пишу приложение на Qt и пытаюсь использовать функции Windows FindFirstFile и FindNextFile для ускорения подсчета большого количества файлов в нескольких каталогах. Я почти дословно скопировал этот код с сайта Microsoft, чтобы вывести список файлов, но его отладка показывает, что при запуске функции отображается только один файл;

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;
}       

Это 32-битная программа, работающая в 64-битных окнах 10, поэтому предполагается, что Wow64DisableWow64fsredirection вызывается перед использованием этих функций. Кто-нибудь знает, что я делаю не так? Спасибо!

0 ответов

Другие вопросы по тегам