在 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<number>
来打开驱动器,例如 \\.\PhysicalDrive0
。它可以与DeviceIOControl
一起使用来查询属性,使用IOCTL_STORAGE_QUERY_PROPERTY
IO 控制。看来StorageDeviceSeekPenaltyProperty
可能是您所追求的,因为 HDD 有寻道惩罚,而 SSD 没有。唉,我现在没有 windows 环境可以测试。
对于可移植性,我非常怀疑这种依赖于系统的信息是否可以以可移植的方式获得。您必须使用 #ifdef
/#else
/#endif
宏来根据当前目标选择实现。
【讨论】:
“我非常怀疑这种依赖于系统的信息是否可以通过便携方式获得” 是的,这是真的。即使是自称是多平台的Java,据我所知,所有这些都没有提供这种方式。 MacOS(这里不需要)也有它自己的方式。以上是关于在 QT 中获取磁盘类型的主要内容,如果未能解决你的问题,请参考以下文章
嵌入式Linux QT开发之如何实现获取磁盘空间大小的应用逻辑
嵌入式Linux QT开发之如何实现获取磁盘空间大小的应用逻辑