Pracuję nad przenośnym programem OS, który skorzystałby na wykryciu, czy fizyczne urządzenie pamięci masowej jest dyskiem SSD, czy zwykłym starym dyskiem spinowym.Wykrywanie urządzeń pamięci SSD w systemach POSIX
W systemie Linux istnieje:
/sys/block/sdX/queue/rotational
który zwraca 0 lub 1 jeśli SSD, ale nie jestem pewien, czy jest to najlepszy sposób.
W Windows i UNIX nie znalazłem żadnego sposobu wykrywania go, być może powinienem użyć ioctl DEVICE_SEEK_PENALTY_DESCRIPTOR
i sprawdzić szukać penelty (która powinna być bardzo niska w urządzeniu pamięci masowej SSD), czy może użyć DeviceIoControl
sprawdzić mediów nominalną szybkość rotacji (która również powinna być bardzo niska na urządzeniu pamięci masowej SSD).
Jakieś zalecenia dla mnie, jak postępować z wykrywaniem dysków SSD w systemach zgodnych z POSIX?
Nie ma standardowego interfejsu, więc będziesz musiał zrobić coś specyficznego dla systemu operacyjnego. Byłoby miło, gdyby istniał prosty, wieloplatformowy sposób jego określenia. W przypadku Linuksa, IIRC 'rotational' będzie również' 0' dla pendriveów USB. – Petesh
@Petesh Trudno byłoby uzyskać go w standardzie POSIX, gdyby nie było niezawodnego sposobu wykrywania urządzeń pamięci SSD. –
Twoja aplikacja prawdopodobnie skorzystałaby z opcji skromnego ustawienia użytkownika, może z ładnej tabeli wszystkich dysków i tego, czy mają być używane w "trybie SSD", "trybie obrotowym", czy też "trybie dysku RAM", "nieznanym NAS tryb urządzenia "," zabawny tryb specjalnego systemu plików "i tak dalej. Nie marnowałbym czasu na opracowanie funkcji wykrywania, która w każdym przypadku prawdopodobnie wymagałaby ręcznego sprawdzenia i zastąpienia. –