windows文件系統(tǒng)的過(guò)濾器驅(qū)動(dòng)程序設(shè)計(jì)

windows文件系統(tǒng)的過(guò)濾器驅(qū)動(dòng)程序設(shè)計(jì)

ID:19639440

大?。?2.50 KB

頁(yè)數(shù):6頁(yè)

時(shí)間:2018-10-04

windows文件系統(tǒng)的過(guò)濾器驅(qū)動(dòng)程序設(shè)計(jì)_第1頁(yè)
windows文件系統(tǒng)的過(guò)濾器驅(qū)動(dòng)程序設(shè)計(jì)_第2頁(yè)
windows文件系統(tǒng)的過(guò)濾器驅(qū)動(dòng)程序設(shè)計(jì)_第3頁(yè)
windows文件系統(tǒng)的過(guò)濾器驅(qū)動(dòng)程序設(shè)計(jì)_第4頁(yè)
windows文件系統(tǒng)的過(guò)濾器驅(qū)動(dòng)程序設(shè)計(jì)_第5頁(yè)
資源描述:

《windows文件系統(tǒng)的過(guò)濾器驅(qū)動(dòng)程序設(shè)計(jì)》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫(kù)。

1、Windows文件系統(tǒng)的過(guò)濾器驅(qū)動(dòng)程序設(shè)計(jì)西安電子科技大學(xué)李新摘要:某些應(yīng)用程序?qū)ξ募到y(tǒng)的性能有較高要求。例如媒體播放器需要滿(mǎn)足最小數(shù)據(jù)傳輸率才能保證視覺(jué)上的流暢。由于Windows文件系統(tǒng)本身沒(méi)有提供這樣的保證,需要編寫(xiě)過(guò)濾器驅(qū)動(dòng)程序添加這項(xiàng)功能。本文首先介紹系統(tǒng)驅(qū)動(dòng)體系和文件系統(tǒng)工作機(jī)制,然后分析文件系統(tǒng)過(guò)濾器驅(qū)動(dòng)程序的功能特點(diǎn),最后介紹一種滿(mǎn)足此類(lèi)應(yīng)用程序傳輸帶寬的總體解決方案(來(lái)源于文獻(xiàn)1)。關(guān)鍵詞:文件系統(tǒng)過(guò)濾器驅(qū)動(dòng)程序設(shè)備對(duì)象堆棧一.基礎(chǔ)知識(shí)1.系統(tǒng)組件WindowsNT操作系統(tǒng)含有許多功能相互獨(dú)立的內(nèi)核模式組

2、件。如內(nèi)核I/O管理器、硬件抽象層、存儲(chǔ)管理器、配置管理器、對(duì)象管理器、運(yùn)行支持和過(guò)程結(jié)構(gòu)等組件。Windows2000在此基礎(chǔ)上增加了即插即用管理器和電源管理器。兩種系統(tǒng)分別采用不同的驅(qū)動(dòng)模型。本文整體上以Windows2000的文檔為主。不過(guò)文件系統(tǒng)具有特殊性(非WDM),在兩個(gè)系統(tǒng)中的運(yùn)行機(jī)制基本相似。在這些內(nèi)核組件中,I/O管理器最為關(guān)鍵,它由文件系統(tǒng)、中間層驅(qū)動(dòng)程序和最低層設(shè)備驅(qū)動(dòng)程序三部分組成,對(duì)所有的核心態(tài)驅(qū)動(dòng)程序提供統(tǒng)一的通信接口IRP(I/O請(qǐng)求包方式)。應(yīng)用程序的I/O操作都是通過(guò)這種方式調(diào)用I/O管理器

