2012-12-05 13 views
11

Muszę sprawdzić w C#, czy dysk twardy jest SSD (dysk półprzewodnikowy), nie ma kary wyszukiwania? użyłem:Jaki jest najprostszy sposób w C#, aby sprawdzić, czy dysk twardy jest SSD bez pisania jakiegokolwiek pliku na dysku twardym?

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

Ale to daje tylko ciągi zawierające SSD we właściwościach, nie może zależeć od tego?

Potrzebuję bezpośredniego sposobu, aby to sprawdzić?

+0

Można zachować listę identyfikatorów sprzętowych dysków SSD i sprawdzić to. Jasne, to jest rozwijająca się lista ... – ppeterka

+2

+1 za pobicie. Widziałem, jak możesz użyć tego do flop między podejściem opartym na pamięci lub na dysku. Potrzeba czasu na pomiar czasu dostępu. – Paparazzi

+0

Napędy hybrydowe również są przegraną przyczyną. Mam jeden w moim nowym laptopie, dysk C: jest dyskiem twardym z dyskiem SSD 20 GB. To nie jest problem, który musi zostać rozwiązany. –

Odpowiedz

9

WMI nie będzie w stanie tego łatwo ustalić. Istnieje rozwiązanie tutaj, który jest oparty na tej samej algorytmu Windows 7 używa się do określenia, czy dysk jest SSD (więcej na algorytmie tutaj: Windows 7 Enhancements for Solid-State Drives, strona 8 i również tutaj: Windows 7 Disk Defragmenter User Interface Overview): Tell whether SSD or not in C#

cytat z blogu MSDN :

Defragmentator dysków analizuje wynik bezpośredniego zapytania urządzenia za pomocą polecenia ATA IDENTIFY DEVICE. Problemy z defragmenterem IOCTL_ATA_PASS_THROUGH żądanie i sprawdza strukturę IDENTIFY_DEVICE_DATA . Jeśli wartość NomimalMediaRotationRate jest ustawiona na 1, dysk ten jest oznaczany jako dysk SSD jako . Najnowsze dyski SSD będą odpowiadać komendzie ustawiając słowo 217 (które służy do raportowania nominalnej prędkości obrotu nośnika do 1). Słowo 217 zostało wprowadzone w 2007 roku w specyfikacji ATA8-ACS .

+0

Problem z tym podejściem polega na tym, że nie wykryje on, czy pamięć masowa jest dyskiem SSD, ale po prostu sprawdza, czy ma małe opóźnienie i wysoką przepustowość. Stąd moje pytanie do OP. :-) – CodeCaster

+2

@CodeCaster - Nie zgadzam się. Jest w stanie przetestować nominalną prędkość obrotu nośnika ATA, która powinna być ustawiona na 1 ("non rotating media") dla SSD. Zobacz http://www.t13.org/documents/UploadedDocuments/docs2007/D1699r4a-ATA8-ACS.pdf strona 139, chociaż niektóre dyski SSD/sterowniki faktycznie nie mogą tego zaimplementować. –

+0

Masz rację, właśnie przejrzałem kod i tęskniłem za tym. – CodeCaster

Powiązane problemy