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 вызывается перед использованием этих функций. Кто-нибудь знает, что я делаю не так? Спасибо!