我需要读取(简单且已经完成)和psrse $MFT - $DATA运行的文件和文件名,时间戳等等。我已经开始使用this ntfs库了,但是扫描整个mft太慢了。
我怎么才能加快速度呢,还是有另一个更快的库呢?
谢谢,但是你能给我解释一下为什么下面的代码很慢吗?
for (ULONG64 i = 0;i < kz;i++)
{
FileRecordHeader = (FILE_RECORD_HEADER*) &buf[bzp];
if (FileRecordHeader->Magic != FILE_RECORD_MAGIC)
{
goto pd;
}
usnaddr = (WORD*)((BYTE*)FileRecordHeader + FileRecordHeader->OffsetOfUS);
usn = *usnaddr;
usarray = usnaddr + 1;
if (!PatchUS((WORD*)FileRecordHeader, rzf / vl->SectorSize, usn, usarray))
{
goto pd;
}
//ParseAttrs(FileRecordHeader,MASK_FILE_NAME,Attrs,&file);
Application::DoEvents();
progressBar1->Value = i;pd:
bzp = bzp + rzf;
}或者仅仅通过文件引用枚举并不快。我只需要枚举mft,但使用此代码需要几分钟,当这可以在大约20秒内完成(在22 gb的比例-更大的大小-更慢)
发布于 2010-09-22 20:38:42
看看linux驱动程序的源代码:http://www.linux-ntfs.org/doku.php和http://www.tuxera.com/community/ntfs-3g-download/
发布于 2012-07-17 11:44:14
它与解析没有任何关系。您的代码由于Application::DoEvents();而变得很慢。
https://stackoverflow.com/questions/3768048
复制相似问题