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

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

【问题讨论】:

    标签: linux windows qt


    【解决方案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(这里不需要)也有它自己的方式。
    猜你喜欢
    • 1970-01-01
    • 2013-02-25
    • 2011-02-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-27
    • 1970-01-01
    • 2019-10-13
    相关资源
    最近更新 更多