3、的服務(wù)完成的。主要服務(wù)有:配置管理、內(nèi)存管理、對(duì)象管理、安全監(jiān)視等等。2.驅(qū)動(dòng)程序驅(qū)動(dòng)程序?qū)嵸|(zhì)是能被操作系統(tǒng)加載調(diào)用,為系統(tǒng)設(shè)備實(shí)現(xiàn)相應(yīng)功能的內(nèi)核模式的動(dòng)態(tài)鏈接庫(kù)。形式上可以看作是一個(gè)包含許多例程的容器。當(dāng)?shù)谝淮伟惭b時(shí),由I/O管理器調(diào)用驅(qū)動(dòng)程序入口函數(shù)DriverEntry,驅(qū)動(dòng)程序在此進(jìn)行自身初始化,設(shè)置其它例程的進(jìn)入點(diǎn),使操作系統(tǒng)接下來(lái)可以調(diào)用這些服務(wù)例程。驅(qū)動(dòng)程序加載時(shí)機(jī)與它的啟動(dòng)類(lèi)型和啟動(dòng)組設(shè)置有關(guān)。啟動(dòng)類(lèi)型有五種,通常文件系統(tǒng)及其過(guò)濾器驅(qū)動(dòng)程序?qū)儆赟ERVICE_BOOT_START或SERVICE_DEMAND

4、_START。驅(qū)動(dòng)體系是分層的。在用戶(hù)程序和硬件設(shè)備之間可以存在多個(gè)驅(qū)動(dòng)程序,這些驅(qū)動(dòng)程序上下鏈接形成驅(qū)動(dòng)程序堆棧(實(shí)際數(shù)據(jù)結(jié)構(gòu)是由這些驅(qū)動(dòng)程序創(chuàng)建的設(shè)備對(duì)象所構(gòu)成的設(shè)備堆棧),共同為此硬件設(shè)備服務(wù)。I/O管理器根據(jù)請(qǐng)求向設(shè)備驅(qū)動(dòng)程序創(chuàng)建并發(fā)送的IRP,會(huì)沿設(shè)備對(duì)象棧依次下傳,直到某個(gè)驅(qū)動(dòng)程序完成此IRP請(qǐng)求的操作。物理設(shè)備堆棧在物理設(shè)備枚舉過(guò)程中形成。當(dāng)系統(tǒng)啟動(dòng)后,PNP管理器從系統(tǒng)根總線開(kāi)始檢測(cè)PNP物理設(shè)備,為之創(chuàng)建物理設(shè)備對(duì)象(PDO),然后根據(jù)注冊(cè)表加載它的驅(qū)動(dòng)程序,創(chuàng)建其功能設(shè)備對(duì)象(FDO);然后這些設(shè)備的驅(qū)動(dòng)

5、程序再檢測(cè)連接在它上面的PnP硬件,同樣為各硬件創(chuàng)建PDO,加載其驅(qū)動(dòng)程序,創(chuàng)建FDO。重復(fù)直到枚舉完畢。每個(gè)物理設(shè)備的PDO和FDO(如果該設(shè)備具有過(guò)濾程序,還將有FiDO)形成一個(gè)堆棧結(jié)構(gòu),稱(chēng)設(shè)備堆棧。枚舉得到的設(shè)備構(gòu)成物理設(shè)備樹(shù)。節(jié)點(diǎn)主要就是設(shè)備堆棧。文件系統(tǒng)不是物理設(shè)備,其堆棧結(jié)構(gòu)比較特殊,也不作為物理設(shè)備樹(shù)的節(jié)點(diǎn),但構(gòu)成的原理及其運(yùn)行機(jī)制是相似的。過(guò)濾器驅(qū)動(dòng)程序是一種可選擇的特殊驅(qū)動(dòng)程序,可以加載在其它驅(qū)動(dòng)程序之上,用于修改或增加原驅(qū)動(dòng)程序的功能,而不必修改原驅(qū)動(dòng)程序和使用該驅(qū)動(dòng)的應(yīng)用程序。例如,只需在過(guò)濾驅(qū)動(dòng)程序

