【发布时间】:2017-05-17 09:27:20
【问题描述】:
我想在 QT 中获取磁盘类型(SSD 或 HDD)。我已经检查了QStorageInfo,但我找不到任何对我有用的东西。顺便说一句,我需要一个适用于 Windows 和 Linux 的解决方案。
【问题讨论】:
我想在 QT 中获取磁盘类型(SSD 或 HDD)。我已经检查了QStorageInfo,但我找不到任何对我有用的东西。顺便说一句,我需要一个适用于 Windows 和 Linux 的解决方案。
【问题讨论】:
对于 linux,你可以通过读取特殊文件来判断内核是否检测到 SSD 磁盘
/sys/block/<disk>/queue/rotational
例如,如果 sda 磁盘是 HDD,cat /sys/block/sda/queue/rotational 写入 1,如果是 SSD,则写入 0。
对于 Windows,您可以通过打开特殊文件 \\.\PhysicalDrive<number> 来打开驱动器,例如 \\.\PhysicalDrive0。它可以与DeviceIOControl 一起使用来查询属性,使用IOCTL_STORAGE_QUERY_PROPERTY IO 控制。看来StorageDeviceSeekPenaltyProperty 可能是您所追求的,因为 HDD 有寻道惩罚,而 SSD 没有。唉,我现在没有 windows 环境可以测试。
对于可移植性,我非常怀疑这种依赖于系统的信息是否可以以可移植的方式获得。您必须使用 #ifdef/#else/#endif 宏来根据当前目标选择实现。
【讨论】: