1. 程式人生 > >USB裝置的VID和PID

USB裝置的VID和PID

vid: vendor id
pid: product id

PID/VID唯一標識一個裝置,HardwareID是為了給系統識別的 ,他是根據PID/VID而生成的。這個與序列號沒什麼關係,序列號一般都是廠家固化到晶片中的資訊而已。GUID只是為了標誌你安裝的裝置是屬於一個什麼類當中,這個類可以顯示再裝置管理器中。比如:你可以定義一個類,當然這個類有與系統中任何類都不同的GUID,然後選擇一個圖示和類名,就可以同網絡卡等其他裝置一起顯示在裝置管理器下的根目錄中了

根據USB規範的規定,所有的USB裝置都有供應商ID(VID)和產品識別碼(PID),主機通過不同的VID和PID來區別不同的裝置,VID和PID都是兩個位元組長,其中,供應商ID(VID)由供應商向USB執行論壇申請,每個供應商的VID是唯一的,PID由供應商自行決定,理論上來說,不同的產品、相同產品的不同型號、相同型號的不同設計的產品最好採用不同的PID,以便區別相同廠家的不同裝置。

   VID和PID通常情況下有兩種儲存方式,第一種是主控生產商的VID和PID,儲存在主控的bootcode中;第二種是裝置生產商的VID和PID,該VID和PID儲存在主控外部的非易失性儲存裝置中(EEPROM或Flash)的裝置韌體中,當USB裝置連線主機時,如果韌體中有裝置生產商的VID和PID,會將該VID和PID報告給主機,而忽略主控生產商的VID和PID。所以理論上一個USB儲存裝置的VID應該是裝置生產商的VID,而不是主控生產商的VID,這兩個VID應該是不同的(主控生產商自己生產的裝置除外)。

   由於VID和PID重複並不會對產品的使用帶來嚴重影響,很多USB裝置生產商(山寨廠居多)為了方便,並不會向USB執行論壇申請自己的VID,而是依然沿用主控生產商的VID或隨便向產品寫入VID和PID;同時,正規廠家只需要申請VID,PID由廠家自行確定,所以存在相同型號的產品,可能採用了不同的主控(商業需要,很正常),而他們的PID是一樣的,基於上述原因通過VID和PID就不能準確識別USB裝置的主控型號,這個問題大家在使用USB裝置的過程中需要注意。