




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、usb驅(qū)動(dòng)開(kāi)發(fā)工具比較USB驅(qū)動(dòng)開(kāi)發(fā)的主要工具:DDK(DDK是DeviceDevelopmentKit,設(shè)備開(kāi)發(fā)包的意思)、WinDriver、DriverStudio三種(不知道是否適合于其它驅(qū)動(dòng)的開(kāi)發(fā))。比較如下:用WinDriver和DriverStudio開(kāi)發(fā)驅(qū)動(dòng)比DDK簡(jiǎn)單容易上手,但WinDriver開(kāi)發(fā)驅(qū)動(dòng)沒(méi)法脫離WinDriver環(huán)境不好發(fā)布,所以還是用DriverStudio比較好。下面內(nèi)容轉(zhuǎn)自網(wǎng)絡(luò):Microsoft公司提供的WindowsDDK(DeviceDriverKit)。它有Windows98DDK和Windows2000DDK兩個(gè)版本。Windows98DDK
2、能夠開(kāi)發(fā)Windows95/98/Me/NT下的VxD、KMD和WDM驅(qū)動(dòng)程序。Windows2000DDK能夠開(kāi)發(fā)Windows98/Me/NT/2000下的KMD和WDM驅(qū)動(dòng)程序。由于DDK基于匯編語(yǔ)言的編程方式和內(nèi)核模式的調(diào)用,對(duì)沒(méi)有深厚的OS原理和編程水平的人員來(lái)說(shuō),任務(wù)相當(dāng)艱巨。NuMega公司提供的DriverStudio,它是一個(gè)大的開(kāi)發(fā)工具包,包含VtoolsD、SoftICE和DriverWorks等開(kāi)發(fā)工具。VtoolsD開(kāi)發(fā)包提供了對(duì)VxD編程的C/C+類庫(kù)支持,利用VtoolsD中的QuickVxD工具可以快速生成VxD的C/C+代碼框架,開(kāi)發(fā)者可以在此基礎(chǔ)上根據(jù)各自的
3、需要添加自己的代碼。DriverWorks用于開(kāi)發(fā)KMD和WDM驅(qū)動(dòng)程序,并且對(duì)DDK函數(shù)進(jìn)行了類的封裝,從而為開(kāi)發(fā)WindowsNT、Windows2000和Widnwos98WDM設(shè)備驅(qū)動(dòng)程序提供了一個(gè)自動(dòng)化的方法。DriverWorks,提供了VC+下的開(kāi)發(fā)向?qū)riverWizard,按照它的提示可以迅速地生成驅(qū)動(dòng)程序的框架。這個(gè)框架結(jié)構(gòu)提供可以正確執(zhí)行WDM動(dòng)態(tài)環(huán)境中IRP的請(qǐng)求,而且,也包含用于簡(jiǎn)化系統(tǒng)提供的標(biāo)準(zhǔn)類驅(qū)動(dòng)程序(如HID、流)和總線驅(qū)動(dòng)程序(如PCI和USB)接口的類等??傊?,利用DriverWorks開(kāi)發(fā)WDM驅(qū)動(dòng)程序,可以大大簡(jiǎn)化開(kāi)發(fā)人員的工作量、縮短開(kāi)發(fā)周期以及降
4、低開(kāi)發(fā)驅(qū)動(dòng)程序的難度。1用DriverWorks開(kāi)發(fā)WDM型USB設(shè)備驅(qū)動(dòng)程序要想使用DriverWorks,必須先安裝以下軟件:DriverStudio2.5,VisualStudio6.0,以及Windows2000DDK。由于DriverWorks所用的類庫(kù)是對(duì)DDK的庫(kù)函數(shù)的封裝,還必須在VisualC+中編譯需要的庫(kù)文件3,下面介紹怎樣在VC環(huán)境中創(chuàng)建自己的庫(kù)文件。(1)啟動(dòng)VisualC+。(2)選擇菜單FileOpenWorkspace。打開(kāi)位于DriverStudioDriverWorksSourcevdwlibs.dsw的工作空間文件。(3)選擇菜單BuildBatchBui
5、ld,在彈出的對(duì)話框架中選擇你想編譯的庫(kù)。點(diǎn)擊對(duì)話框中的Build即可編譯你選擇的庫(kù)。下面就通過(guò)一個(gè)例子來(lái)說(shuō)明利用DriverWorks開(kāi)發(fā)USB設(shè)備驅(qū)動(dòng)程序的方法。這個(gè)USB設(shè)備有3個(gè)雙向端點(diǎn),每個(gè)端點(diǎn)的配置如下:端點(diǎn)類型地址緩沖區(qū)(字節(jié))0IN/OUT控制(Control)0 x80/0 x0016/161IN/OUT塊(Bulk)0 x81/0 x0116/162IN/OUT塊(Bulk)0 x82/0 x0264/64驅(qū)動(dòng)程序需要實(shí)現(xiàn)的功能就是控制設(shè)備上的LED燈的亮和滅,以及通過(guò)端點(diǎn)2對(duì)設(shè)備進(jìn)行讀寫(xiě)。首先,通過(guò)快捷方式“SetupDDKandStartMSVC”來(lái)啟動(dòng)VCIDE。這個(gè)
6、快捷方式所指向的程序,會(huì)進(jìn)行一些必要的設(shè)置,然后再啟動(dòng)VCIDE,這樣我們的程序就可以使用DDK和DW的頭文件和庫(kù)了。從VCIDE的菜單“DriverStudio”中選擇“DriverWizard”,之后按對(duì)話框的提示填寫(xiě)項(xiàng)目名稱及所在目錄。并按向?qū)нx擇驅(qū)動(dòng)程序類型為WDM,總線類型為USB。按端點(diǎn)的配置表進(jìn)行端點(diǎn)的設(shè)置。由于在USB中規(guī)定端點(diǎn)0是必須存在的,所以我們只需對(duì)端點(diǎn)1和端點(diǎn)2進(jìn)行定義即可。(4)選擇端點(diǎn)2產(chǎn)生BULKRead及BULKWrite的代碼,DriverWorks會(huì)自動(dòng)產(chǎn)生對(duì)端點(diǎn)2的讀寫(xiě)代碼,不用修改,就可以直接使用。增加一個(gè)IOCTL來(lái)控制USB設(shè)備的LED燈。IOCT
7、L代碼名稱取為TEST_IOCTL_LED,其他值默認(rèn)。最后按下“Finish”按鈕,就結(jié)束了Wizard。在此過(guò)程中只針對(duì)需要修改的步驟進(jìn)行了說(shuō)明,未加說(shuō)明的部分均可直接按“Next”按鈕。到此,我們已經(jīng)創(chuàng)建好了一個(gè)基本的驅(qū)動(dòng)程序,其中的塊讀寫(xiě)代碼都由DriverWorks自動(dòng)生成,無(wú)需另外加代碼,只有廠商請(qǐng)求通過(guò)Ioctl來(lái)進(jìn)行,控制LED燈的亮滅。代碼如下:NTSTATUSTESTDevice:TEST_IOCTL_LED_Handler(KIrpI)NTSTATUSstatus=STATUS_SUCCESS;tEnteringTESTDevice:TEST_IOCTL_LED_Hand
8、ler,IEOL;/TODO:Verifythattheinputparametersarecorrect/Ifnot,returnSTATUS_INVALID_PARAMETERif(I.IoctlOutputBufferSize()|!I.IoctlBuffer()|(I.IoctlInputBufferSizer()!=sizeof(UCHAR)/TODO:HandlethetheTEST_IOCTL_LEDrequest,or/defertheprocessingoftheIRP(i.e.byqueuing)andset/statustoSTATUS_PENDING.PURBpUrb=
9、m_Lower.BuildVendorRequest(NULL,/transferbuffer0,/transferbuffersize0,/requestreservedbits(UCHAR)(*PUCHAR)I.IoctlBuffer(),/request.1=LED_ON,0=LED_OFF0/Value);/transmitstatus=m_Lower.SubmitUrb(pUrb,NULL,Null,5000L);/TODO:Assumingthattherequestwashandledhere.SetI.Information/toindicatehowmuchdatatocop
10、ybacktotheuser.I.Information()=0;I.Status()=status;returnstatus;這個(gè)函數(shù)控制LED燈,它是通過(guò)USBVendorRequest來(lái)向設(shè)備傳送的。其中request=1的時(shí)候表示讓LED亮,request=0的時(shí)候讓LED來(lái)。它通過(guò)DeviceloControl由上層應(yīng)用程序傳下來(lái)?,F(xiàn)在,驅(qū)動(dòng)程序完成了,為確保最后生成的USB驅(qū)動(dòng)程序能編譯成功,一定要注意設(shè)置DriverWorks中的DriverBuildSetting(在VC+6.0的菜單中)中的basedir和CPU等項(xiàng)。設(shè)置好后,選擇“Build/BatchBuild”,在彈出
11、的對(duì)話框中進(jìn)行正確的選擇,之后按下”Rebuild”按鈕,稍等片刻即可生成最終的.sys驅(qū)動(dòng)程序。結(jié)束語(yǔ)WDM作為一種設(shè)備驅(qū)動(dòng)程序模型,自Windows2000以來(lái)已成為一種統(tǒng)一的模式。同時(shí)USB技術(shù)得到廣泛應(yīng)用,進(jìn)行USB設(shè)備驅(qū)動(dòng)程序的開(kāi)發(fā)成為必不可少的技術(shù)環(huán)節(jié),而使用DriverWorks開(kāi)發(fā)USB設(shè)備驅(qū)動(dòng)程序,簡(jiǎn)單方便。文件過(guò)濾驅(qū)動(dòng)程序開(kāi)發(fā)環(huán)境配置許多驅(qū)動(dòng)程序開(kāi)發(fā)都將環(huán)境架設(shè)在VC上,可是偶的本本上好不容易安了個(gè)vs2008,舍不得刪啊,因此毅然選擇vs2008,拋棄vc。要開(kāi)發(fā)驅(qū)動(dòng),DDK是少不了的,但是現(xiàn)在操作系統(tǒng)日新月異,老DDK是不能適應(yīng)國(guó)家下一個(gè)“五十年計(jì)劃”滴于是,我又一次毅
12、然決然選擇WDK代替DDK,呵呵,還是跟著微軟大蝦們的足跡,往前看吧先弄明白windows驅(qū)動(dòng)的前因后果吧,這是選擇開(kāi)發(fā)環(huán)境和開(kāi)發(fā)過(guò)程的基礎(chǔ)首先,開(kāi)發(fā)下的驅(qū)動(dòng)程序,需要一個(gè)專門的開(kāi)發(fā)包,就像開(kāi)發(fā)程序,需要一個(gè)D開(kāi)發(fā)應(yīng)用程序,需要,現(xiàn)在開(kāi)發(fā)下的驅(qū)動(dòng)程序,我們們需要一個(gè)。開(kāi)發(fā)驅(qū)動(dòng)的工具包()和()的區(qū)別:下,驅(qū)動(dòng)模型為:,相關(guān)資料可以看編程高手箴言的前幾個(gè)章節(jié),里面有很詳細(xì)的介紹,雖然這個(gè)東西已經(jīng)過(guò)時(shí),但大概看看還是會(huì)增長(zhǎng)見(jiàn)識(shí)的。下,采用驅(qū)動(dòng)模型(iV開(kāi)發(fā)的驅(qū)動(dòng)開(kāi)發(fā)包為:。及以后版本,采用了驅(qū)動(dòng)模型(),對(duì)應(yīng)的開(kāi)發(fā)包:W,。其實(shí)可以看做是的升級(jí)版本,現(xiàn)在一般的是包含以前相關(guān)的功能,現(xiàn)在下也可以用開(kāi)
13、發(fā)驅(qū)動(dòng),能編譯出的各種驅(qū)動(dòng)。驅(qū)動(dòng)文件擴(kuò)展名為:,和驅(qū)動(dòng)文件擴(kuò)展名為:面將整個(gè)環(huán)境搭建過(guò)程描述如下:W?W?W?W?W?W?W?W?W?W?W?W?W?W?W?W?W?W?W?W?W?W?W?W?W?W?W?W?W?W?W?W?W*|*|*|*|*|*|*W?w?W?W?W?W?W?W?W?W?W?W?W?W?W?W?W?W?WC*|*|*|*|*|*|*|*|*|*|*|*|*|*|耳v耳?斗*|*|*|*選項(xiàng)”彈出”選項(xiàng)”窗口,選擇項(xiàng)目和解決方案”-”VC+目錄,顯示以下內(nèi)容的目錄可執(zhí)行文件中添加C:WinDDKC:WinDDK7600.16385.0binx86x86C:WinDDK760
14、0.16385.0binx86C:WinDDK7600.16385.0toolspfdbinbinx86包含文件中添加C:WinDDK7600.16385.0incC:WinDDK7600.16385.0incapiC:WinDDK7600.16385.0inccrtC:WinDDK7600.16385.0incddk引用文件中添加C:WinDDK7600.16385.0libwxpi386庫(kù)文件中添加C:WinDDK7600.16385.0libC:WinDDK7600.16385.0libwxpi386源文件中添加C:WinDDK7600.16385.0src以上添加完畢直接按確定關(guān)閉選項(xiàng)
15、對(duì)話框如果編譯出現(xiàn)C2144錯(cuò)誤的時(shí)候,請(qǐng)把以上添加的文件向前移動(dòng)(就是點(diǎn)擊選項(xiàng)對(duì)話框中的向上的箭頭按鈕)2、設(shè)置虛擬機(jī)的可調(diào)模式:1)打開(kāi)boot文件的方式可以選用以下兩種:1我的電腦f屬性f高級(jí)f“啟動(dòng)和故障恢復(fù)編輯。2運(yùn)行f“msconfigfboot.iniboot.ini的修改如下:在虛擬機(jī)中,編輯boot.ini文件,在末尾添加一行:multi(0)disk(0)rdisk(0)partition(1)NDOWS=Microsoftindowsrofess/noexecute=optin/fastdetect/debug/debugport=com1/baudrate=1152)保
16、存后poweroff虛擬系統(tǒng)。在左邊欄中選擇ditvirtalmachinesettingsadderialortutput,t此name現(xiàn)三個(gè)文本框,依次填入:.picom_l”和“Thisendistheserver.”,第個(gè)修改為“Theotherendisanapplication.”)保存。配置真實(shí)機(jī)。創(chuàng)建windbg.exe在桌面的快捷方式,屬性目標(biāo)-C:WIwNinDdbDg.Kexe“.-.b-kcom:port=.pipecom_1,baud=115200,pipe)可以選擇配置真實(shí)機(jī)串口:我的電腦管理設(shè)備管理器端口comcoml屬性端口設(shè)置每位秒數(shù)11啟動(dòng)windbg.ex
17、e在filesmbolfilepa添加微軟官方符號(hào)表download以及你自己工程中生成ss文件的目錄(就是你要編譯的驅(qū)動(dòng)服務(wù)文件的目錄,需要事先生成要調(diào)試的驅(qū)動(dòng)服務(wù).ss文件,并將.ss文件拷貝到虛擬機(jī)中),我的是proectsTestsfirstobch_wxp_xi兩路徑用分號(hào)分隔。勾選reload)啟動(dòng)虛擬機(jī),將s文件提供的服務(wù)用srvinstw.exe安裝到虛擬機(jī)中。安裝中,選手動(dòng),T驅(qū)動(dòng)不用填重啟虛擬機(jī),選擇調(diào)試模式,啟動(dòng)真實(shí)機(jī)桌面設(shè)置過(guò)參數(shù)的windbg快捷方式,此時(shí)如果出現(xiàn)inDbg:6.1oldnotstartkerneldebuggingusingcom:pipe,port=.pipevpcdebug,resets=10parame
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 公園椅合同范例
- 和老公立合同范本
- 農(nóng)業(yè)工具維修合同范本
- 縣城出租車轉(zhuǎn)讓合同范本
- 商鋪?zhàn)赓U租合同范本
- 在小學(xué)綜合實(shí)踐活動(dòng)課程中提高學(xué)生學(xué)習(xí)主動(dòng)性的策略探究
- 小學(xué)語(yǔ)文口語(yǔ)交際教學(xué)探究
- 農(nóng)村水田售賣合同范本
- 原煤低硫銷售合同范例
- 雙方共同承擔(dān)責(zé)任合同范例
- GB/T 41326-2022六氟丁二烯
- 注塑模具分類及結(jié)構(gòu)組成
- GB/T 14002-2008勞動(dòng)定員定額術(shù)語(yǔ)
- 盆腔炎性疾病后遺癥-病因病機(jī)-(中醫(yī))
- 沁園春雪拼音版
- 傳染病防治法培訓(xùn)講義課件
- 法律方法階梯實(shí)用版課件
- KET詞匯表(英文中文完整版)
- 實(shí)驗(yàn) 探究彈簧彈力與形變量的關(guān)系2022-2023學(xué)年高一物理(人教版2019必修第一冊(cè))
- 《三位數(shù)的加減法》單元分析
- 鋼管樁的計(jì)算公式
評(píng)論
0/150
提交評(píng)論