6、中添加處理例程,把數(shù)據(jù)寫(xiě)到兩個(gè)不同的物理磁盤(pán),保證數(shù)據(jù)的冗余保存,增加磁盤(pán)訪問(wèn)的容錯(cuò)能力。使用IoAttachDeviceByPointer(或IoAttachDeviceToDeviceStack.)把一個(gè)過(guò)濾設(shè)備對(duì)象FiDO鏈接到目標(biāo)設(shè)備對(duì)象FDO上。步驟:⑴獲取目標(biāo)設(shè)備對(duì)象的指針;⑵創(chuàng)建過(guò)濾設(shè)備對(duì)象;⑶保證此過(guò)濾驅(qū)動(dòng)程序能夠處理原目標(biāo)設(shè)備接收的所有IRP。即為所有能接收的IRP設(shè)置派發(fā)例程入口點(diǎn),并保證透明性;⑷調(diào)用IoAttachDeviceByPointer創(chuàng)建鏈接,把FiDO填入設(shè)備堆棧,使之緊緊位于目標(biāo)設(shè)備對(duì)象

7、FDO之上;當(dāng)上述操作完成后,I/O管理器就把所有發(fā)往目標(biāo)對(duì)象的IRP重定向發(fā)給該過(guò)濾設(shè)備對(duì)象。這樣過(guò)濾程序就可以在目標(biāo)設(shè)備驅(qū)動(dòng)程序之前對(duì)IRP進(jìn)行檢查、修改、完成等操作。驅(qū)動(dòng)程序通過(guò)I/Ostacklocation中的主功能碼MajorFunctionCode和次功能碼獲取任務(wù)信息。除標(biāo)準(zhǔn)功能碼外,還可進(jìn)行自定義,然后在用戶(hù)程序中使用DeviceIoControl函數(shù)通知I/O管理器創(chuàng)建具有自定義功能碼的IRP,由此可以完成一些特殊操作或?qū)崿F(xiàn)驅(qū)動(dòng)程序與應(yīng)用程序之間的通信。舉例說(shuō)明IRP的派發(fā)過(guò)程及內(nèi)核I/O管理器的功能:當(dāng)

8、應(yīng)用程序請(qǐng)求打開(kāi)某個(gè)文件,會(huì)有以下過(guò)程:1)保護(hù)子系統(tǒng)調(diào)用I/O管理器提供的服務(wù)來(lái)打開(kāi)一個(gè)命名文件;2)I/O管理器調(diào)用對(duì)象管理服務(wù)查出所要操作的文件的符號(hào)連接名(SymbolicLink),然后調(diào)用安全監(jiān)視服務(wù)判斷該用戶(hù)保護(hù)子系統(tǒng)是否有訪問(wèn)此文件的權(quán)限;3)I/O管理器對(duì)文件進(jìn)行定位。如

當(dāng)前文檔最多預(yù)覽五頁(yè),下載文檔查看全文

此文檔下載收益歸作者所有

當(dāng)前文檔最多預(yù)覽五頁(yè),下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動(dòng)畫(huà)的文件,查看預(yù)覽時(shí)可能會(huì)顯示錯(cuò)亂或異常,文件下載后無(wú)此問(wèn)題,請(qǐng)放心下載。
2. 本文檔由用戶(hù)上傳,版權(quán)歸屬用戶(hù),天天文庫(kù)負(fù)責(zé)整理代發(fā)布。如果您對(duì)本文檔版權(quán)有爭(zhēng)議請(qǐng)及時(shí)聯(lián)系客服。
3. 下載前請(qǐng)仔細(xì)閱讀文檔內(nèi)容,確認(rèn)文檔內(nèi)容符合您的需求后進(jìn)行下載,若出現(xiàn)內(nèi)容與標(biāo)題不符可向本站投訴處理。
4. 下載文檔時(shí)可能由于網(wǎng)絡(luò)波動(dòng)等原因無(wú)法下載或下載錯(cuò)誤,付費(fèi)完成后未能成功下載的用戶(hù)請(qǐng)聯(lián)系客服處理。