我正在编写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);
}