优化磁盘枚举和文件列表C ++

时间:2014-01-31 15:28:26

标签: c++ windows file winapi enumeration

我正在编写C ++代码来枚举整个硬盘和驱动器列表,但是完成所有驱动器的磁盘枚举(HDD容量500GB)需要15分钟以上。并在二进制文件中编译响应。

但是,我有一个第三方可执行文件,它在不到两分钟的时间内就可以让我列出整个磁盘......你能不能查看我的代码并向我推荐一些性能改进技术。

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

0 个答案:

没有答案