成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

淺談 Windows 驅動開發,你會了嗎?

系統 Windows
為什么還要寫?因為在學習的過程中,發現很多東西還是很相同的,如果你是從事linux 開發,可能會有些啟發,如果是對windows 驅動開發有需求,可能提供一些不成熟的建議。

[[432330]]

1. 前言

最近一段時間一直在研究windows 驅動開發,簡單聊聊。

  • 對比 linux,windows 驅動無論是市面上的書籍,視頻還是社區,博文以及號主,寫的人很少,導致學習曲線直線上升。
  • windows 驅動 從業 人員就更少了。
  • 開發環境部署麻煩。
  • 驅動安裝發布麻煩,需要數字簽名。如果是發布到windows update 庫里面,還需要做微標認證。

為什么還要寫?因為在學習的過程中,發現很多東西還是很相同的,如果你是從事linux 開發,可能會有些啟發,如果是對windows 驅動開發有需求,可能提供一些不成熟的建議。

接下來開始正文,簡單介紹下windows 驅動

2. windows 體系架構

2.1 操作系統與應用程序

在許多現代操作系統中,應用程序和操作系統是相互隔離的。操作系統的核心代碼運行在特權模式下,即內核模式。而應用程序運行在非特權模式下,即用戶模式。

操作系統和應用程序的關心類似于服務器和客戶端的關系,這點在windows 平臺下顯得更加突出:

幾個概念:

  • system 進程:windows 操作系統本身會起一個 system 進程(加載kernel32.dll),有點類似于 linux 下的 init進程,具體細節不展開。
  • FDO (Function Driver Object):設備功能驅動
  • FiDO (Filter Driver Object):過濾驅動
  • PDO (Physical Driver Object):物理設備驅動,真正訪問硬件的地方。
  • IRP (I/O Request Packet),應用程序 想要訪問內核數據,必須通過IRP 傳遞。又叫IRP請求,當應用程序和驅動交互時,發送一個IRP 請求,IRP 會在各層設備驅動之間來回傳動與轉發。

2.2 操作系統分層

windows 的設計思想是將內核設計的盡可能的小,并且采用“客戶端-服務器”的結構。操作系統各個組件或者模塊是通過消息進行通信的。

  • win32 子系統:是最純正的windows 系統,其他子系統都是通過win32 子系統的接口來實現的,一般很少用到。
  • Natvie API :在win32 api 基礎上加上Nt 前綴,基于版本兼容考慮
  • 系統服務:Native API 從用戶模式進入內核模式,調用系統服務。(軟中斷方式實現,陷入內核)
  • 執行組件:內核模式下的一組服務函數。
    • 對象管理程序:windows 操作系統提供的服務幾乎都是以對象的形式存在的,這里的對象類似于面向對象語言中對象的概論。如驅動對象,設備對象等管理。
    • 進程管理程序:負責創建和終止進程,線程調度是由內核負責的。進程管理程序依賴于其他執行組件。
    • 虛擬內存管理程序:在CPU的內存管理單元(MMU)的協助下,通過某種映射將物理內存和虛擬內存關聯起來。
    • I/O 管理器:負責發起I/O 請求,并管理請求。它由一系列內核模式下的例程所組成,這些例程為用戶模式下的進程提供了統一接口。I/O 管理器的目標是使來自用戶模式的I/O請求獨立于設備。
    • 配置管理程序:配置管理程序,記錄所有計算機軟,硬件的配置信息。它使用一個被稱為注冊表的數據庫保存這些數據。設備驅動程序根據注冊表中的信息進行加載
  • 驅動程序:I/O 管理器接收應用程序后,創建相應的 IRP,并傳送至驅動程序進行處理:
    • 根據IRP的請求,直接操作硬件,然后完成此IRP,并返回
    • 根據IRP的請求,轉發到更底層的驅動中去,并等待底層驅動的返回。
    • 接受到IRP驅動后,不著急于完成。而是分配新的IRP法定其他驅動程序,并等待返回。
  • 內核:內核被認為是 Windows 操作系統的心臟。Windows 的內核從執行組件分割出來。和執行組件相比,內核是非常小的:
    • 對內核對象的支持。
    • 對線程的調度
    • 對多處理器同步支持。
    • 中斷處理函數的支持。
    • 對異常陷阱的支持。
    • 對其他硬件特殊功能的支持。
  • 硬件抽象層:不同的硬件平臺,提供不同的硬件抽象層,并對上層提供統一的操作硬件的接口。

2.3 應用程序和驅動

3. windows 驅動框架

3.1 驅動模型:

windows 驅動大致分為這幾類:

  • function driver:設備功能驅動
  • filter driver:設備輔助驅動
  • software driver:軟件模塊驅動
  • bus driver:總線設備驅動

