版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領
文檔簡介
1、usb 驅(qū)動開發(fā)工具比較USB 驅(qū)動開發(fā)的主要工具: DDK (DDK 是 Device Development Kit ,設備開發(fā)包的意思) 、 WinDriver 、 DriverStudio 三種(不知道是否適合于其它驅(qū)動的開發(fā)) 。比較如下:用 WinDriver 和 DriverStudio 開發(fā)驅(qū)動比 DDK 簡單容易上手, 但 WinDriver 開發(fā)驅(qū)動沒 法脫離 WinDriver 環(huán)境不好發(fā)布,所以還是用 DriverStudio 比較好。下面內(nèi)容轉(zhuǎn)自網(wǎng)絡:1 Microsoft 公司提供的 Windows DDK(Device Driver Kit) 。它有 Window
2、s 98 DDK 和 Windows 2000 DDK 兩個版本。 Windows 98 DDK 能夠開發(fā) Windows 95/98/Me/NT 下的 VxD 、 KMD 和 WDM 驅(qū)動程序。 Windows 2000 DDK 能夠開發(fā) Windows 98/Me/NT/2000 下的 KMD 和 WDM 驅(qū)動程序。 由于 DDK 基于匯編語言的編程方式和內(nèi)核模式的調(diào)用, 對沒有深厚的 OS 原理和編程水平的人員來說,任務相當艱巨。2 NuMega 公司提供的 DriverStudio ,它是一個大的開發(fā)工具包,包含 VtoolsD 、 SoftICE 和 DriverWorks 等開發(fā)工
3、具。 VtoolsD 開發(fā)包提供了對 VxD 編程的 C/C+ 類庫支持,利用 VtoolsD 中的 QuickVxD 工具可以快速生成 VxD 的 C/C+ 代碼框架,開發(fā)者可以在此基礎上 根據(jù)各自的需要添加自己的代碼。 DriverWorks 用于開發(fā) KMD 和 WDM 驅(qū)動程序,并且對 DDK 函數(shù)進行了類的封裝,從而為開發(fā) Windows NT 、Windows 2000 和 Widnwos98 WDM 設備驅(qū)動程序提供了一個自動化的方法。DriverWorks ,提供了 VC+ 下的開發(fā)向?qū)?Driver Wizard ,按照它的提示可以迅速地生 成驅(qū)動程序的框架。這個框架結(jié)構(gòu)提供
4、可以正確執(zhí)行 WDM 動態(tài)環(huán)境中 IRP 的請求,而且, 也包含用于簡化系統(tǒng)提供的標準類驅(qū)動程序(如HID、流)和總線驅(qū)動程序(如PCI和USB)接口的類等??傊?,利用 DriverWorks 開發(fā) WDM 驅(qū)動程序,可以大大簡化開發(fā)人員的工作量、縮短 開發(fā)周期以及降低開發(fā)驅(qū)動程序的難度。 1用 DriverWorks 開發(fā) WDM 型 USB 設備驅(qū)動程序要想使用 DriverWorks ,必須先安裝以下軟件: DriverStudio2.5 , VisualStudio6.0 ,以及 Windows2000DDK 。由于 DriverWorks 所用的類庫是對 DDK 的庫函數(shù)的封裝, 還
5、必須在 Visual C+中編譯需要的庫文件3,下面介紹怎樣在 VC環(huán)境中創(chuàng)建自己的庫文件。(1) 啟動 Visual C+ 。(2) 選 擇 菜 單 FileOpen Workspace 。 打 開 位 于 DriverStudioDriverWorksSourcevdwlibs.dsw 的工作空間文件。(3) 選擇菜單 BuildBatch Build ,在彈出的對話框架中選擇你想編譯的庫。(4) 點擊對話框中的 Build 即可編譯你選擇的庫。下面就通過一個例子來說明利用 DriverWorks 開發(fā) USB 設備驅(qū)動程序的方法。這個 USB 設備有 3 個雙向端點,每個端點的配置如下:
6、端點 類型 地址 緩沖區(qū)(字節(jié)) 0 IN/OUT 控制( Control ) 0x80/0x00 16/16 1 IN/OUT 塊(Bulk) 0x81/0x01 16/16 2 IN/OUT 塊(Bulk) 0x82/0x02 64/64驅(qū)動程序需要實現(xiàn)的功能就是控制設備上的 LED 燈的亮和滅,以及通過端點 2 對設備 進行讀寫。(1) 首先,通過快捷方式“ Setup DDK and Start MSVC ”來啟動 VC IDE 。這個快捷 方式所指向的程序,會進行一些必要的設置,然后再啟動VC IDE ,這樣我們的程序就可以使用 DDK 和 DW 的頭文件和庫了。( 2) 從 VC
7、IDE 的菜單“ DriverStudio ”中選擇“ DriverWizard ”,之后按對話框的提示 填寫項目名稱及所在目錄。并按向?qū)нx擇驅(qū)動程序類型為 WDM ,總線類型為 USB 。(3) 按端點的配置表進行端點的設置。由于在USB 中規(guī)定端點 0 是必須存在的,所以我們只需對端點 1和端點 2 進行定義即可。(4) 選擇端點 2 產(chǎn)生 BULK Read 及 BULK Write 的代碼, DriverWorks 會自動產(chǎn)生對端點2 的讀寫代碼,不用修改,就可以直接使用。( 5 ) 增加 一個 IOCTL 來 控 制 USB 設備 的 LED 燈。 IOCTL 代碼名稱 取為 TES
8、T_IOCTL_LED ,其他值默認。( 6) 最后按下“ Finish ”按鈕,就結(jié)束了 Wizard。 在此過程中只針對需要修改的步驟進行了說明,未加說明的部分均可直接按“ Next ”按鈕。到此,我們已經(jīng)創(chuàng)建好了一個基本的驅(qū)動程序,其中的塊讀寫代碼都由 DriverWorks 自 動生成, 無需另外加代碼, 只有廠商請求通過 Ioctl 來進行, 控制 LED 燈的亮滅。 代碼如下:NTSTATUS TESTDevice:TEST_IOCTL_LED_Handler(KIrp I)NTSTA TUS status = STATUS_SUCCESS;t << "Ent
9、ering TESTDevice:TEST_IOCTL_LED_Handler, " << I << EOL;/ TODO: Verify that the input parameters are correct/ If not, return STATUS_INV ALID_PARAMETER if(I.IoctlOutputBufferSize()|!I.IoctlBuffer()|(I.IoctlInputBufferSizer()!=sizeof(UCHAR)/ TODO: Handle the the TEST_IOCTL_LED request,
10、 or/ defer the processing of the IRP (i.e. by queuing) and set/ status to STATUS_PENDING .PURB pUrb=m_Lower.BuildVendorRequest(NULL,/transfer buffer0, /transfer buffer size0, /request reserved bits(UCHAR)(*PUCHAR)I.IoctlBuffer(), /request. 1=LED_ON, 0=LED_OFF0 / Value);/transmitstatus=m_Lower.Submit
11、Urb(pUrb,NULL,Null,5000L);/ TODO: Assuming that the request was handled here. Set I.Information/ to indicate how much data to copy back to the user.I.Information() = 0;I.Status()=status;return status;這個函數(shù)控制 LED燈,它是通過 USB Vendor Request來向設備傳送的。其中 request= 1的時候表示讓 L ED亮,request= 0的時候讓LED來。它通過 Devicelo
12、Control由上層應用 程序傳下來?,F(xiàn)在,驅(qū)動程序完成了,為確保最后生成的 USB 驅(qū)動程序能編譯成功,一定要注意設置 DriverWorks 中的 Driver Build Setting (在 VC+6.0 的菜單中)中的basedir和CPU等項。 設置好后,選擇"Build/Batch Build ”在彈出的對話框中進行正確的選擇, 之后按下"Rebuild ” 按鈕,稍等片刻即可生成最終的 .sys驅(qū)動程序。結(jié)束語WDM 作為一種設備驅(qū)動程序模型,自 Windows 2000 以來已成為一種統(tǒng)一的模式。同 時 USB 技術(shù)得到廣泛應用, 進行 USB 設備驅(qū)動程
13、序的開發(fā)成為必不可少的技術(shù)環(huán)節(jié), 而使 用 DriverWorks 開發(fā) USB 設備驅(qū)動程序,簡單方便。VS2008+WD文件過濾驅(qū)動程序開發(fā)環(huán)境配置許多驅(qū)動程序開發(fā)都將環(huán)境架設在 VC 上,可是偶的本本上好不容易安了個vs2008 ,舍不得刪啊,因此毅然選擇 vs2008,拋棄vc。要開發(fā)驅(qū)動,DDK是少不了的,但是現(xiàn)在操作系統(tǒng)日新 月異,老 DDK 是不能適應國家下一個 “五十年計劃 ”滴 于是,我又一次毅然決然選擇 WDK 代替 DDK ,呵呵,還是跟著微軟大蝦們的足跡,往前看吧 先弄明白 windows 驅(qū)動的前因后果吧,這是選擇開發(fā)環(huán)境和開發(fā)過程的基礎 1. 首先,開發(fā) WINDO
14、W下的驅(qū)動程序,需要一個專門的開發(fā)包,就像開發(fā)JAVA程序,需要一個JDK,開發(fā) WINDOW應用程序,需要 SDK現(xiàn)在開發(fā) WINDOW下的驅(qū)動程序,我們們需要一 個 DDK/WDK。2. 開發(fā)驅(qū)動的工具包 DDK(Driver Developer Kit)和 WD(K Windows Driver Kit )的區(qū)別:1) .95/98/ME 下,驅(qū)動模型為: Vxd,相關(guān)資料可以看編程高手箴言的前幾個章節(jié),里 面有很詳細的介紹,雖然這個東西已經(jīng)過時,但大概看看還是會增長見識的。2) .2000/XP/2003 下,Windows 采用 WDM區(qū)動模型(Windows Driver Mode
15、l ),開發(fā) 2000/XP/2003 的驅(qū)動開發(fā)包為: DDK。3) .Vista 及以后版本,采用了 WDF驅(qū)動模型(Windows Driver Foudation),對應的開發(fā)包: WDK。其實WDK可以看做是DDK的升級版本,現(xiàn)在一般的 WDK是包含以前DDK相關(guān)的功能,現(xiàn)在 XP下 也可以用WDK開發(fā)驅(qū)動,WDK能編譯岀2000-2008的各種驅(qū)動。3.Vxd 驅(qū)動文件擴展名為: .vxd 。WDM和WDF驅(qū)動文件擴展名為:.sys。面將整個環(huán)境搭建過程描述如下:*一、安裝階段1. (虛擬機也可以不安裝)安裝WinXP虛擬機,VMware,系統(tǒng)安裝的是 WinXP_Pro_SP2.
16、iso。下載地址:06/dow n?cid=34B1A802316A542966F8D99F233970B8FC150C17&t=2&fmt =&usri nput=vmware workstati on 7&dt=1002022&ps=O 0&rt=Okbs&plt=O安裝虛擬機可以用于調(diào)試,避免在真機上調(diào)試的時候,頻繁出現(xiàn)藍屏,重啟等現(xiàn)象。自己的環(huán)境,安全第一啊 安裝好虛擬機后,還需要在虛擬機上安裝上XP系統(tǒng)。2. 安裝Visual Studio 2008,安裝前請留岀足夠大的空間,至少7G。3. 安
17、裝WDK注意安裝時會選擇要安裝的內(nèi)容,此時不要安裝DSF當然啦,安全前得下載啊這個現(xiàn)在可以再微軟的官網(wǎng)上申請下載,給大家個網(wǎng)址吧,這是 connect 的網(wǎng)址,你需要注冊一個livelD ,然后在左側(cè)欄里找到“開發(fā)人員工具”,然后就能找到WDKT,申請,下載,0K傳說 WDK支持 Windows 7, Windows Vista, Windows XP, Windows Server 2008 R2,Win dows Server 2008, and Win dows Server 2003.等等版本系統(tǒng),不僅包含了原有DDK還貌似包含了 IFS的頭文件,哎喲,貌似很有用呢,能適應長期發(fā)展.(
18、關(guān)于 WDK勺介紹與安裝,請參考偶的后續(xù)博文 )4. 安裝srvinstw.exe,用于安裝生成的服務。5. 安裝DDKWIZARD ,安裝它主要是為了使你的vs支持驅(qū)動程序開發(fā)。并將其中的ddkbuild.cmd,和ddkbuild.bat兩個文件放置到 WDK的安裝目錄下,也就是C: WinDDK下*二、配置階段0、 我的電腦-屬性-高級-環(huán)境變量用戶變量中 Path后添加C:Wi nDDKDDKBUILD.bat;C:Wi nDDKDDKBUILD.cmd;C:Wi nDDK然后再在系統(tǒng)變量中新建變量,根據(jù)不同的系統(tǒng),選擇下列中一個:2000 DDK: W2KBASEXP DDK: WX
19、PBASE2003 sp1 DDK: WNETBASE【注】變量名應與你要使用的DDK版本相符,比如我要開發(fā)XP驅(qū)動,使用XPDDK,所以變量名為 WXPBASE,其值為:C:WinDDK7600.16385.01、打開VS2008,在菜單上選擇"工具"->"選項“彈岀“選項“窗口,選擇"項目和解決方案"->"VC+ 目錄“,“顯示以下內(nèi)容的目錄 “"可執(zhí)行文件"中添加"C : WinDDK""C : WinDDK7600.16385.0binx86x86"&qu
20、ot;C : WinDDK7600.16385.0binx86""C : WinDDK7600.16385.0toolspfdbinbinx86""包含文件"中添加"C : WinDDK7600.16385.0inc""C : WinDDK7600.16385.0incapi""C : WinDDK7600.16385.0inccrt""C : WinDDK7600.16385.0incddk""引用文件"中添加"C : WinDDK7
21、600.16385.0libwxpi386" "庫文件 "中添加"C:WinDDK7600.16385.0lib""C : WinDDK7600.16385.0libwxpi386""源文件 "中添加"C : WinDDK7600.16385.0src"以上添加完畢直接按 "確定 "關(guān)閉 "選項 "對話框 如果編譯出現(xiàn) C2144 錯誤的時候,請把以上添加的文件向前移動(就是點擊"選項 "對話框中的向上的箭頭按鈕)2、設置虛擬
22、機的可調(diào)模式:1 )打開 boot 文件的方式可以選用以下兩種:1.我的電腦f屬性f咼級f “啟動和故障恢復-> 編輯。2.運行“ msconfig ” f boot.iniboot.ini的修改如下:在虛擬機中,編輯 boot.ini 文件,在末尾添加一行: multi(0)disk(0)rdisk(0)partition(1)WINDOWS="Microsoft Windows XP Professional" /noexecute=optin /fastdetect /debug /debugport=com1 /baudrate=1152002 )保存后 po
23、wer off 虛擬系統(tǒng)。在左邊欄中選擇 Edit virtual machinesettings->add->Serial Port->Output to named pipe,此時出現(xiàn)三個文本框,依次填入:com_1 和"This end is the server. ”,第 3 個修改為"The otherend is an application. ”3 )保存。配置真實機。創(chuàng)建 windbg.exe 在桌面的快捷方式,屬性 -> 目標windbg.exe “ -b -k com:port=.pipecom_1,baud=115200,pipe4 )可以選擇配置真實機串口:我的電腦 -> 管理-> 設備管理器 -> 端口 com->com1->屬性-> 端口設置 -> 每位秒數(shù) ->1152005)啟動windbg.exe, 在f
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024版企業(yè)員工續(xù)簽勞動協(xié)議模板版B版
- 二零二五年度綠色建筑綠色建材推廣與應用勞務合同規(guī)范模板2篇
- 2025版礦產(chǎn)品國際貿(mào)易保險及風險管理合同3篇
- 2024年藥品臨床試驗合同書3篇
- 二零二五年度二樓商鋪租賃與供應鏈管理服務合同
- 內(nèi)墻保溫施工方案
- 2024年門禁系統(tǒng)定制化開發(fā)與實施合同3篇
- 2024年門面房轉(zhuǎn)讓合同樣本
- 成都工業(yè)職業(yè)技術(shù)學院《數(shù)字影視合成》2023-2024學年第一學期期末試卷
- 2025版風電場監(jiān)理合同變更補充協(xié)議3篇
- 2024年7月國家開放大學法學本科《知識產(chǎn)權(quán)法》期末考試試題及答案
- 2024年河南省公務員錄用考試《行測》試題及答案解析
- (2024年)剪映入門教程課件
- 鷸蚌相爭 完整版課件
- 鋼結(jié)構(gòu)安裝旁站監(jiān)理記錄表(參考表)多篇
- 大氣污染物綜合排放準(2022年-2023年)
- 國家開放大學電大本科《古代小說戲曲專題》2023-2024期末試題及答案(試卷代號:1340)
- 2019年最新部編版四年級語文上冊第七單元達標檢測卷含答案(新版)
- 2018中國美業(yè)發(fā)展經(jīng)濟共享峰會方案-41P
- 資產(chǎn)負債表、業(yè)務活動表(民非)
- 人教版八年級下冊英語單詞表(按單元排序)全冊(附音標和解釋)
評論
0/150
提交評論