【问题标题】:How to determine storage type (SSD drive or HHD .mechanical drive), using C language如何确定存储类型(SSD驱动或HHD .mechanical驱动),使用C语言
【发布时间】:2010-12-15 07:41:22
【问题描述】:

如何从 C 程序中读取驱动器的硬件信息? (即确定驱动器是 SSD 还是机械磁盘。)

【问题讨论】:

  • “性格”是什么意思?盘符?
  • @Tim:我猜他的意思是如果 SSD 有驱动器号“D”而普通 HDD 是驱动器号“E”,他如何通过“C”检查哪个驱动器正在使用哪个驱动器号。双关语不是故意的。 :P
  • 我认为从 vista 开始,它总是会将引导驱动器设为 C。我很确定我有双引导并且两个 Windows 操作系统都认为它们的主驱动器是 C。请澄清问题!
  • 我认为他的意思是“在遍历系统上的驱动器时如何确定驱动器技术”
  • 我不认为 SSD 与传统的对比是您可以轻松检查的。您也许可以从型号中学到一些东西,但除非您有确切的型号要检查,否则这是偶然的。

标签: c windows linux solid-state-drive


【解决方案1】:

SSD 应该将自己标识为非旋转。以 linux 为例,您可以通过 sysfs 获取信息:

cat /sys/block/sda/queue/rotational

如果它返回 0,你有 SSD...

【讨论】:

  • 如果我能给这个一千个赞,我会的。这正是我一直在寻找的。谢谢!
  • 不可靠。现在有些驱动器基于这个值。另外,HDD 和 SSD 的混合驱动器呢?
  • 好吧,@volomik,我认为这超出了所提问题的范围。他特别说SDD或HDD。如果驱动程序的反应不是这样,那就是制造商的问题,没有人,甚至是 Linus Tornvalds,都不能帮助你(除了 Linus 可以公开抱怨它并产生一些影响)......
【解决方案2】:

您是否考虑过进行读/写测试来尝试确定功能?

【讨论】:

  • 不,当我的应用程序安装后,我会检查所有驱动器,如果有一个 SSD,它会以另一种方式运行...
【解决方案3】:

您可以使用 win32 库中的GetDriveType 方法,您可能可以通过这种方式进行区分,或者您使用 GetVolumeInformation 尝试从标签中确定它。

【讨论】:

  • '因为我的应用程序可能在任何主机上运行,​​我不知道标签是什么......所以我认为猜测标签是合适的
  • 该函数不会报告驱动器是否为 SSD。
【解决方案4】:

这个猜测有点远,但我找不到更好的了。在设备的标识结构中,查看是否支持声学管理。旧的磁盘驱动器没有,但也许大多数现代磁盘驱动器都有。显然 SSD 不需要声学管理,但我们希望他们会说不需要,而不是伪装成磁盘驱动器。

【讨论】:

  • 这行不通。希捷已从其现代传统硬盘中删除了声学管理。
猜你喜欢
  • 1970-01-01
  • 2011-05-06
  • 2020-04-07
  • 1970-01-01
  • 1970-01-01
  • 2019-04-28
  • 1970-01-01
  • 2013-01-10
  • 1970-01-01
相关资源
最近更新 更多