Я пишу код C ++ для перечисления всего списка жестких дисков и накопителей, однако для завершения перечисления дисков всех накопителей требуется более 15 минут (емкость жесткого диска 500 ГБ). и скомпилируйте ответ в двоичном файле.
Тем не менее, у меня есть сторонний исполняемый файл, который дает мне список всего Диска всего за две минуты … Не могли бы вы заглянуть в мой код и предложить мне некоторые методы повышения производительности.
EnumFiles(CString FolderPath, CString SearchParameter,WIN32_FIND_DATAW *FileInfoData)
{
CString SearchFile = FolderPath + SearchParameter;
CString FileName;
hFile = FindFirstFileW(SearchFile, FileInfoData); // \\?\C:\*
if (hFile == INVALID_HANDLE_VALUE)
{
// Error
}
else
{
do
{
FileName = FileInfoData->cFileName;
if (FileInfoData->dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
{
if (! (FileName == L"." || FileName == L".."))
{
// Save the Folder Information
EnumFiles(FolderPath + FileName +(L"\\"), SearchParameter,FileInfoData);
}
}
else
{
// Save the File Parameters
}
} while (FindNextFileW(hFile, FileInfoData));
}
FindClose(hFile);
}
Задача ещё не решена.
Других решений пока нет …