国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于WinDriver的USB驅(qū)動(dòng)程序開(kāi)發(fā)

2015-06-24 08:37楊新友鄒嵐鐘建軍
電腦知識(shí)與技術(shù) 2015年11期
關(guān)鍵詞:驅(qū)動(dòng)程序

楊新友 鄒嵐 鐘建軍

摘要:隨著計(jì)算機(jī)技術(shù)的更新?lián)Q代,USB接口已經(jīng)成為個(gè)人計(jì)算機(jī)上最重要的外部設(shè)備擴(kuò)展接口,但Windows操作系統(tǒng)中,通常采用驅(qū)動(dòng)程序作橋梁。文章對(duì)USB驅(qū)動(dòng)程序開(kāi)發(fā)的方法進(jìn)行了對(duì)比分析,得出各種方法的優(yōu)缺點(diǎn)和適應(yīng)情況。重點(diǎn)對(duì)基于WinDriver的USB驅(qū)動(dòng)程序開(kāi)發(fā)進(jìn)行了深入研究,分析了WinDriver開(kāi)發(fā)設(shè)備驅(qū)動(dòng)程序時(shí)的體系結(jié)構(gòu),給出了基于WinDriver的USB驅(qū)動(dòng)程序的開(kāi)發(fā)步驟和具體工作流程。

關(guān)鍵詞:WinDriver;USB;驅(qū)動(dòng)程序;回調(diào)函數(shù)

中圖分類號(hào):TP311.11 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1009-3044(2015)11-0231-02

The Exploitation of USB Drivers Based on WinDriver

YANG Xin-you1,ZOU Lan 2,ZHONG Jian-jun3

(1.Unit 92771 of PLA, Qingdao 266405, China; 2.College of Software Technology, Qingdao University, Qingdao 266061, China; 3.Unit 92038 of PLA, Qingdao 266405, China)

Abstract: USB Interface has become the most important peripheral equipment extended interface of personal computer with the development of computer technology. But in Windows operating system, cannot operate on hardware interface directly, so must use drivers as bridge. The comparison analysis of USB driver development methods is given in the paper, obtaining advantages, disadvantages and adaptation situation of different method. USB drivers based on WinDriver further research. The architecture of equipment drivers using WinDriver is analysised, and the development step and working flow of USB drivers based on WinDriver is given in the paper.

Key words: WinDriver; USB; drivers; call-back function.

1 概述

Windows操作系統(tǒng)通常采用驅(qū)動(dòng)程序作為橋梁來(lái)對(duì)硬件進(jìn)行操作。主機(jī)程序和和計(jì)算機(jī)的硬件資源通過(guò)驅(qū)動(dòng)程序來(lái)進(jìn)行通信和交換數(shù)據(jù)。因此對(duì)USB設(shè)備開(kāi)發(fā)需要進(jìn)行USB驅(qū)動(dòng)程序的設(shè)計(jì),來(lái)實(shí)現(xiàn)主機(jī)程序?qū)ν獠縐SB設(shè)備的控制和數(shù)據(jù)傳輸[1]。

目前,主流驅(qū)動(dòng)程序開(kāi)發(fā)方式有3種:微軟公司的DDK(Driver Development Kit,驅(qū)動(dòng)開(kāi)發(fā)工具包)工具、Compuware公司的Driver Studio工具和KRFTECH公司的WinDriver工具。其中,WinDriver軟件最為簡(jiǎn)單,可以快速創(chuàng)建驅(qū)動(dòng)程序。所以本系統(tǒng)采用WinDriver軟件開(kāi)發(fā)USB設(shè)備驅(qū)動(dòng)程序[2]。

本文結(jié)構(gòu)安排如下:第2節(jié)對(duì)使用WinDriver開(kāi)發(fā)設(shè)備驅(qū)動(dòng)程序時(shí)的體系結(jié)構(gòu)進(jìn)行了詳細(xì)分析;第3節(jié)給出了USB驅(qū)動(dòng)程序開(kāi)發(fā)的步驟和具體實(shí)現(xiàn);第4節(jié)對(duì)全文進(jìn)行了總結(jié)。

2 WinDriver體系結(jié)構(gòu)

圖1 WinDriver體系結(jié)構(gòu)圖

考慮到WinDriver工具能夠自動(dòng)探測(cè)硬件并產(chǎn)生從應(yīng)用程序訪問(wèn)硬件的驅(qū)動(dòng),很大程度上降低開(kāi)發(fā)驅(qū)動(dòng)程序和應(yīng)用程序的難度。所以本文使用WinDriver工具對(duì)USB驅(qū)動(dòng)程序的進(jìn)行開(kāi)發(fā),實(shí)現(xiàn)主機(jī)程序?qū)ν獠縐SB設(shè)備的控制和數(shù)據(jù)傳輸。

圖1是使用WinDriver開(kāi)發(fā)設(shè)備驅(qū)動(dòng)程序時(shí)的體系結(jié)構(gòu)圖。通過(guò)應(yīng)用程序訪問(wèn)WinDriver用戶態(tài)函數(shù),再訪問(wèn)WinDriver內(nèi)核,從而實(shí)現(xiàn)對(duì)硬件的訪問(wèn) [3]。

