FineArt News

認識 USB 裝置

USB-IF協會是負責維護USB (Universal Serial Bus)規格及合規性的組織,其所制定的標準,讓開發人員及製造商能更容易維護一致的資訊,以確保能開發向下相容的產品。

USB是一種數據通信方式,也是一種資料匯流排,而且是最複雜的匯流排之一。

實際上,在USB協定中,設備是依主、從模式連接,所以分成 USB Host及USB Device兩類,簡單的說,USB Host是指可連接USB 設備的硬體,例如:我們使用的PC上都有USB的插孔,而USB Device則是一般常見的移動式設備,例如:手機、行動碟…等。

對於大部份的使用者,多只是使用USB Device,所以很多人對於USB 裝置的第一印像,就是容易使用,而且大多數的USB 設備,都可以在不用安裝軟體驅動的情況,直接使用,唯一要注意的是使用那種 USB 的硬體接頭,USB的接頭有點多,適合不同的設備,但常讓人混淆,常見的有Mini USB、Micro USB及Type C等USB接頭,至於要使用那種接頭?這和您使用的USB Host有關。

如果是買新的PC或Notebook,我們通常會關心其上的USB Host的傳送速度,如果支援更高等級的USB規格(例如:USB 3.X、USB 4 … ),就可以有更快的資料傳送速度。

 

USB 裝置的軟體特性

在作業系統的眼中,USB 規格只是整個裝置樹中的一個分支,但因為它實在太方便了,所以各種的硬體廠商,都在USB上開發產品,例如:早期的滑鼠是使用RS232規格,現在大多改成USB規格,早期的鍵盤是PS2規格,現在很多也是USB或2.4G Wifi 接收器規格,早期的網卡是PCI規格,現在的外接網卡,外接無線網卡也是USB規格,此外像是行動硬碟、照相鏡頭、音效卡、手機…等,幾乎所有的外接設備,都被USB一網打盡。

為什麼USB設備可以模擬各種的硬體呢?因為在Windows中,這些設備都是虛擬的裝置,撰寫底層設備的驅動軟體工程師,可以透過驅動程式,將各種的虛擬設備串連起來,或將資料導引到不同的實體設備。

對於撰寫Windows上層應用程式的工程師,則會透過標準的API開啟各種設備,實際上,對於一個開發應用程式的工程師而言,從來不用關心這些 API 對應的設備硬體在那裡,因為透過 API 的隔離,設備實體存在那裡 ( 本機?遠端 ),或由那種硬體規格實現 ( IDE?SATA?USB?),都不是他要注意的事。

 

範例

我們來看數個例子,說明這種虛擬設備的轉換,假設應用程式工程師寫了一個WORD.EXE,會在使用者編輯好文件後,存入一個儲存設備。


例 1:是將檔案,透過SATA界面,存入硬碟透過驅動程式重新組織虛擬設備, 我們可以看到非常多的變化

例 2:是將檔案,透過USB界面,存入USB碟

例 3、例 4:是將檔案,透過網路,將檔案傳送到其他設備(像是OneDrive或是網路硬碟 )

例 5:則是使用者以為將檔存入E:\,實際上檔案內容被加密後,轉存到F:\

其中,唯一不同的是中間界面,驅動程式會將其上緣(即輸入部份)符合軟體界面的下緣,就可以接入檔案系統,而中間界面,驅動程式的下緣,則依不同的硬體界面而不同,所以只須修正此部分,就可以讓相同的 USB 規格承接不同功能 ( 例如:檔案系統、多媒體系統等… )。

上例子中的例子 5,可以重新繞回檔案系統,就是常見的虛擬硬碟技術。

 

USB 設備在裝控管的唯一性

不是每一種USB 設備都具有唯一性,一般我們依賴 USB 裝置的 PID、VID 來判讀是那家公司的那類裝置,但無法細分到相同外觀的硬體是否相同,例如:同一家公司生產的USB滑鼠,在Windows系統下,有相同的 PID、VID,所以並無法分辨兩個滑鼠的不同。

但是在 USB行動碟上,則大多數都有一個唯一序號(有些沒有),因此我們可以透過唯一續號,區分在硬體外觀完全相的兩個不同 USB行動碟,一般來說,其他設備如:硬碟及光碟,也大多數有一個唯一碼;如果沒有唯一碼,就不容易分辨同外觀的硬體。

此外,還有一些設備,雖然沒有公開的唯一碼,但實際上存有須透過特別方式才能取到的唯一碼,例如:網路卡上有MAC值,在嵌入式系統(Embedded System)中的 CPU,Debug工具中的JTEG、SWD …等,大多有硬體上自行定義的方式,可以取出其唯一碼,可惜 Windows系統對這些自行訂義的唯一碼設備都不支援。

Windows 只支援通用性的唯一碼,如果Windows判讀此設備具備唯一性,會標示於 CM_DEVCAP_UNIQUEID。

下面是 USB 行動碟在[裝置管理員]中,點選後,按右鍵[內容],在[詳細資料]中的[性能]欄會出現 CM_DEVCAP_UNIQUEID。

 

如果裝置具有唯一性,則在控管裝置時,就可以精確的指定設備,例如:IT 人員以公司名義買了一些USB行動碟,之後可以將其唯一序號輸入X-FORT控管程式,即可分發給公司內的人員,在公司中只能使用這些被控管的 USB 行動碟,私自帶入的USB行動碟則不可使用。