Windows NT 裝置驅動程式開發基礎(1) (轉)
Windows NT 裝置驅動程式開發基礎(1) (轉)[@more@]一、背景介紹
1.1 NT操作的組成
1.1.1 (User Mode)與核心模式(Kernel Mode)
從 80386開始,出於性和穩定性的考慮,該系列的可以執行於ring0
~ring3從高到低四個不同的級,對資料也提供相應的四個保護級別。執行於較
低階別的程式碼不能隨意高階別的程式碼和訪問較高階別的資料,而且也只有ring0
層的程式碼可以直接進行對物理的訪問。由於Windows NT是一個支援多平臺的操作
系統,為了與其他平臺相容,它只利用了CPU的兩個執行級別。一個被稱為核心模式,
對應80x86的ring0層,的核心部分,包括裝置都執行在該模式;另
一個被稱為使用者模式,對應80x86的ring3層,作業系統的使用者介面部分以及所有的用
戶應用程式都執行在該級別。
1.1.2 Windows NT作業系統的結構
圖1簡要地描述了Windows NT的系統組成。
圖一
從圖中可以看到,在物理硬體(Hardware)與系統核心(Kernel)之間有一個硬體抽象
層(Hardware Abstraction Layer),它遮蔽了不同平臺硬體的差異,向作業系統的
上層提供了一套統一的介面。從圖中我們還可以看到,裝置驅動程式(Device )
是被I/O管理器(I/O Manager)包圍起來的,即驅動程式與作業系統上層的通訊全部都
要透過I/O管理器。這給驅動程式的編寫帶來了很大的便利,因為很多諸如接收使用者的請
求 、與使用者程式資料、對映、掛接中斷、同步等等麻煩的工作都由I/O管理器代
勞了。
1.1.3 Windows NT裝置驅動程式的分類
根據是否直接操作硬體,可以把驅動程式分成兩大類:核心模式的驅動程式和專用驅
動程式。
核心模式的驅動程式根據硬體的通訊,直接對硬體進行埠訪問、中斷響應、DM
A傳輸。它包括:串、並行口,鍵盤,系統,,等驅動程式;專用驅動程式
包括影片,列印,多,虛擬DOS等驅動程式,他們在實現上與前者有很大區別。我在
實習期間所做的工作以及本文以下的討論都侷限於核心模式的驅動程式。
--
1.1 NT操作的組成
1.1.1 (User Mode)與核心模式(Kernel Mode)
從 80386開始,出於性和穩定性的考慮,該系列的可以執行於ring0
~ring3從高到低四個不同的級,對資料也提供相應的四個保護級別。執行於較
低階別的程式碼不能隨意高階別的程式碼和訪問較高階別的資料,而且也只有ring0
層的程式碼可以直接進行對物理的訪問。由於Windows NT是一個支援多平臺的操作
系統,為了與其他平臺相容,它只利用了CPU的兩個執行級別。一個被稱為核心模式,
對應80x86的ring0層,的核心部分,包括裝置都執行在該模式;另
一個被稱為使用者模式,對應80x86的ring3層,作業系統的使用者介面部分以及所有的用
戶應用程式都執行在該級別。
1.1.2 Windows NT作業系統的結構
圖1簡要地描述了Windows NT的系統組成。
圖一
從圖中可以看到,在物理硬體(Hardware)與系統核心(Kernel)之間有一個硬體抽象
層(Hardware Abstraction Layer),它遮蔽了不同平臺硬體的差異,向作業系統的
上層提供了一套統一的介面。從圖中我們還可以看到,裝置驅動程式(Device )
是被I/O管理器(I/O Manager)包圍起來的,即驅動程式與作業系統上層的通訊全部都
要透過I/O管理器。這給驅動程式的編寫帶來了很大的便利,因為很多諸如接收使用者的請
求 、與使用者程式資料、對映、掛接中斷、同步等等麻煩的工作都由I/O管理器代
勞了。
1.1.3 Windows NT裝置驅動程式的分類
根據是否直接操作硬體,可以把驅動程式分成兩大類:核心模式的驅動程式和專用驅
動程式。
核心模式的驅動程式根據硬體的通訊,直接對硬體進行埠訪問、中斷響應、DM
A傳輸。它包括:串、並行口,鍵盤,系統,,等驅動程式;專用驅動程式
包括影片,列印,多,虛擬DOS等驅動程式,他們在實現上與前者有很大區別。我在
實習期間所做的工作以及本文以下的討論都侷限於核心模式的驅動程式。
--
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10752043/viewspace-992236/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Linux裝置驅動程式學習----1.裝置驅動程式簡介Linux
- Linux驅動開發筆記(四):裝置驅動介紹、熟悉雜項裝置驅動和ubuntu開發雜項裝置DemoLinux筆記Ubuntu
- Linux驅動之裝置樹的基礎知識Linux
- iOS 裝置驅動 for windows 32&64iOSWindows
- 字元裝置驅動 —— 字元裝置驅動框架字元框架
- Linux裝置驅動開發詳解:基於Linux4.0核心Linux
- 在Linux中,什麼是裝置驅動程式?如何安裝和解除安裝裝置驅動程式?Linux
- 基於匯流排裝置驅動模型的按鍵讀取驅動程式模型
- 裝置驅動程式包可以刪除嗎 win10裝置驅動程式包能刪嗎Win10
- 研究發現超過 40 個 Windows 裝置驅動程式包含提升許可權的漏洞Windows
- 【系統安全003】NT驅動框架框架
- Linux驅動實踐:如何編寫【 GPIO 】裝置的驅動程式?Linux
- 超過40個Windows裝置驅動程式包含提升許可權的漏洞Windows
- LED字元裝置驅動字元
- ArmSoM系列板卡 嵌入式Linux驅動開發實戰指南 之 字元裝置驅動Linux字元
- 載入NT驅動的類 C++C++
- 驅動Driver-MISC雜項驅動裝置
- 【linux】驅動-7-平臺裝置驅動Linux
- 驅動篇——核心程式設計基礎程式設計
- platform 裝置驅動實驗Platform
- 字元驅動裝置踩坑字元
- 【linux】驅動-6-匯流排-裝置-驅動Linux
- 關於召回《Linux裝置驅動開發詳解-基於最新的Linux 4.0核心》的通知Linux
- Huawei裝置基礎配置
- Linux磁碟裝置基礎Linux
- 領域模型驅動開發(1)模型
- 05_雜項裝置驅動
- mtd裝置驅動(待學習)
- linux 裝置驅動基本概念Linux
- 驅動程式開發步驟
- Linux驅動實踐:你知道【字元裝置驅動程式】的兩種寫法嗎?Linux字元
- win10驅動未知裝置怎麼辦_win10裝置管理器驅動未知裝置處理方法Win10
- 基於WDF的驅動開發
- pci匯流排驅動及pci裝置驅動註冊
- 零程式碼零硬體玩轉華為雲IoT,基於裝置聯動實時監控裝置
- 非同步通知和MISC裝置驅動非同步
- linux裝置驅動編寫入門Linux
- Windows 11重新安裝音訊驅動程式的教程Windows音訊
- 無作業系統時的裝置驅動和有作業系統時的裝置驅動作業系統