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