Каков самый простой способ в C# проверить, является ли жесткий диск SSD без записи файла на жесткий диск?

Мне нужно проверить C# , если жесткий диск SSD (твердотельный диск), не искать штраф? Я использовал:

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

но его только дает строки, которые содержат SSD в свойствах, я не могу зависеть от этого?

Мне нужен прямой способ проверить это?

1 ответов


WMI не сможет определить это легко. Здесь есть решение, основанное на том же алгоритме, который использует Windows 7, чтобы определить, является ли диск SSD (подробнее об алгоритме здесь:улучшения Windows 7 для твердотельных дисков, стр. 8, а также здесь: Обзор Пользовательского Интерфейса Дефрагментатора Диска Windows 7):скажите, SSD или нет в C#

цитата из блога MSDN:

Дефрагментация диска смотрит на результат прямого запроса устройства через команду ATA IDENTIFY DEVICE. Проблемы дефрагментации Ioctl_ata_pass_through запрос и проверяет IDENTIFY_DEVICE_DATA структура. Если NomimalMediaRotationRate имеет значение 1, Этот диск считается SSD. Последние SSDs будут отвечать на команду установка слова 217 (которое используется для сообщения номинального носителя скорость вращения 1). Слово 217 было введено в 2007 году в ATA8-ACS в спецификации.