在POSIX OS上检测SSD存储设备

16 c++ solid-state-drive hard-drive

我正在开发一个OS便携式程序,它可以从检测物理存储设备是SSD还是普通旧的旋转磁盘中受益.

在Linux上有:

/sys/block/sdX/queue/rotational
Run Code Online (Sandbox Code Playgroud)

如果SSD返回0或1,但我不确定这是否是最好的方法.

在Windows和UNIX上,我还没有找到任何方法来检测它,也许我应该使用ioctl DEVICE_SEEK_PENALTY_DESCRIPTOR并检查搜索功能(在SSD存储设备上应该非常低),或者可能用于DeviceIoControl检查标称介质旋转速率(也应该在SSD存储设备上非常低).

有关如何在POSIX兼容操作系统上检测SSD磁盘的任何建议吗?

Pyr*_*ite 2

相关: https: //unix.stackexchange.com/questions/65595/how-to-know-if-a-disk-is-an-ssd-or-an-hdd

不过,国际海事组织。您可以使用 POSIX 方法来确定操作系统,并有多种方法来检测 SSD,当无法确定时,只需询问最终用户,如果他们不知道,则采用安全的默认值。我想如果没有符合 POSIX 标准的方法,我就会这么做(但我也可能会先检查 POSIX 邮件列表)。我希望这有帮助。