Обнаружение устройств хранения SSD в ОС POSIX
Я работаю над переносной программой для ОС, которая выиграет от обнаружения того, является ли физическое запоминающее устройство SSD или обычным старым диском.
В Linux есть:
/sys/block/sdX/queue/rotational
которые возвращают 0 или 1, если SSD, но я не уверен, что это лучший способ.
В Windows и UNIX я не нашел способа обнаружить его, возможно, я должен использовать ioctl DEVICE_SEEK_PENALTY_DESCRIPTOR
и проверить поисковое оповещение (которое должно быть очень низким на устройстве хранения SSD) или, возможно, использовать DeviceIoControl
для проверки номинальная скорость вращения носителя (которая также должна быть очень низкой на устройстве хранения SSD).
Любые рекомендации для меня о том, как продолжить обнаружение SSD-дисков на совместимых с POSIX операционных системах?
Ответы
Ответ 1
Связано: https://unix.stackexchange.com/questions/65595/how-to-know-if-a-disk-is-an-ssd-or-an-hdd
ИМО, хотя. Вы можете использовать метод POSIX для определения ОС и иметь различные методы для обнаружения SSD, а когда это невозможно определить, просто спросите конечного пользователя, и если они не знают, у вас есть безопасное значение по умолчанию. Я предполагаю, что это то, что я сделал бы, если бы не был совместимый с POSIX метод (но я бы, вероятно, сначала проверил список рассылки POSIX). Надеюсь, это поможет.
Ответ 2
Я повторю замечание Лоренцо Гатти выше, говоря, что лучший способ сделать это - это, безусловно, вариант, который предоставляется пользователю. Нет никакого портативного способа сделать это, и я не удивлюсь, если другие ОС (особенно старые, которые являются проблемой, если у вас есть какая-то гарантия того, что ваши пользователи используют несколько текущую ОС) не могли этого сделать.
Действительно, флажок в строке "Я использую твердотельный диск", по умолчанию - выключен, вероятно, будет лучшим вариантом, тем более, что у тех, у кого есть SSD, (на данный момент, по крайней мере) чтобы понять, что у них есть.