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