前沿拓展:
1. 前言
最近一段時(shí)間,我一直在研究 windows 驅(qū)動(dòng)開發(fā),下面跟大家簡(jiǎn)單聊聊:
對(duì)比 linux,windows 驅(qū)動(dòng)無論是市面上的書籍,視頻還是社區(qū),博文以及號(hào)主,寫的人很少,導(dǎo)致學(xué)習(xí)曲線直線上升;windows 驅(qū)動(dòng) 從業(yè) 人員就更少了;開發(fā)環(huán)境部署麻煩;驅(qū)動(dòng)安裝發(fā)布麻煩,需要數(shù)字簽名。如果是發(fā)布到windows update 庫里面,還需要做微標(biāo)認(rèn)證。
為什么還要寫?因?yàn)樵趯W(xué)習(xí)的過程中,發(fā)現(xiàn)很多東西還是很相同的,如果你是從事linux 開發(fā),可能會(huì)有些啟發(fā),如果是對(duì)windows 驅(qū)動(dòng)開發(fā)有需求,可能提供一些不成熟的建議。
接下來進(jìn)入正文,給大家簡(jiǎn)單介紹一下windows 驅(qū)動(dòng)。
2. windows 體系架構(gòu)2.1 **作系統(tǒng)與應(yīng)用程序
在許多現(xiàn)代**作系統(tǒng)中,應(yīng)用程序和**作系統(tǒng)是相互隔離的。**作系統(tǒng)的核心代碼運(yùn)行在特權(quán)模式下,即內(nèi)核模式。而應(yīng)用程序運(yùn)行在非特權(quán)模式下,即用戶模式。
**作系統(tǒng)和應(yīng)用程序的關(guān)心類似于服務(wù)器和客戶端的關(guān)系,這點(diǎn)在windows 平臺(tái)下顯得更加突出:
幾個(gè)概念:
system 進(jìn)程:windows **作系統(tǒng)本身會(huì)起一個(gè) system 進(jìn)程(加載kernel32.dll),有點(diǎn)類似于 linux 下的 init進(jìn)程,具體細(xì)節(jié)不展開。FDO (Function Driver Object):設(shè)備功能驅(qū)動(dòng)FiDO (Filter Driver Object):過濾驅(qū)動(dòng)PDO (Physical Driver Object):物理設(shè)備驅(qū)動(dòng),真正訪問硬件的地方。IRP (I/O Request Packet),應(yīng)用程序 想要訪問內(nèi)核數(shù)據(jù),必須通過IRP 傳遞。又叫IRP請(qǐng)求,當(dāng)應(yīng)用程序和驅(qū)動(dòng)交互時(shí),發(fā)送一個(gè)IRP 請(qǐng)求,IRP 會(huì)在各層設(shè)備驅(qū)動(dòng)之間來回傳動(dòng)與轉(zhuǎn)發(fā)。2.2 **作系統(tǒng)分層
windows 的設(shè)計(jì)思想是將內(nèi)核設(shè)計(jì)的盡可能的小,并且采用“客戶端-服務(wù)器”的結(jié)構(gòu)。**作系統(tǒng)各個(gè)組件或者模塊是通過消息進(jìn)行通信的。
拓展知識(shí):
原創(chuàng)文章,作者:九賢生活小編,如若轉(zhuǎn)載,請(qǐng)注明出處:http:///104226.html