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