在QT中获取磁盘types

我想在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宏来根据当前目标选择一个实现。