歡迎您光臨本站 登入註冊首頁

用DriverStudio開發USB驅動程序

admin @ 2014-03-26 , reply:0

概述

     很多寫WindowsDeviceDriver的開發人員基本上都是使用WindowsDDK進行開發的。但是,現在也有不少人都開始藉助一些輔助工……

     很多寫Windows Device Driver的開發人員基本上都是使用Windows DDK進行開發的。但是,現在也有不少人都開始藉助一些輔助工具。筆者去年開始接觸到DriverStudio,發現它真的是一個不錯的開發工具,不僅寫代碼的時候思路清晰,而且和DDK的結合很好。

    當然,也有很多人覺得用DriverStudio不夠正宗,或者說不能很好的理解Windows Device Driver的架構。我感覺這就有點像MFC和SDK的關係,關於這個問題在很多地方都有爭論,比如在萬千新聞組上,就討論了將近2個月。每個人都有自己的最愛,都有自己的習慣,只要你能把事情做好,我想用什麼方法應該都是一樣的。如果你已經習慣了用DDK開發,那完全還可以繼續用下去;如果你覺得DriverStudio不錯,那嘗試用一個可以給你按照OOP概念來編程的工具有什麼不好呢?

      在驅動開發網上,經常看到有人詢問一些關於DriverStudio的使用的問題。我正好很有幸用它作了幾個驅動程序,包括VXD, KMD和WDM,稍微有點心得,因此想寫下來給大家作一個小小的參考。如果其中有錯誤,歡迎大家給我指出,謝謝。

下面我就介紹一下用DriverStudio開發一個USB驅動程序的過程。這個USB設備有3個雙向端點,每個端點的配置如下:

       EP        類型        地址 buffer(Bytes)
0 IN/OUT Control 0x80/0x00 16/16
1 IN/OUT Bulk 0x81/0x01 16/16
2 IN/OUT Bulk 0x82/0x02 64/64

      我們的驅動程序需要實現的功能就是控制設備上的LED燈的亮和滅,以及通過Endpoint 2對設備進行讀寫。

     由於DriveStudio由幾個部分組成,我們寫這個驅動程序只要用到DriverWorks,因此下面我們就簡稱它為DW。在這裡,我們假定讀者已經正確的安裝了DW,並且已經編譯好了各個庫文件。

1. 首先,我們通過快捷方式“Setup DDK and Start MSVC“來啟動VC IDE。這個快捷方式所指向的程序,會進行一些必要的設置,然後再啟動VC IDE,這樣我們的程序就可以使用DDK和DW的頭文件和庫了。

2. 從VC IDE的菜單"DriverStudio"中選擇"DriverWizard", 在如圖1所示的對話框中, 寫上項目名稱. 在這裡, 我們將這個項目稱為: TEST, 所在的目錄為D:\TEST. 然後點按鈕"Next >".
 
圖1

3. 在接下來的這個對話框中(如圖2), 我們需要選擇驅動程序的類型. 由於USB設備驅動程序是WDM類型的, 所以我們選擇第二項並且點按鈕"Next >".
 
圖2

4. 在第3個對話框中(如圖3), 選擇我們的驅動程序所操作的匯流排類型. 這裡, 我們選擇USB. 在USB Vendor ID和USB Product ID中填入USB設備的VID和PID. 假定我們的USB設備的VID和PID分別是16進位的0471和1801. 然後點按鈕"Next >". 關於VID和PID的規定請參考USB-IF的規範.
 
圖3

5. 在接下來的對話框中(如圖4), 我們需要加入Endpoint 1和Endpoint 2的定義. 由於在USB中規定Endpoint 0是必須存在的, 所以我們不需要對Endpoint 0進行定義. 點"Add..."按鈕, 彈出一個如圖5所示的對話框. 我們將它修改成如圖6所示. 其中, 按照USB的規定, 對於端點, 它的地址是1; 按照前面說明的設備的特點, Endpoint 1的最大的包大小為16位元組, 因此在"Max Transer Size"中填入16; Endpoint Name可以通過"Suggest Name"得到. 按照這些原則, 繼續設置其他的配置, 以使對話框4變成如圖7所示. 接下來, 繼續按"Next >"按鈕.
 
圖4
 
圖5
 
圖6
 
圖7

6. 在如圖8所示的對話框中, 可以填入我們需要的Driver Class的名字和文件名. 一般我們不需要更改. 繼續按"Next >"按鈕.
 
圖8

[admin via 研發互助社區 ] 用DriverStudio開發USB驅動程序已經有4284次圍觀

http://cocdig.com/docs/show-post-44936.html