版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、WindowsWindows20002000驅(qū)動(dòng)程序的設(shè)計(jì)驅(qū)動(dòng)程序的設(shè)計(jì)200332512:41:59VCPROGRAM譚章熹閱讀次數(shù):135961.簡(jiǎn)介:Windows2000原名WindowsNT5.0是繼WindowsNT4.0的新一代操作系統(tǒng),它不但繼承了WindowsNT4.0的種種優(yōu)點(diǎn),而且在技術(shù)上又有了許多的突破,其中一項(xiàng)就是對(duì)驅(qū)動(dòng)程序結(jié)構(gòu)的變化,即引入了全新的WDM(Win32DriverModel)的驅(qū)動(dòng)程序構(gòu)架。說(shuō)是
2、新技術(shù),其實(shí)早在1997年Microsoft就提出了該項(xiàng)技術(shù)并在Windows98中得到了充分的應(yīng)用,換句話說(shuō),Windows98也支持WDM。這樣WDM就成為了一個(gè)跨平臺(tái)的驅(qū)動(dòng)程序模型,不僅如此WDM驅(qū)動(dòng)程序還可以在不修改源代碼的情況下經(jīng)過(guò)重新編譯后在非Intel平臺(tái)上運(yùn)行,可以不夸張的講WDM算得上是21世紀(jì)的驅(qū)動(dòng)程序構(gòu)架。2WDM的工作原理:WDM是在NT4.0驅(qū)動(dòng)程序結(jié)構(gòu)上發(fā)展起來(lái)的,所以它與NT4.0的驅(qū)動(dòng)程序極為相似,但是它
3、卻有了本質(zhì)上的提高,比如它支持USB、IEEE1394、ACPI等全新的硬件標(biāo)準(zhǔn)。雖然Windows98與Windows2000都支持WDM,可是并不意味著Windows98下的VxD可以在Windows2000下運(yùn)行,而NT下的VDD卻可以在Windows98下運(yùn)行。不過(guò)原先準(zhǔn)備在兩個(gè)平臺(tái)上同時(shí)運(yùn)行需要編寫兩個(gè)截然不同的驅(qū)動(dòng)程序,而現(xiàn)在只需要編寫一個(gè)WDM驅(qū)動(dòng)程序就可以了。同NT4.0驅(qū)動(dòng)程序一樣,WDM驅(qū)動(dòng)程序也是分層的,即不同層上
4、的驅(qū)動(dòng)程序有著不同的優(yōu)先權(quán),而Windows9x下的VxD則沒(méi)有此結(jié)構(gòu)。另外,WDM還引入了功能設(shè)備對(duì)象FDO(functionaldeviceobject)與物理設(shè)備對(duì)象PDO(physicaldeviceobject)兩個(gè)新概念來(lái)描述硬件,一個(gè)PDO代表一個(gè)真實(shí)硬件,在驅(qū)動(dòng)程序看來(lái)則是一個(gè)FDO,見(jiàn)圖1。另外值得注意的是,一個(gè)硬件只允許有一個(gè)PDO,但卻可以擁有多個(gè)FDO,而在驅(qū)動(dòng)程序中我們不是直接操作硬件而是操作相應(yīng)的PDO與FD
5、O。在Ring3與Ring0通訊方面,操作系統(tǒng)為每一個(gè)用戶請(qǐng)求打包成一個(gè)IRP(IORequestPacket)結(jié)構(gòu),將其發(fā)送至驅(qū)動(dòng)程序并通過(guò)識(shí)別IRP中的PDO來(lái)識(shí)別是發(fā)送給哪一個(gè)設(shè)備的。另外,在驅(qū)動(dòng)程序的加載方面WDM既不靠驅(qū)動(dòng)程序名稱也不靠一個(gè)具有某種特殊意義的ID,而是依靠一個(gè)128位的GUID來(lái)識(shí)別驅(qū)動(dòng)程序(Windows下許多東西都是靠此進(jìn)行識(shí)別的)。3具體實(shí)現(xiàn):同許多應(yīng)用程序一樣,WDM驅(qū)動(dòng)程序是PE格式的,但是它卻沒(méi)有W
6、inMain或main這樣的入口,取而代之的是DriverEntry:NTSTATUSDriverEntry(INPDRIVER_OBJECTDriverObject不同于前面的PDOINPUNICODE_STRINGRegistryPath)OutputLength=IrpStackParameters.DeviceIoControl.OutputBufferLength取輸出緩沖區(qū)大小switch(ControlCode)caseH
7、ELLOWDM_IOCTL_HELLO:DbgPrint(“HellofromWDM.n“)向調(diào)試器輸出字符串status=STATUS_SUCCESS置返回值breakdefault:status=STATUS_INVALID_DEVICE_REQUEST輸入的控制碼不支持returnCompleteRequest(Irpstatus0)調(diào)用CompleteRequest通知操作系統(tǒng)完成IRP操作在客戶端方面,先調(diào)用Setupapi.
8、dll中的SetupDiGetClassDevs并用上面提到的128位GUID建立Ring0與Ring3接口:HDEVINFOinfo=SetupDiGetClassDevs((LPGUID)然后使用SetupDiEnumDeviceInterfaces對(duì)所獲得的接口進(jìn)行枚舉以獲得接口數(shù)據(jù),接著連續(xù)兩次調(diào)用SetupDiGetDeviceInterfaceDetail獲得接口詳細(xì)信息,其中包括調(diào)用CreateFile所需的一個(gè)型為.00
9、00000000000004#3d93c5c0008511d1821e0080c88327ab的字符串,最后調(diào)用方法和VxD的調(diào)用大體相同這里就不贅述了。不過(guò)由于使用了Setupapi.dll中的API所以還需要使用SetupDiDestroyDeviceInfoList來(lái)釋放所申請(qǐng)的資源。4幾點(diǎn)說(shuō)明:由于WDM是跨平臺(tái)和跨操作系統(tǒng)的的驅(qū)動(dòng)程序模型,所以在編寫時(shí)一定不要使用匯編。另外,在編寫時(shí)還應(yīng)注意對(duì)IRP_MJ_PNP消息的響應(yīng)以及
溫馨提示
- 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ù)僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- windows2000驅(qū)動(dòng)程序設(shè)計(jì)指南前言
- Windows2000環(huán)境下設(shè)備驅(qū)動(dòng)程序的研究與實(shí)現(xiàn).pdf
- 基于WINDOWS2000內(nèi)核驅(qū)動(dòng)程序的實(shí)時(shí)控制器的研究與應(yīng)用.pdf
- 通過(guò) windows 驅(qū)動(dòng)程序框架編寫驅(qū)動(dòng)程序
- Windows 2000 WDM驅(qū)動(dòng)程序開發(fā)技術(shù)的研究.pdf
- 在Windows 2000系統(tǒng)下WDM驅(qū)動(dòng)程序的探究與實(shí)現(xiàn).pdf
- Windows 2000環(huán)境下無(wú)線網(wǎng)卡驅(qū)動(dòng)程序及網(wǎng)絡(luò)隧道驅(qū)動(dòng)程序?qū)崿F(xiàn)的研究.pdf
- windows2000域服務(wù)器
- windows2000系統(tǒng)內(nèi)核剖析——termsrv.exe終端服務(wù)程序
- 基于windows2000的實(shí)時(shí)擴(kuò)展研究
- win2000驅(qū)動(dòng)程序設(shè)計(jì)指南--前言
- Windows XP下打印機(jī)驅(qū)動(dòng)程序的分析與設(shè)計(jì).pdf
- Windows98下設(shè)備驅(qū)動(dòng)程序的編寫.pdf
- 基于Windows CE的存儲(chǔ)卡驅(qū)動(dòng)程序的設(shè)計(jì)與實(shí)現(xiàn).pdf
- Windows CE驅(qū)動(dòng)程序設(shè)計(jì)及測(cè)試技術(shù)研究.pdf
- Windows下三類典型驅(qū)動(dòng)程序的設(shè)計(jì)與實(shí)現(xiàn).pdf
- Windows環(huán)境下設(shè)備驅(qū)動(dòng)程序的研究與開發(fā).pdf
- Windows XP平臺(tái)下打印機(jī)驅(qū)動(dòng)程序分析與設(shè)計(jì).pdf
- 設(shè)備驅(qū)動(dòng)程序
- 基于WIN2000下的WDM驅(qū)動(dòng)程序探究.pdf
評(píng)論
0/150
提交評(píng)論