3 USB驅(qū)動(dòng)開(kāi)發(fā)

應(yīng)用程序通過(guò)設(shè)備驅(qū)動(dòng)程序這一統(tǒng)一的軟件接口訪問(wèn)硬件設(shè)備,可以不用具體考慮設(shè)備通信所需要的協(xié)議細(xì)節(jié)。目前,主流驅(qū)動(dòng)程序開(kāi)發(fā)方式有3種:微軟公司的DDK(Driver Development Kit,驅(qū)動(dòng)開(kāi)發(fā)工具包)工具、Compuware公司的Driver Studio工具和KRFTECH公司的WinDriver工具。采用DDK方法開(kāi)發(fā)需要深入掌握操作系統(tǒng)內(nèi)核工作方式,因此開(kāi)發(fā)周期很長(zhǎng)。Driver Studio對(duì)DDK進(jìn)行了簡(jiǎn)化,在開(kāi)發(fā)向?qū)У幕A(chǔ)上進(jìn)行設(shè)計(jì),可以有效縮短開(kāi)發(fā)周期。而采用WinDriver開(kāi)發(fā)工具包能夠有效降低開(kāi)發(fā)驅(qū)動(dòng)程序和應(yīng)用程序的工作量。WinDriver開(kāi)發(fā)方式包括兩部分:向?qū)?、代碼產(chǎn)生工具,通過(guò)自動(dòng)檢測(cè)硬件,再生成應(yīng)用程序訪問(wèn)硬件的驅(qū)動(dòng)。本文選用WinDriver方式開(kāi)發(fā)USB設(shè)備驅(qū)動(dòng)程序。

WinDriver是Jungo公司為驅(qū)動(dòng)程序開(kāi)發(fā)提供的一個(gè)工具,它把PC硬件系統(tǒng)的驅(qū)動(dòng)程序開(kāi)發(fā)和調(diào)試進(jìn)行了集成和封裝,不涉及底層的操作,所要做的工作僅僅是保證設(shè)備的硬件和相應(yīng)固件設(shè)計(jì)正確,然后進(jìn)行應(yīng)用程序的設(shè)計(jì)[4]。WinDriver開(kāi)發(fā)的驅(qū)動(dòng)程序適用性廣,支持PCM-CIA/PCI/ISA/ISA Pnp/CompactPCI /EISA和USB等總線連接方式,適合于Linux,VxWorks,WindowsNT/2000/XP/CE/7, Solaris等操作系統(tǒng)。

對(duì)于開(kāi)發(fā)者來(lái)說(shuō),通過(guò)采用windrvr.sys或windrvr.vxd文件操作指令和數(shù)據(jù)來(lái)驅(qū)動(dòng)硬件,從而實(shí)現(xiàn)WinDriver開(kāi)發(fā)設(shè)備驅(qū)動(dòng)程序, 因此,開(kāi)發(fā)者不需要擁有系統(tǒng)級(jí)的編程知識(shí)和熟悉操作系統(tǒng)內(nèi)核運(yùn)行方式[5, 6]。

圖2 USB設(shè)備驅(qū)動(dòng)程序工作流程圖

3.1 開(kāi)發(fā)步驟

使用WinDriver USB驅(qū)動(dòng)訪問(wèn)硬件時(shí),應(yīng)用程序通過(guò)調(diào)用WinDriver USB API函數(shù),來(lái)訪問(wèn)WinDriver內(nèi)核模塊(windrvr6.sys),從而訪問(wèn)USB設(shè)備?;赪inDriver開(kāi)發(fā)的訪問(wèn)硬件USB驅(qū)動(dòng)程序和應(yīng)用程序的流程如下:

1)打開(kāi)DirverwiZard,探測(cè)硬件資源;

2)使用DirverwiZard自動(dòng)生成USB驅(qū)動(dòng)代碼;

3)在應(yīng)用程序中調(diào)用生成的函數(shù)。

3.2 具體開(kāi)發(fā)

本系統(tǒng)USB驅(qū)動(dòng)程序是在DirverwiZard產(chǎn)生的設(shè)備驅(qū)動(dòng)代碼的基礎(chǔ)上進(jìn)行開(kāi)發(fā)的,只需從用戶模式應(yīng)用程序中調(diào)用產(chǎn)生的函數(shù)進(jìn)行相應(yīng)的處理就完成了本系統(tǒng)USB驅(qū)動(dòng)程序的開(kāi)發(fā)。

