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

下載本文檔

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

文檔簡(jiǎn)介

1、南郵王下邀月熊——Windows驅(qū)動(dòng)開(kāi)發(fā)學(xué)習(xí)之IRP原理以及派遣函數(shù)基本工作流程IORequestPacket(IRP)IRP基本數(shù)據(jù)結(jié)構(gòu):IRP是由IO管理器發(fā)出的,IO管理器是用戶態(tài)與內(nèi)核態(tài)之間的橋梁,當(dāng)用戶態(tài)進(jìn)程發(fā)出IO請(qǐng)求時(shí),IO管理器就捕獲這些請(qǐng)求,將其轉(zhuǎn)換為IRP請(qǐng)求,發(fā)送給驅(qū)動(dòng)程序。IO管理器無(wú)疑是非常重要的,具有核心地位。它負(fù)責(zé)所有IO請(qǐng)求的調(diào)度和管理工作,根據(jù)請(qǐng)求的不同內(nèi)容,選擇相應(yīng)的驅(qū)動(dòng)程序?qū)ο?,設(shè)備對(duì)象,并生成、發(fā)

2、送、釋放各種不同的IRP。整個(gè)IO處理流程是在它的指揮下完成的。一個(gè)IRP是從非分頁(yè)內(nèi)存中分配的可變大小的結(jié)構(gòu),它包括兩部分:IRP首部和輔助請(qǐng)求參數(shù)數(shù)組,如圖1所示。這兩部分都是由IO管理器建立的。圖1IRP簡(jiǎn)單結(jié)構(gòu)圖IRP首部中包含了指向IRP輸入輸出緩沖區(qū)指針、當(dāng)前擁有IRP的驅(qū)動(dòng)指針等。緊接著首部的是一個(gè)IO_STACK_LOCATION結(jié)構(gòu)的數(shù)組。它的大小由設(shè)備棧中的設(shè)備數(shù)確定。IO_STACK_LOCATION結(jié)構(gòu)中保存了一

3、個(gè)IO請(qǐng)求的參數(shù)及代碼、請(qǐng)求當(dāng)前對(duì)應(yīng)的設(shè)備指針、完成函數(shù)指針(IoCompletion)等。IRP運(yùn)行流程:操作系統(tǒng)用設(shè)備對(duì)象(deviceobject)表示物理設(shè)備,每一個(gè)物理設(shè)備都有一個(gè)或多個(gè)設(shè)備對(duì)象與之相關(guān)聯(lián),設(shè)備對(duì)象提供了在設(shè)備上的所有操作。也有一些設(shè)備對(duì)象并不表示物理設(shè)備。一個(gè)唯軟件驅(qū)動(dòng)程序(softwareonlydriver,處理IO請(qǐng)求,但是不把這些請(qǐng)求傳遞給硬件)也必須創(chuàng)建表示它的操作的設(shè)備對(duì)象。設(shè)備常常由多個(gè)設(shè)備對(duì)象

4、所表示,每一個(gè)設(shè)備對(duì)象對(duì)應(yīng)一個(gè)驅(qū)動(dòng)程序來(lái)管理設(shè)備的IO請(qǐng)求。一個(gè)設(shè)備的所有設(shè)備對(duì)象被組織成一個(gè)設(shè)備棧(devicestack)。而且,IO_STACK_LOCATION數(shù)組中的每個(gè)元素和設(shè)備棧中的每個(gè)設(shè)備是一一對(duì)應(yīng)的,一般情況下,只允許層次結(jié)構(gòu)中的每個(gè)設(shè)備對(duì)象訪問(wèn)它自己對(duì)應(yīng)的IO_STACK_LOCATION。無(wú)論何時(shí),一個(gè)請(qǐng)求操作都在一個(gè)設(shè)備上被完成,IO管理器把IRP請(qǐng)求傳遞給設(shè)備棧中頂部設(shè)備的驅(qū)動(dòng)程序(IRP是傳遞給設(shè)備對(duì)象的,通

5、過(guò)設(shè)備對(duì)象的DriverObject成員找到驅(qū)動(dòng)程序)。驅(qū)動(dòng)程序訪問(wèn)它對(duì)應(yīng)的設(shè)備對(duì)象在IRP中IO_STACK_LOCATION數(shù)組中的元素檢查參數(shù),以決定要進(jìn)行什么操作(通過(guò)檢查結(jié)構(gòu)中的MajFunction字段,確定執(zhí)行什么操作及如何南郵王下邀月熊——Windows驅(qū)動(dòng)開(kāi)發(fā)學(xué)習(xí)之IRP原理以及派遣函數(shù)基本工作流程派遣函數(shù):派遣函數(shù)其實(shí)就相當(dāng)于應(yīng)用程序的事件響應(yīng)一樣。派遣函數(shù)就是在入口點(diǎn)下(DriverEntry)的pDriverOb

6、jectMajFunction[......]pDriverObjectMajFunction[IRP_MJ_CREATE]=HelloDDKDispatchRoutine這就叫做派遣函數(shù)IRP類型IRP_MJ_CREATE創(chuàng)建設(shè)備,CreatFile會(huì)產(chǎn)生此IRPIRP_MJ_CLOSE關(guān)閉設(shè)備,CloseHle會(huì)產(chǎn)生此IRPIRP_MJ_CLEANUP清除工作,CloseHle會(huì)產(chǎn)生此IRPIRP_MJ_DEVICE_CONTROL

7、DeviceIoControl函數(shù)會(huì)產(chǎn)生此IRPIRP_MJ_PNP即插即用消息,NT式驅(qū)動(dòng)不支持此種IRP,只有WDM驅(qū)動(dòng)才支持此種IRPIRP_MJ_POWER在操作系統(tǒng)處理電源消息時(shí),產(chǎn)生此IRPIRP_MJ_QUERY_INFMATION獲取文件長(zhǎng)度,GetFileSize會(huì)產(chǎn)生此IRPIRP_MJ_READ讀取設(shè)備內(nèi)容,ReadFile會(huì)產(chǎn)生此IRPIRP_MJ_SET_INFMATION設(shè)置文件長(zhǎng)度,GetFileSize會(huì)

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論