QFile:无法从PHYSICALDRIVE检索大小

时间:2013-02-24 16:27:55

标签: qt qfile

我写了一个最初被认为用于分析硬盘图像的工具。现在我正在尝试使用此工具进行计算机系统的实时分析,这意味着我的工具尝试访问物理驱动器。

我在QT中实现了我的工具,使用QFile类访问图像。而不是图像我移交物理驱动器,在Windows下它是\。\ PHYSICALDRIVE0。

我想知道我没有得到任何错误,我可以打开设备,我可以寻找,获得位置,几乎所有。我遇到的唯一问题是使用size()检索驱动器大小。

一些代码示例:

QFile file( "\\.\PHYSICALDRIVE0" );
file.open( QIODevice::ReadOnly );

file.size(); //returns 0

我对QT没有太深入,可能这是一件容易的事。我要感谢所有知道原因的人。

提前感谢!

1 个答案:

答案 0 :(得分:0)

QFileInfo也许可以帮到你。这听起来像是在Windows分区的那一部分打开一个只读文件,即使它不存在也许。 GetLastError()的调用可能会提供更多信息,以便返回文件大小为零的原因。

使用QFileInfo,您可以检查以确保它在打开之前存在。

您可能最终需要一些特定于平台的调用才能使用物理驱动器:

Volume to physical drive

看起来可能有一些示例代码在SourceForge上查看PartMod分区。

作为查询文件夹大小的旁注,我认为它必须由操作系统缓存到某处,或者在许多情况下必须在查询时计算。我知道在Windows中查看文件夹属性或在OSX上查看信息时似乎会发生这种情况。

另外,查看Volume to physical drive个答案,那里有一个字段长度的字段。我认为这就是你要找的东西。

希望有所帮助。