現在usb裝置卻很多,因此對usb裝置的查詢與讀寫就必不可少了。但是能找到關於usb讀寫的資料很少。這裡使用vc++示範了一些獲得usb的資訊的方法。
一、列舉usb裝置
通過列舉usb控制器->列舉此控制器上的usb hub->列舉hub的各個埠->獲得裝置資訊。
列舉控制器:
wsprintf(hcname, ".//hcd%d", hcnum);計算機上的usb主控制器以hcd1,hcd2等命名。通過控制器名稱,使用ccreatefile 開啟它。使用deviceiocontrol即可得到其驅動程式名,以及與它連線的hub的名稱。用ccreatefile開啟hub,獲得連線資訊。再 列舉hub的各個埠即可獲得連線的裝置資訊。hhcdev = createfile(hcname,
generic_write,
file_share_write,
null,
open_existing,
0,null);
二、列舉hid裝置
hid裝置是微軟定義的標準人機介面規範。比如usb滑鼠,usb遊戲手柄等。不用查詢具體裝置的guid,使用api hidd_gethidguid(&guidhid)即可得到guid。有了guid通過api setupdienumdeviceinte***ces可獲得是否有裝置連線。如果此類裝置連線通過 setupdigetdeviceinte***cedetail獲得它的裝置路徑資訊。使用ccreatefile 開啟它,通過hidd_getattributes獲得其基本屬性資訊。使用deviceiocontrol可以獲得更詳細的屬性。在本**中如果計算機 上插有usb遊戲手柄,可獲得其資訊。但不知道為什麼xp下卻不能獲得usb滑鼠的資訊。
三 列舉u盤
先用getdrivetype api獲得裝置的型別,若型別為removable(當然有些大容量u盤可能報告為fixed,那就需要其他方法來確定了),即可能是u盤。用 ccreatefile 開啟之後,再用ioctl_storage_query_property為引數的deviceiocontrol來獲得其屬性。
四、結束語
示例工程在winxp+xpddk+vc6下編譯通過。usb裝置種模擬較多,也比較特殊,不同廠商的硬體不同,控制軟體也不盡相同(我想主要是 ictl碼不同,也不容易查到)。使得訪問usb口的裝置不象串列埠並口那麼方便。這個例程只是展示了訪問的基本方法。其中還有些問題還沒有解決,發出來希 望大家解決之後能通知我或者發表出來。
參考了usbport,usbview等**,一併致謝。
****:[email protected]
USB有關的程式設計
作者的自我介紹 vc的愛好者。開發環境 vc6 windowsxp ddk 測試環境 windowsxp 使用許可 是免費使用 講解 功能介紹 現在usb裝置卻很多,因此對usb裝置的查詢與讀寫就必不可少了。但是能找到關於usb讀寫的資料很少。這裡使用vc 示範了一些獲得usb的資訊的方法。一 列舉...
USB有關的程式設計
usb有關的程式設計 現在usb裝置卻很多,因此對usb裝置的查詢與讀寫就必不可少了。但是能找到關於usb讀寫的資料很少。這裡使用vc 示範了一些獲得usb的資訊的方法。一 列舉usb裝置 通過列舉usb控制器 列舉此控制器上的usb hub 列舉hub的各個埠 獲得裝置資訊。列舉控制器 wspri...
USB程式設計
判斷u盤是否被修改,可以結合如下兩個方法來判斷 1.獲取u盤已用空間 system df u盤目錄 sed e s sd.sdx g 臨時檔名 然後讀取該檔案獲取totalmemory,usedmemory,freememory 與上次插入的該數值進行比較 2.獲取u盤所有檔案數 system ls...