0

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

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

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

一些代码示例:

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

file.size(); //returns 0

我对 QT 并不太深入,可能这很容易。我要感谢所有知道原因的人。

提前致谢!

4

1 回答 1

0

QFileInfo也许可以帮助你。听起来好像允许在 Windows 分区的该部分打开只读文件,即使它不存在。调用GetLastError()可能会提供更多信息,为什么返回文件大小为零。

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

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

卷到物理驱动器

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

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

此外,查看卷到物理驱动器的答案,那里有一个用于范围长度的字段。我想这就是你要找的。

希望有帮助。

于 2013-02-24T20:17:22.677 回答