2009-11-11 103 views
2

如何從C程序讀取驅動器的硬件信息? (即確定驅動器是SSD還是機械磁盤)如何使用C語言確定存儲類型(SSD驅動器或HHD。機械驅動器)

+0

你所說的「性格」是什麼意思?驅動器號? – Tim 2009-11-11 02:33:06

+0

@Tim:我想他的意思是,如果SSD有驅動器盤符'D'而普通HDD是驅動器盤符'E',他怎麼能通過「C」來檢查哪個驅動器正在使用哪個驅動器盤符。潘沒有打算。 :P – 2009-11-11 02:36:50

+0

我認爲從Vista開始,它會始終使啓動驅動器C.我敢肯定,我有雙啓動和兩個Windows操作系統認爲他們的主要驅動器是C.請澄清問題! – 2009-11-11 02:41:35

回答

-1

您可以使用win32庫中的GetDriveType方法,並且可能可以區分這種方式,或者使用GetVolumeInformation來嘗試並確定它來自標籤。

+0

'因爲我的應用程序可能在任何主機上運行,​​我不知道標籤會是什麼......所以我認爲猜標籤是合適的 – 2009-11-11 07:57:10

+0

該功能不報告驅動器是否是SSD。 – 2011-11-18 09:32:49

1

您是否考慮過進行讀取/寫入測試以嘗試確定功能?

+0

不,當我的應用程序安裝後,我會檢查所有的驅動器,如果有一個SSD,它運行另一種方式... – 2009-11-11 08:01:55

-2

這個猜測是一個長鏡頭,但我找不到更好的東西。在設備的識別結構中,看看它是否支持聲學管理。舊的磁盤驅動器沒有,但也許是最現代的磁盤驅動器。顯然SSD不需要聲學管理,但我們希望他們會說他們不會,而不是假裝成磁盤驅動器。

+0

這是行不通的。希捷已經放棄了現代傳統驅動器的聲學管理。 – ChrisInEdmonton 2010-01-09 16:37:59

15

SSD應該認定自己是非旋轉的。對於Linux操作系統,如舉例來說,你可以通過sysfs中的信息:

cat /sys/block/sda/queue/rotational 

如果返回0,你有SSD ...

+0

如果我能給這千上萬的讚揚,我會的。這正是我所期待的。謝謝! – Handyman5 2011-09-13 21:49:34

+0

不可靠。一些驅動器現在躺在這個值上。另外,混合驅動器既是HDD又是SSD? – Volomike 2015-07-11 16:04:31

+0

那麼,@ volomike,我認爲這是超出了問題。他特別說SDD或HDD。如果司機回答否則,這是製造商的問題,沒有人,甚至連Linus Tornvalds都不能幫助你(除了Linus可以公開抱怨併產生一些影響)...... – pan1nx 2015-11-02 11:27:01

相關問題