我想在QT中获得磁盘types(SSD或HDD)。 我检查了QStorageInfo
但我找不到任何有用的东西我的目的。 顺便说一下,我需要一个在Windows和Linux上都能工作的解决scheme。
对于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
可能是你之后,因为硬盘有一个寻求惩罚,而SSD不。 唉,我现在没有一个Windows环境来测试。
为便于携带,我非常怀疑这种与系统有关的信息是以便携的方式提供的。 您必须使用#ifdef
/ #else
/ #endif
宏来根据当前目标选择一个实现。