3.2 驅動演變

  • NT 模型 :2000以前,不支持 PNP (即插即用設備)
  • WDM 模型:NT 基礎上,支持 PNP
  • WDF:WDM的重封裝
    • KMDF:內核模式(sys)
    • UMDF:用戶模式(dll)
  • win7 x64 劃時代操作系統,開始數字簽名了
  • win10 :雙認證簽名,也就是說對驅動的安全性要求更高了。

3.3 驅動垂直層次結構

  • 設備的創建順序,先創建底層PDO,在創建高層的FDO,即從底層設備到高層設備。
  • 在PDO 和 FDO之間可能有各種過濾驅動。每層設備對象由不同的驅動程序創建,或者說每層的設備對應著不同的驅動程序。
  • 底層設備對象尋找上一層的設備對象,是依靠底層設備對象的AttachedDevice 來尋找的。

3.4 驅動水平層次結構

同一驅動程序創建出來的設備對象的關系稱之為水平層次關系。

每一個設備通過NextDevice可以尋找水平層次的下一個設備對象。

3.5 一個復雜的驅動結構

4. windows 開發環境搭建

4.1 開發環境部署

以 win10 為例,列出需要安裝的東西,詳細過程限于篇幅以后更新

  • 安裝VS2019
  • 安裝 Windows SDK:VS 2019 順帶安裝
  • 安裝 WDK
  • 安裝 VMware + Win10 虛擬系統

4.2 常用調試工具

  • windbg:調試內核。WDK 自帶,配合串口或者網絡調試windows 內核
  • DebugViewer:查看內核打印
  • driverMonitor:驅動安裝
  • PCHunter_free:驅動強制卸載,不支持2004版本
  • devicetree:設備枚舉
  • winobj:查看符號鏈接

5. windows 驅動學習建議

有關Windows 驅動開發書籍,博文,教程甚少。如果有這方面需求的可以給以下幾個建議:

  • 環境搭建:win7 32 + vs2013 即可。不建議 win10 + vs2019,比較新,遇到問題不好解決。其次早期的一些調試工具,win10 最新版本不一定支持。
  • 繞開數字簽名:先使用測試模式,安裝驅動。否則光安裝部署就夠折騰的。
  • 入門采用 WDM 驅動模型。市面上將WDM 的書籍和資料相對多些,相對來說,WDF 開發資料來不少。

 

多看書,windows 驅動不想linux 資料一大把,遇到不懂得,加技術群,啃書本。

 

責任編輯:武曉燕 來源: 漫談嵌入式
相關推薦

2022-04-29 08:55:43

前端開發規范

2023-01-10 08:43:15

定義DDD架構

2024-02-28 09:07:58

鏈路聚合模式

2023-01-13 16:46:38

CRM系統建設

2024-05-30 09:43:00

2023-11-30 12:13:29

開發分離工具

2024-11-28 09:59:35

2023-08-30 07:21:59

2024-01-19 08:25:38

死鎖Java通信

2022-04-01 08:23:17

InputstreString字符串

2024-02-04 00:00:00

Effect數據組件

2023-07-26 13:11:21

ChatGPT平臺工具

2023-08-01 12:51:18

WebGPT機器學習模型

2024-01-02 12:05:26

Java并發編程

2022-04-12 11:54:19

驅動

2024-01-16 08:22:42

Gradient線性梯度

2022-09-08 11:44:17

EW匯編器連接定位器

2023-10-10 11:04:11

Rust難點內存

2024-05-06 00:00:00

InnoDBView隔離

2024-07-31 08:39:45

Git命令暫存區
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 午夜精品久久 | 99精品欧美一区二区三区综合在线 | 日韩精品一区二区在线观看 | 国产中的精品av涩差av | 国产欧美在线观看 | 在线免费观看成人 | 久久久久成人精品免费播放动漫 | 国产精品日韩欧美一区二区 | 97日韩精品 | 九九热精品在线 | 国内久久精品 | 久久久久亚洲精品中文字幕 | 在线观看国产wwwa级羞羞视频 | 夜久久 | 九九热精品视频在线观看 | 欧美日韩一卡二卡 | av手机免费在线观看 | 国产一级特黄aaa大片评分 | 日韩看片 | 国产一二三区在线 | 日韩精品一区二区三区在线观看 | 911精品美国片911久久久 | 久久精品久久久 | 91麻豆精品国产91久久久更新资源速度超快 | 亚洲精品视频在线观看免费 | 久久99蜜桃综合影院免费观看 | 中文字幕91av| 色视频在线播放 | 国产大片黄色 | 亚洲人成在线观看 | 超碰操 | 婷婷国产一区 | 国产精品毛片一区二区三区 | 青青草华人在线视频 | 免费看国产一级特黄aaaa大片 | 在线免费观看毛片 | 亚洲精品福利在线 | 成人av免费在线观看 | 天堂色网| 亚洲看片网站 | 男人亚洲天堂 |