я пытаюсь найти все файлы на всех дисках, операционная система Windows, 8FindFirstFile Windows8 ошибка
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. В чем проблема?
Поскольку вы используете узкий 'зЬй :: string', вы должны использовать' FileFirstFileA', а также '' WIN32_FIND_DATAA' и FindNextFileA'. –
Возвращаемое значение говорит, что оно потерпело неудачу, но не почему. 'GetLastError()' скажет вам, почему. –
Я изменяю FindFirstFile на FindFirstA и WIN32_FIND_DATA на WIN32_FIND_DATAA и ничего – Lannser