使用DirverwiZard產(chǎn)生的設(shè)備驅(qū)動(dòng)代碼的工作流程如圖2所示,首先在main()中調(diào)用WDU_Init()函數(shù)對(duì)WinDriver進(jìn)行初始化,WinDriver()通知detach()用戶當(dāng)前插入的設(shè)備,這時(shí)detach()發(fā)送Signal Attach(插入設(shè)備消息)給main(),同時(shí)可能通過(guò)回調(diào)函數(shù)attach()返回插入設(shè)備響應(yīng)給WinDriver();此時(shí),當(dāng)有新USB設(shè)備插入時(shí),WinDriver()通知detach()用戶新插入的設(shè)備,這時(shí)detach()發(fā)送Signal Attach (插入設(shè)備消息)給main(),同時(shí)可能通過(guò)回調(diào)函數(shù)attach()1返回插入設(shè)備響應(yīng)給WinDriver();然后,main()調(diào)用WDU_SetInterface()2函數(shù)設(shè)置接口,調(diào)用WDU_Transfer()2進(jìn)行傳輸,同時(shí)main()可能通知WinDriver進(jìn)行其它響應(yīng);當(dāng)有USB設(shè)備拔出時(shí),WinDriver()通知attach()用戶拔出的USB設(shè)備,這時(shí)attach()發(fā)送Signal Detach(拔出設(shè)備消息)給main(),同時(shí)可能通過(guò)回調(diào)函數(shù)device_detach()1返回拔出設(shè)備響應(yīng)給WinDriver();最后main()調(diào)用WDU_Ininit()結(jié)束WinDriver的調(diào)用。

應(yīng)用程序的設(shè)計(jì)可以在WinDriver產(chǎn)生的Debug基礎(chǔ)上進(jìn)行開(kāi)發(fā)而得到。WinDriver的缺點(diǎn)是生成的驅(qū)動(dòng)程序都基于用戶態(tài),意味著在電腦上安裝制作好的驅(qū)動(dòng)程序必須首先設(shè)置WinDriver的驅(qū)動(dòng)環(huán)境,不過(guò)將來(lái)軟件編制完成后和驅(qū)動(dòng)程序一起打包分發(fā)給用戶也不是什么難事。

實(shí)際應(yīng)用情況說(shuō)明,使用WinDriver軟件開(kāi)發(fā)效率高,能有效保證性能指標(biāo),快速地開(kāi)發(fā)出高效高質(zhì)量的驅(qū)動(dòng)程序。

4 結(jié)論

本文對(duì)USB驅(qū)動(dòng)程序開(kāi)發(fā)進(jìn)行了分析研究。通過(guò)采用驅(qū)動(dòng)程序橋梁實(shí)現(xiàn)應(yīng)用程序、計(jì)算機(jī)硬件資源間的通信和數(shù)據(jù)交換。本文選用WinDriver USB v8.02開(kāi)發(fā)設(shè)備驅(qū)動(dòng)程序,實(shí)現(xiàn)了驅(qū)動(dòng)程序的快速創(chuàng)建。

參考文獻(xiàn):

[1] 薛圓圓. USB應(yīng)用開(kāi)發(fā)技術(shù)大全[M]. 北京: 人民郵電出版社, 2007: 91-99.

[2] 周立功. PDIUSBD12 USB固件編程與驅(qū)動(dòng)開(kāi)發(fā)[M]. 北京:北京航空航天大學(xué)出版社,2003:54-55.

[3] 潘偉峰,江渝,劉和平,等.用WinDriver開(kāi)發(fā)ISA總線數(shù)據(jù)采集卡驅(qū)動(dòng)程序[J].電測(cè)與儀表,2003(6):46-47.

[4] 蘭曉紅. Windows下基于WinDriver驅(qū)動(dòng)的USB程序設(shè)計(jì)[J]. 重慶師范大學(xué)學(xué)報(bào):自然科學(xué)版,2004, 21(4): 31-33.

[5] 王澤兵,齊和平. 基于PDIUSBD12芯片的USB接口設(shè)計(jì)[J]. 機(jī)械管理開(kāi)發(fā),2007(3):89-90.

[6] 居錦武.基于Windriver的USB設(shè)備驅(qū)動(dòng)程序的實(shí)現(xiàn)[J].沈陽(yáng)化工學(xué)院學(xué)報(bào),2009,23(3):271-274.

猜你喜歡
驅(qū)動(dòng)程序
更新、備份、還原、卸載驅(qū)動(dòng)程序管理一條龍
避免Windows系統(tǒng)更新反復(fù)安裝顯示驅(qū)動(dòng)
方便直觀改善Windows驅(qū)動(dòng)程序管理
設(shè)備升級(jí)問(wèn)題回退驅(qū)動(dòng)解決
阻止Windows Update更新驅(qū)動(dòng)程序
計(jì)算機(jī)硬件設(shè)備驅(qū)動(dòng)程序分析
基于MPC8280的CPU單元與內(nèi)部總線驅(qū)動(dòng)程序設(shè)計(jì)
基于WDM的 USB鍵盤驅(qū)動(dòng)程序開(kāi)發(fā)*
驅(qū)動(dòng)光盤丟了不用愁 打印一體機(jī)驅(qū)動(dòng)程序下載安裝實(shí)戰(zhàn)體驗(yàn)
妙用鼠標(biāo)驅(qū)動(dòng)