我想在QT中获得磁盘类型(SSD或HDD)。我已经检查了QStorageInfo
,但我找不到任何有用的东西。顺便说一下,我需要一个适用于Windows和Linux的解决方案。
答案 0 :(得分:3)
对于linux,您可以通过读取特殊文件
来判断内核是否检测到了SSD磁盘/sys/block/<disk>/queue/rotational
例如,如果sda磁盘是HDD,cat /sys/block/sda/queue/rotational
写1
,如果是SSD,则0
写\\.\PhysicalDrive<number>
。
对于Windows,您可以通过打开特殊文件\\.\PhysicalDrive0
来打开驱动器,例如#ifdef
。它可以与DeviceIOControl
一起使用IOCTL_STORAGE_QUERY_PROPERTY
IO控件来查询属性。似乎StorageDeviceSeekPenaltyProperty
可能就是你所追求的,因为硬盘驱动器有寻求惩罚,而SSD没有。唉我现在没有Windows环境可以测试。
为了便于携带,我非常怀疑这种依赖于系统的信息是否可以通过便携方式获得。您必须使用#else
/ #endif
/ /(\b[\(|\{|\[|\«]+[\w\s]*[\)|\}|\]|\»]+)/g
宏来根据当前目标选择实施。