天天看點

檔案系統mount的過程

把自己以前對 檔案系統mount的過程 的了解貼出來,下面肯定有很多錯誤,希望高手多多指教啊。

      假如你的系統隻有c盤,當你插入移動硬碟,系統會接到通知,由Mountmgr.sys來建立d盤,并由對象管理器來建立符号連接配接/??/D:,被ftdisk解析為/Device/HarddiskVolume2,由FILE_OBJECT的deviceobject來對應,如果有多個partion,就再建立一個e盤等,例如,當你來通路D:/Temp/Test.txt,由object manager解析driver letter(d:),被解析為/Device/HarddiskVolume2,還有Temp/Test.txt沒有解析,這個時候需要I/O manager來檢視/Device/HarddiskVolume2裝置的vpb,發現vpb為空, I/O manager 會詢問注冊了的檔案系統,看他們是否識别這個partion格式,檔案系統會讀boot record看是否是自己識别的格式,如果有檔案系統識别,會告訴 I/O manager,這個時候vpb由 I/O manager 來填充,然後把這個通路irp導向這個檔案系統,如果目前沒有檔案系統識别,I/O manager 會加載Raw檔案系統,通路irp也導向這個檔案系統,但是這個檔案系統對這個irp隻是傳回錯誤,為了不讓每個檔案系統都加載進來,可以節約空間,我們需要一個檔案系統Fs_rec.sys,來識别大多數windows下存儲檔案(partion)格式,檔案系統結構就變成以下這樣了,I/O manager 隻會詢問Fs_rec.sys,來識别partion格式,檔案識别就不會詢問檔案系統了,相當裝了一個路由,系統啟動的時候會加載 Fs_rec.sys,當第一次通路一個partion時,Fs_rec.sys會加載相應的驅動,然後把mount請求發送到這個檔案系統,并做記錄,如果再插入的移動硬碟是這個格式的,就不會加載驅動了,前面做記錄了,這個時候就直接把mount請求發給這個檔案系統,讓檔案系統來建立一個裝置,由io 管理器來填充vpb。

ps: d:這個符号是由對象管理器來解析的,Temp/Test.txt這個是由檔案系統來解析的,是檔案的組織結構

看完後,請點選左邊的廣告,謝謝!!