在 QT 中获取磁盘类型

Posted

技术标签:

【中文标题】在 QT 中获取磁盘类型【英文标题】:Get disk type in QT 【发布时间】:2017-05-17 09:27:20 【问题描述】:

我想(SSD 或 HDD)。我已经检查了QStorageInfo,但我找不到任何对我有用的东西。顺便说一句,我需要一个适用于 Windows 和 Linux 的解决方案。

【问题讨论】:

【参考方案1】:

对于 linux,你可以通过读取特殊文件来判断内核是否检测到 SSD 磁盘

/sys/block/<disk>/queue/rotational

例如,如果 sda 磁盘是 HDD,cat /sys/block/sda/queue/rotational 写入 1,如果是 SSD,则写入 0

对于 Windows,您可以通过打开特殊文件 \\.\PhysicalDrive&lt;number&gt; 来打开驱动器,例如 \\.\PhysicalDrive0。它可以与DeviceIOControl 一起使用来查询属性,使用IOCTL_STORAGE_QUERY_PROPERTY IO 控制。看来StorageDeviceSeekPenaltyProperty 可能是您所追求的,因为 HDD 有寻道惩罚,而 SSD 没有。唉,我现在没有 windows 环境可以测试。

对于可移植性,我非常怀疑这种依赖于系统的信息是否可以以可移植的方式获得。您必须使用 #ifdef/#else/#endif 宏来根据当前目标选择实现。

【讨论】:

“我非常怀疑这种依赖于系统的信息是否可以通过便携方式获得” 是的,这是真的。即使是自称是多平台的Java,据我所知,所有这些都没有提供这种方式。 MacOS(这里不需要)也有它自己的方式。

以上是关于在 QT 中获取磁盘类型的主要内容,如果未能解决你的问题,请参考以下文章

嵌入式Linux QT开发之如何实现获取磁盘空间大小的应用逻辑

嵌入式Linux QT开发之如何实现获取磁盘空间大小的应用逻辑

嵌入式Linux QT开发之如何实现获取磁盘空间大小的应用逻辑

qt 获取磁盘空间大小,cpu利用率,内存使用率

Qt编写自定义控件34-磁盘容量统计

6.6 QStorageInfo获取磁盘信息