在没有在硬盘上写任何文件的情况下,C#检查硬盘是否是SSD的最简单方法是什么?

我需要检查C#,如果硬盘是SSD(固态硬盘),没有寻求惩罚? 我用了:

ManagementClass driveClass = new ManagementClass("Win32_DiskDrive"); ManagementObjectCollection drives = driveClass.GetInstances(); 

但它只给出了属性中包含SSD的Strings,我不能依赖它?

我需要直接检查一下吗?

WMI将无法轻易确定这一点。 这里有一个解决方案,它基于Windows 7用于确定磁盘是否为SSD的相同算法(此处的算法更多: 固态驱动器的Windows 7增强function ,第8页以及此处: Windows 7磁盘碎片整理程序用户界面概述 ): 在C#中判断SSD是否存在

来自MSDN博客的引用:

磁盘碎片整理程序查看通过ATA IDENTIFY DEVICE命令直接查询设备的结果。 碎片整理程序发出IOCTL_ATA_PASS_THROUGH请求并检查IDENTIFY_DEVICE_DATA结构。 如果NomimalMediaRotationRate设置为1,则此磁盘被视为SSD。 最新的SSD将通过设置字217(用于将标称介质旋转速率报告为1)来响应该命令。 217这个词是在2007年的ATA8-ACS规范中引入的。