2023年全國碩士研究生考試考研英語一試題真題(含答案詳解+作文范文)_第1頁
已閱讀1頁,還剩3頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、WindowsWindows20002000驅(qū)動程序的設(shè)計驅(qū)動程序的設(shè)計200332512:41:59VCPROGRAM譚章熹閱讀次數(shù):135961.簡介:Windows2000原名WindowsNT5.0是繼WindowsNT4.0的新一代操作系統(tǒng),它不但繼承了WindowsNT4.0的種種優(yōu)點,而且在技術(shù)上又有了許多的突破,其中一項就是對驅(qū)動程序結(jié)構(gòu)的變化,即引入了全新的WDM(Win32DriverModel)的驅(qū)動程序構(gòu)架。說是

2、新技術(shù),其實早在1997年Microsoft就提出了該項技術(shù)并在Windows98中得到了充分的應(yīng)用,換句話說,Windows98也支持WDM。這樣WDM就成為了一個跨平臺的驅(qū)動程序模型,不僅如此WDM驅(qū)動程序還可以在不修改源代碼的情況下經(jīng)過重新編譯后在非Intel平臺上運行,可以不夸張的講WDM算得上是21世紀的驅(qū)動程序構(gòu)架。2WDM的工作原理:WDM是在NT4.0驅(qū)動程序結(jié)構(gòu)上發(fā)展起來的,所以它與NT4.0的驅(qū)動程序極為相似,但是它

3、卻有了本質(zhì)上的提高,比如它支持USB、IEEE1394、ACPI等全新的硬件標(biāo)準(zhǔn)。雖然Windows98與Windows2000都支持WDM,可是并不意味著Windows98下的VxD可以在Windows2000下運行,而NT下的VDD卻可以在Windows98下運行。不過原先準(zhǔn)備在兩個平臺上同時運行需要編寫兩個截然不同的驅(qū)動程序,而現(xiàn)在只需要編寫一個WDM驅(qū)動程序就可以了。同NT4.0驅(qū)動程序一樣,WDM驅(qū)動程序也是分層的,即不同層上

4、的驅(qū)動程序有著不同的優(yōu)先權(quán),而Windows9x下的VxD則沒有此結(jié)構(gòu)。另外,WDM還引入了功能設(shè)備對象FDO(functionaldeviceobject)與物理設(shè)備對象PDO(physicaldeviceobject)兩個新概念來描述硬件,一個PDO代表一個真實硬件,在驅(qū)動程序看來則是一個FDO,見圖1。另外值得注意的是,一個硬件只允許有一個PDO,但卻可以擁有多個FDO,而在驅(qū)動程序中我們不是直接操作硬件而是操作相應(yīng)的PDO與FD

5、O。在Ring3與Ring0通訊方面,操作系統(tǒng)為每一個用戶請求打包成一個IRP(IORequestPacket)結(jié)構(gòu),將其發(fā)送至驅(qū)動程序并通過識別IRP中的PDO來識別是發(fā)送給哪一個設(shè)備的。另外,在驅(qū)動程序的加載方面WDM既不靠驅(qū)動程序名稱也不靠一個具有某種特殊意義的ID,而是依靠一個128位的GUID來識別驅(qū)動程序(Windows下許多東西都是靠此進行識別的)。3具體實現(xiàn):同許多應(yīng)用程序一樣,WDM驅(qū)動程序是PE格式的,但是它卻沒有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對所獲得的接口進行枚舉以獲得接口數(shù)據(jù),接著連續(xù)兩次調(diào)用SetupDiGetDeviceInterfaceDetail獲得接口詳細信息,其中包括調(diào)用CreateFile所需的一個型為.00

9、00000000000004#3d93c5c0008511d1821e0080c88327ab的字符串,最后調(diào)用方法和VxD的調(diào)用大體相同這里就不贅述了。不過由于使用了Setupapi.dll中的API所以還需要使用SetupDiDestroyDeviceInfoList來釋放所申請的資源。4幾點說明:由于WDM是跨平臺和跨操作系統(tǒng)的的驅(qū)動程序模型,所以在編寫時一定不要使用匯編。另外,在編寫時還應(yīng)注意對IRP_MJ_PNP消息的響應(yīng)以及

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論