我写了一个最初被认为用于分析硬盘图像的工具。现在我正在尝试使用此工具进行计算机系统的实时分析,这意味着我的工具尝试访问物理驱动器。
我在QT中实现了我的工具,使用QFile类访问图像。而不是图像我移交物理驱动器,在Windows下它是\。\ PHYSICALDRIVE0。
我想知道我没有得到任何错误,我可以打开设备,我可以寻找,获得位置,几乎所有。我遇到的唯一问题是使用size()检索驱动器大小。
一些代码示例:
QFile file( "\\.\PHYSICALDRIVE0" );
file.open( QIODevice::ReadOnly );
file.size(); //returns 0
我对QT没有太深入,可能这是一件容易的事。我要感谢所有知道原因的人。
提前感谢!
答案 0 :(得分:0)
QFileInfo
也许可以帮到你。这听起来像是在Windows分区的那一部分打开一个只读文件,即使它不存在也许。 GetLastError()
的调用可能会提供更多信息,以便返回文件大小为零的原因。
使用QFileInfo
,您可以检查以确保它在打开之前存在。
您可能最终需要一些特定于平台的调用才能使用物理驱动器:
看起来可能有一些示例代码在SourceForge上查看PartMod分区。
作为查询文件夹大小的旁注,我认为它必须由操作系统缓存到某处,或者在许多情况下必须在查询时计算。我知道在Windows中查看文件夹属性或在OSX上查看信息时似乎会发生这种情况。
另外,查看Volume to physical drive个答案,那里有一个字段长度的字段。我认为这就是你要找的东西。
希望有所帮助。