資源描述:
《畢業(yè)設(shè)計(jì)(論文)usb接口通信(驅(qū)動(dòng))的設(shè)計(jì)與實(shí)現(xiàn).doc》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫(kù)。
1、引言WDM是“Windows驅(qū)動(dòng)程序模型”的簡(jiǎn)稱,即“WindowsDriverModel”。實(shí)際上它是一系列集成在操作系統(tǒng)之中的常規(guī)系統(tǒng)服務(wù)集,用于簡(jiǎn)化硬件驅(qū)動(dòng)程序的編寫,并保證它們?cè)赪indows98/Me/2000中的二進(jìn)制兼容,WDM(WindowsDriverModel)模型是從WinNT3.51和WinNT4的內(nèi)核模式設(shè)備驅(qū)動(dòng)程序發(fā)展而來(lái)的。WDM主要的變化是增加了對(duì)即插即用、電源管理、WindowsManagementInterface(WMI)、設(shè)備接口的支持。WDM模型的主要目標(biāo),是實(shí)現(xiàn)能夠跨平臺(tái)使用
2、、更安全、更靈活、編制更簡(jiǎn)單的Windows設(shè)備驅(qū)動(dòng)程序。WDM采用了“基于對(duì)象”的技術(shù),建立了一個(gè)分層的驅(qū)動(dòng)程序結(jié)構(gòu)。WDM首先在Windows98中實(shí)現(xiàn),在Windows2000中得到了進(jìn)一步的完善,并在后續(xù)開發(fā)的Windows操作系統(tǒng)中都將存在,比如WindowsMe和WindowsXP。微軟在通過(guò)WDM模型的引入,希望減輕設(shè)備驅(qū)動(dòng)程序的開發(fā)難度和周期,逐漸規(guī)范設(shè)備驅(qū)動(dòng)程序的開發(fā),應(yīng)該說(shuō),WDM將成為以后設(shè)備驅(qū)動(dòng)程序的主流。USB技術(shù)的全稱是通用串行總線,是英文UniversalSerialBus的縮寫。它是一種
3、應(yīng)用在PC領(lǐng)域的新型接口技術(shù),雖然USB2.0已經(jīng)被廣泛應(yīng)用,但是初始的Windows2000是支持USB1.0協(xié)議的,如果希望支持USB2.0協(xié)議,需要在微軟網(wǎng)站上下載升級(jí)包。實(shí)際上,對(duì)于鍵盤或者鼠標(biāo)來(lái)說(shuō),傳輸?shù)乃俣确浅P?,使用USB1.0或者是USB2.0的區(qū)別并不大。閃存盤之類的存儲(chǔ)設(shè)備,則需要重視傳輸速度。USB1.0版本主要應(yīng)用在鼠標(biāo),鍵盤等HID設(shè)備上,這就是本驅(qū)動(dòng)程序中引用的頭文件版本是USB1.0的原因。本畢業(yè)設(shè)計(jì)的目的是希望對(duì)Windows2000操作系統(tǒng)體系結(jié)構(gòu)和驅(qū)動(dòng)程序開發(fā)以及調(diào)試等方面的問(wèn)題有一
4、個(gè)比較深入的了解,對(duì)USB協(xié)議和USB體系有做一個(gè)比較深入的了解。并開發(fā)出一個(gè)USB鍵盤驅(qū)動(dòng)。這個(gè)USB鍵盤驅(qū)動(dòng)程序應(yīng)當(dāng)可以替代系統(tǒng)原有的鍵盤驅(qū)動(dòng)程序,并可以正常工作。本論文設(shè)計(jì)的驅(qū)動(dòng)程序在Windows2000下運(yùn)行,開發(fā)環(huán)境為VC6.0和DDK2000。1WDM驅(qū)動(dòng)程序模型概述驅(qū)動(dòng)程序在任何操作系統(tǒng)下都和系統(tǒng)內(nèi)核有著密切的關(guān)系。設(shè)備驅(qū)動(dòng)程序是一個(gè)包含了許多操作系統(tǒng)可調(diào)用例程的容器,這句WalterOney曾說(shuō)過(guò)的話,抽象的描述了設(shè)備驅(qū)動(dòng)程序的本質(zhì)。1.1Windows2000概述圖1-1中概括了Windows200
5、系統(tǒng)中的組件,Windows2000操作系統(tǒng)是由不同層次的模塊共同組成的。該圖著重描述了驅(qū)動(dòng)程序開發(fā)者所關(guān)心的特征。工作在Windows2000操作系統(tǒng)平臺(tái)上的軟件要么執(zhí)行在用戶模式中,要么執(zhí)行在內(nèi)核模式中。當(dāng)用戶模式程序需要讀取設(shè)備數(shù)據(jù)時(shí),就調(diào)用Win32API函數(shù),如ReadFile.Win32子系統(tǒng)模塊通過(guò)調(diào)用平臺(tái)相關(guān)的系統(tǒng)服務(wù)接口實(shí)現(xiàn)API,而平臺(tái)相關(guān)的系統(tǒng)服務(wù)將調(diào)用內(nèi)核模式支持例程。在ReadFile調(diào)用中,調(diào)用首先到達(dá)系統(tǒng)DLL(NTDLL.DLL)中的一個(gè)入口點(diǎn),NtReadFile函數(shù)。然后這個(gè)用戶模式
6、的NtReadFile函數(shù)接著調(diào)用系統(tǒng)服務(wù)接口,最后由系統(tǒng)服務(wù)接口調(diào)用內(nèi)核模式中的服務(wù)例程,該例程同樣名為NtReadFile。應(yīng)用程序Win32子系統(tǒng)設(shè)備驅(qū)動(dòng)硬件抽象層硬件IO管理器用戶模式內(nèi)核模式Win32API調(diào)用系統(tǒng)服務(wù)接口傳遞IRP給驅(qū)動(dòng)程序派遣函數(shù)HAL調(diào)用平臺(tái)相關(guān)操作圖1-1Windows組件模型系統(tǒng)中還有許多與NtReadFile相似的服務(wù)例程;它們同樣運(yùn)行在內(nèi)核模式中,為應(yīng)用程序請(qǐng)求提供服務(wù),并以某種方式與設(shè)備交互。這些服務(wù)例程首先檢查從用戶態(tài)傳遞給它們的參數(shù)以保護(hù)系統(tǒng)安全或防止用戶態(tài)程序非法存取數(shù)據(jù)
7、,然后創(chuàng)建一個(gè)稱為“I/0請(qǐng)求包(IRP)”的數(shù)據(jù)結(jié)構(gòu),并把這個(gè)數(shù)據(jù)結(jié)構(gòu)送到某個(gè)驅(qū)動(dòng)程序的入口點(diǎn)。驅(qū)動(dòng)程序完成一個(gè)I/0操作后,通過(guò)調(diào)用一個(gè)特殊的內(nèi)核模式服務(wù)例程來(lái)完成該IRP。完成操作是處理IRP的最后動(dòng)作,它使等待的應(yīng)用程序恢復(fù)運(yùn)行。1.2Windows2000中的驅(qū)動(dòng)程序類型虛擬設(shè)備驅(qū)動(dòng)程序(VDD)內(nèi)核模式驅(qū)動(dòng)程序文件系統(tǒng)驅(qū)動(dòng)程序遺留設(shè)備驅(qū)動(dòng)程序PnP驅(qū)動(dòng)程序顯示驅(qū)動(dòng)程序WDM驅(qū)動(dòng)程序類驅(qū)動(dòng)程序微型(mini)驅(qū)動(dòng)程序圖1-2Windows2000中的設(shè)備驅(qū)動(dòng)程序種類Windows2000系統(tǒng)可以使用多種驅(qū)動(dòng)程
8、序,圖1-2顯示了其中幾種?!ぬ摂M設(shè)備驅(qū)動(dòng)程序(VDD)可以使DOS應(yīng)用程序訪問(wèn)x86平臺(tái)上的硬件。VDD通過(guò)屏蔽I/O權(quán)限掩碼來(lái)捕獲端口存取操作,它基本上是模擬硬件操作,這對(duì)于那些直接對(duì)裸機(jī)硬件編程的應(yīng)用程序特別有用。盡管這種驅(qū)動(dòng)程序在Windows98和Windows2000中共享一個(gè)名稱并且有相同的功能,但實(shí)際上它們的工作方