Подтвердить что ты не робот

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

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

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

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

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

4b9b3361

Ответ 1

WMI не сможет легко это определить. Здесь есть решение, основанное на том же алгоритме, который использует Windows 7 для определения того, является ли диск SSD (подробнее об этом здесь: Windows 7 Enhancements for Solid-State Диски, стр. 8, а также здесь: Обзор интерфейса пользователя Windows 7 Disk Defragmenter: Сообщать, SSD или нет в С#

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

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