USB有關的程式設計

2021-03-31 12:34:58 字數 1351 閱讀 4887

作者的自我介紹:vc的愛好者。

開發環境: vc6 windowsxp ddk

測試環境: windowsxp

使用許可:**是免費使用

講解:

功能介紹:現在usb裝置卻很多,因此對usb裝置的查詢與讀寫就必不可少了。但是能找到關於usb讀寫的資料很少。這裡使用vc++示範了一些獲得usb的資訊的方法。

一 列舉usb裝置

通過列舉usb控制器->列舉此控制器上的usb hub->列舉hub的各個埠->獲得裝置資訊。 列舉控制器。計算機上的usb主控制器以hcd1,hcd2等命名。通過控制器名稱,使用ccreatefile 開啟它。使用deviceiocontrol即可得到其驅動程式名,以及與它連線的hub的名稱。用ccreatefile開啟hub,獲得連線資訊。再列舉hub的各個埠即可獲得連線的裝置資訊。

二 列舉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口的裝置不象串列埠並口那麼方便。這個例程只是展示了訪問的基本方法。其中還有些問題還沒有解決,發出來希望大家解決之後能通知我或者發表出來。

部分關鍵**

wsprintf(h**ame, ".//hcd%d", h**um);

hhcdev = createfile(h**ame,

generic_write,

file_share_write,

null,

open_existing,

0,

null);

USB有關的程式設計

usb有關的程式設計 現在usb裝置卻很多,因此對usb裝置的查詢與讀寫就必不可少了。但是能找到關於usb讀寫的資料很少。這裡使用vc 示範了一些獲得usb的資訊的方法。一 列舉usb裝置 通過列舉usb控制器 列舉此控制器上的usb hub 列舉hub的各個埠 獲得裝置資訊。列舉控制器 wspri...

USB有關的程式設計

現在usb裝置卻很多,因此對usb裝置的查詢與讀寫就必不可少了。但是能找到關於usb讀寫的資料很少。這裡使用vc 示範了一些獲得usb的資訊的方法。一 列舉usb裝置 通過列舉usb控制器 列舉此控制器上的usb hub 列舉hub的各個埠 獲得裝置資訊。列舉控制器 wsprintf hcname,...

USB程式設計

判斷u盤是否被修改,可以結合如下兩個方法來判斷 1.獲取u盤已用空間 system df u盤目錄 sed e s sd.sdx g 臨時檔名 然後讀取該檔案獲取totalmemory,usedmemory,freememory 與上次插入的該數值進行比較 2.獲取u盤所有檔案數 system ls...