TOP
0
0
母親節暖心加碼,點我領取「限時加碼券」
Windows驅動開發技術詳解(簡體書)
滿額折

Windows驅動開發技術詳解(簡體書)

商品資訊

人民幣定價:65 元
定價
:NT$ 390 元
優惠價
87339
絕版無法訂購
相關商品
商品簡介
作者簡介
目次

商品簡介

本書由淺入深、循序漸進地介紹了Windows驅動程序的開發方法與調試技巧。本書共分23章,內容涵蓋了Windows操作系統的基本原理、NT驅動程序與WDM驅動程序的構造、驅動程序中的同步異步處理方法、驅動程序中即插即用功能、驅動程序的各種調試技巧等。同時,還針對流行的PCI驅動程序、USB驅動程序、虛擬串口驅動程序、攝像頭驅動程序、SDIO驅動程序進行了詳細的介紹,本書最大的特色在于每一節的例子都是經過精挑細選的,具有很強的針對性。力求讓讀者通過親自動手實驗,掌握各類Windows驅動程序的開發技巧,學習盡可能多的Windows底層知識。
本書適用于中、高級系統程序員,同時也可用做高校計算機專業操作系統實驗課的補充教材。

作者簡介

張帆:畢業于北京理工大學電子工程系,曾就職于威盛電子有限公司,現就職于北京創毅視訊科技有限公司。長期從事PCI、USB、SDIO、串口、攝像頭等設備的WindowsS區動程序開發。對Windows操作系統內核有深入的研究,并且有豐富的Windows驅動程序開發經驗。

目次

第1篇 入門篇
第1章 從兩個最簡單的驅動談起
本章向讀者呈現兩個最簡單的Windows驅動程序,一個是NT式的驅動程序,另一個是WDM式的驅動程序。這兩個驅動程序沒有操作具體的硬件設備,只是在系統里創建了虛擬設備。在隨后的章節中,它們會作為基本驅動程序框架,被本書其他章節的驅動程序開發所復用。筆者將帶領讀者編寫代碼、編譯、安裝和調試程序。
1.1 DDK的安裝
1.2 第一個驅動程序HelloDDK的代碼分析
1.2.1 HelloDDK的頭文件
1.2.2 HelloDDK的入口函數
1.2.3 創建設備例程
1.2.4 卸載驅動例程
1.2.5 默認派遣例程
1.3 HelloDDK的編譯和安裝
1.3.1 用DDK環境編譯HelloDDK
1.3.2 用VC集成開發環境編譯HelloDDK
1.3.3 HelloDDK的安裝
1.4 第二個驅動程序HelloWDM的代碼分析
1.4.1 HelloWDM的頭文件
1.4.2 HelloWDM的入口函數
1.4.3 HelloWDM的AddDevice例程
1.4.4 HelloWDM處理PNP的回調函數
1.4.5 HelloWDM對PNP的默認處理
1.4.6 HelloWDM對IRP_MN_REMOVE_DEVICE的處理
1.4.7 HelloWDM對其他IRP的回調函數
1.4.8 HelloWDM的卸載例程
1.5 HelloWDM的編譯和安裝
1.5.1 用DDK編譯環境編譯HelloWDM
1.5.2 HelloWDM的編譯過程
1.5.3 安裝HelloWDM
1.6 小結
 第2章 Windows操作驅動的基本概念
 驅動程序被操作系統加載在內核模式下,它與Windows操作系統內核的其他組件進行密切交互。本章主要介紹Windows操作系統內核的基本概念,同時還介紹應用程序和驅動程序之間的通信方法。
2.1 Windows操作系統概述
2.1.1 Windows家族
2.1.2 Windows特性
2.1.3 用戶模式和內核模式
2.1.4 操作系統與應用程序
2.2 操作系統分層
2.2.1 Windows操作系統總體架構
2.2.2 應用程序與Win32子系統
2.2.3 其他環境子系統
2.2.4 Native API
2.2.5 系統服務
2.2.6 執行程序組件
2.2.7 驅動程序
2.2.8 內核
2.2.9 硬件抽象層
2.2.10 Windows與微內核
2.3 從應用程序到驅動程序
2.4 小結
 第3章 Windows驅動編譯環境配置、安裝及調試
 本章將帶領讀者一步步對驅動程序進行編譯、安裝和簡單的調試工作。這些步驟雖然簡單,但往往困惑著初次接觸驅動程序的開發者。
 3.1 用C語言還是用C++語言
3.1.1 調用約定
3.1.2 函數的導出名
3.1.3 運行時函數的調用
3.2 用DDK編譯環境編譯驅動程序
3.2.1 編譯版本
3.2.2 nmake工具
3.2.3 build工具
3.2.4 makefile文件
3.2.5 dirs文件
3.2.6 sources文件
3.2.7 makefile.inc文件
3.2.8 build工具的環境變量
3.2.9 build工具的命令行參數
3.3 用VC編譯驅動程序
3.3.1 建立驅動程序工程
3.3.2 修改編譯選項
3.3.3 修改鏈接選項
3.3.4 其他修改
3.3.5 VC編譯小結
3.4 查看調試信息
3.4.1 打印調試語句
3.4.2 查看調試語句
3.5 手動加載NT式驅動
3.6 編寫程序加載NT式驅動
3.6.1 SCM組件和Windows服務
3.6.2 加載NT驅動的代碼
3.6.3 卸載NT驅動的代碼
3.6.4 實驗
3.7 WDM式驅動的加載
3.7.1 WDM的手動安裝
3.7.2 簡單的INF文件剖析
3.8 WDM設備安裝在注冊表中的變化
3.8.1 硬件子鍵
3.8.2 類子鍵
3.8.3 服務子鍵
3.9 小結
 第4章 驅動程序的基本結構
 本章首先對Windows驅動程序的兩個重要數據結構進行介紹,分別是驅動對象和設備對象數據結構。另外還要介紹NT驅動程序和WDM驅動程序的入口函數、卸載例程、各種IRP派遣上函數等。
4.1 Windows驅動程序中重要的數據結構
4.1.1 驅動對象(DRIVER_OBJECT)
4.1.2 設備對象(DEVICE_OBJECT)
4.1.3 設備擴展
4.2 NT式驅動的基本結構
4.2.1 驅動加載過程與驅動入口函數(DriverEntry)
4.2.2 創建設備對象
4.2.3 DriverUnload例程
4.2.4 用WinObj觀察驅動對象和設備對象
4.2.5 用DeviceTree觀察驅動對象和設備對象
4.3 WDM式驅動的基本結構
4.3.1 物理設備對象與功能設備對象
4.3.2 WDM驅動的入口程序
4.3.3 WDM驅動的AddDevice例程
4.3.4 DriverUnload例程
4.3.5 對IRP_MN_REMOVE_DEVICE IRP的處理
4.3.6 用Device Tree查看WDM設備對象棧
4.4 設備的層次結構
4.4.1 驅動程序的垂直層次結構
4.4.2 驅動程序的水平層次結構
4.4.3 驅動程序的復雜層次結構
4.5 實驗
4.5.1 改寫HelloDDK查看驅動結構
4.5.2 改寫HelloWDM查看驅動結構
4.6 小結
 第5章 Windows內存管理
本章圍繞著驅動程序中的內存操作進行了介紹。在驅動程序開發中,首先要注意分頁內存和非分頁內存的使用。同時,還需要區分物理內存地址和虛擬內存地址這兩個概念。
5.1 內存管理概念
5.1.1 物理內存概念(Physical Memory Address)
5.1.2 虛擬內存地址概念(Virtual Memory Address)
5.1.3 用戶模式地址和內核模式地址
5.1.4 Windows驅動程序和進程的關系
5.1.5 分頁與非分頁內存
5.1.6 分配內核內存
5.2 在驅動中使用鏈表
5.2.1 鏈表結構
5.2.2 鏈表初始化
5.2.3 從首部插入鏈表
5.2.4 從尾部插入鏈表
5.2.5 從鏈表刪除
5.2.6 實驗
5.3 Lookaside結構
5.3.1 頻繁申請內存的弊端
5.3.2 使用Lookaside
5.3.3 實驗
5.4 運行時函數
5.4.1 內存間復制(非重疊)
5.4.2 內存間復制(可重疊)
5.4.3 填充內存
5.4.4 內存比較
5.4.5 關于運行時函數使用的注意事項
5.4.6 實驗
5.5 使用C++特性分配內存
5.6 其他
5.6.1 數據類型
5.6.2 返回狀態值
5.6.3 檢查內存可用性
5.6.4 結構化異常處理(try-except塊)
5.6.5 結構化異常處理(try-finally塊)
5.6.6 使用宏需要注意的地方
5.6.7 斷言
5.7 小結
第6章 Windows內核函數
 本章介紹了Windows內核模式下的一些常用內核函數,這些函數在驅動程序的開發中將會經常用到。
6.1 內核模式下的字符串操作
6.1.1 ASCII字符串和寬字符串
6.1.2 ANSI_STRING字符串與UNICODE_STRING字符串
6.1.3 字符初始化與銷毀
6.1.4 字符串復制
6.1.5 字符串比較
6.1.6 字符串轉化成大寫
6.1.7 字符串與整型數字相互轉換
6.1.8 ANSI_STRING字符串與UNICODE_STRING字符串相互轉換
6.2 內核模式下的文件操作
6.2.1 文件的創建
6.2.2 文件的打開
6.2.3 獲取或修改文件屬性
6.2.4 文件的寫操作
6.2.5 文件的讀操作
6.3 內核模式下的注冊表操作
6.3.1 創建關閉注冊表
6.3.2 打開注冊表
6.3.3 添加、修改注冊表鍵值
6.3.4 查詢注冊表
6.3.5 枚舉子項
6.3.6 枚舉子鍵
6.3.7 刪除子項
6.3.8 其他
6.4 小結
 第7章 派遣函數
本章重點介紹了驅動程序中的處理IRP請求的派遣函數。所有對設備的操作最終將轉化為IRP請求,這些IRP請求會被傳送到派遣函數處理。
7.1 IRP與派遣函數
7.1.1 IRP
7.1.2 IRP類型
7.1.3 對派遣函數的簡單處理
7.1.4 通過設備鏈接打開設備
7.1.5 編寫一個更通用的派遣函數
7.1.6 跟蹤IRP的利器IRPTrace
7.2 緩沖區方式讀寫操作
7.2.1 緩沖區設備
7.2.2 緩沖區設備讀寫
7.2.3 緩沖區設備模擬文件讀寫
7.3 直接方式讀寫操作
7.3.1 直接讀取設備
7.3.2 直接讀取設備的讀寫
7.4 其他方式讀寫操作
7.4.1 其他方式設備
7.4.2 其他方式讀寫
7.5 IO設備控制操作
7.5.1 DeviceIoControl與驅動交互
7.5.2 緩沖內存模式IOCTL
7.5.3 直接內存模式IOCTL
7.5.4 其他內存模式IOCTL
7.6 小結
第2篇 進階篇
 第8章 驅動程序的同步處理
 本章介紹了驅動程序中常用的同步處理辦法,并且將內核模式下的同步處理方法和用戶模式下的同步處理方法做了比較。另外,本章還介紹了中斷請求級、自旋鎖等同步處理機制。
8.1 基本概念
8.1.1 問題的引出
8.1.2 同步與異步
8.2 中斷請求級
8.2.1 中斷請求(IRQ)與可編程中斷控制器(PIC)
8.2.2 高級可編程控制器(APIC)
8.2.3 中斷請求級(IRQL)
8.2.4 線程調度與線程優先級
8.2.5 IRQL的變化
8.2.6 IRQL與內存分頁
8.2.7 控制IRQL提升與降低
8.3 自旋鎖
8.3.1 原理
8.3.2 使用方法
8.4 用戶模式下的同步對象
8.4.1 用戶模式的等待
8.4.2 用戶模式開啟多線程
8.4.3 用戶模式的事件
8.4.4 用戶模式的信號燈
8.4.5 用戶模式的互斥體
8.4.6 等待線程完成
8.5 內核模式下的同步對象
8.5.1 內核模式下的等待
8.5.2 內核模式下開啟多線程
8.5.3 內核模式下的事件對象
8.5.4 驅動程序與應用程序交互事件對象
8.5.5 驅動程序與驅動程序交互事件對象
8.5.6 內核模式下的信號燈
8.5.7 內核模式下的互斥體
8.5.8 快速互斥體
8.6 其他同步方法
8.6.1 使用自旋鎖進行同步
8.6.2 使用互鎖操作進行同步
8.7 小結
 第9章 IRP的同步
 本章詳細地介紹了IRP的同步處理方法和異步處理方法。另外,本章還介紹了StartIO例程、中斷服務例程、DPC服務例程。
9.1 應用程序對設備的同步異步操作
9.1.1 同步操作與異步操作原理
9.1.2 同步操作設備
9.1.3 異步操作設備(方式一)
9.1.4 異步操作設備(方式二)
9.2 IRP的同步完成與異步完成
9.2.1 IRP的同步完成
9.2.2 IRP的異步完成
9.2.3 取消IRP
9.3 StartIO例程
9.3.1 并行執行與串行執行
9.3.2 StartIO例程
9.3.3 示例
9.4 自定義的StartIO
9.4.1 多個串行化隊列
9.4.2 示例
9.5 中斷服務例程
9.5.1 中斷操作的必要性
9.5.2 中斷優先級
9.5.3 中斷服務例程(ISR)
9.6 DPC例程
9.6.1 延遲過程調用例程(DPC)
9.6.2 DpcForISR
9.7 小結
 第10章 定時器
 本章總結了在內核模式下的四種等待方法,讀者可以利用這些方法靈活地用在自己的驅動程序中。最后本章還介紹了如何對IRP的超時情況進行處理。
10.1 定時器實現方式一
10.1.1 I/O定時器
10.1.2 示例代碼
10.2 定時器實現方式二
10.2.1 DPC定時器
10.2.2 示例代碼
10.3 等待
10.3.1 第一種方法:使用KeWaitForSingleObject
10.3.2 第二種方法:使用KeDelayExecutionThread
10.3.3 第三種方法:使用KeStallExecutionProcessor
10.3.4 第四種方法:使用定時器
10.4 時間相關的其他內核函數
10.4.1 時間相關函數
10.4.2 示例代碼
10.5 IRP的超時處理
10.5.1 原理
10.5.2 示例代碼
10.6 小結
 第11章 驅動程序調用驅動程序
本章主要介紹了如何在驅動程序中調用其他驅動程序。比較簡單的方法是將被調用的驅動程序以文件的方式操作。比較高級的方法是構造各種IRP,并將這些IRP傳送到被調用的驅動程序中。
11.1 以文件句柄形式調用其他驅動程序
11.1.1 準備一個標準驅動
11.1.2 獲得設備句柄
11.1.3 同步調用
11.1.4 異步調用方法一
11.1.5 異步調用方法二
11.1.6 通過符號鏈接打開設備
11.2 通過設備指針調用其他驅動程序
11.2.1 用IoGetDeviceObjectPointer獲得設備指針
11.2.2 創建IRP傳遞給驅動的派遣函數
11.2.3 用IoBuildSynchronousFsdRequest創建IRP
11.2.4 用IoBuildAsynchronousFsdRequest創建IRP
11.2.5 用IoAllocateIrp創建IRP
11.3 其他方法獲得設備指針
11.3.1 用ObReferenceObjectByName獲得設備指針
11.3.2 剖析IoGetDeviceObjectPointer
11.4 小結
 第12章 分層驅動程序
本章主要介紹了分層驅動的概念。分層驅動可以將功能復雜的驅動程序分解為多個功能簡單的驅動程序。多個分層的驅動程序形成一個設備堆棧,IRP請求首先發送到設備堆棧的頂層,然后依次穿越每層的設備堆棧,最終完成IRP請求。
12.1 分層驅動程序概念
12.1.1 分層驅動程序的概念
12.1.2 設備堆棧與掛載
12.1.3 I/O堆棧
12.1.4 向下轉發IRP
12.1.5 掛載設備對象示例
12.1.6 轉發IRP示例
12.1.7 分析
12.1.8 遍歷設備棧
12.2 完成例程
12.2.1 完成例程概念
12.2.2 傳播Pending位
12.2.3 完成例程返回STATUS_SUCCESS
12.2.4 完成例程返回STATUS_MORE_PROCESSING_REQUIRED
12.3 將IRP分解成多個IRP
12.3.1 原理
12.3.2 準備底層驅動
12.3.3 讀派遣函數
12.3.4 完成例程
12.3.5 分析
12.4 WDM驅動程序架構
12.4.1 WDM與分層驅動程序
12.4.2 WDM的加載方式
12.4.3 功能設備對象
12.4.4 物理設備對象
12.4.5 物理設備對象與即插即用
12.5 小結
 第13章 讓設備實現即插即用
 本章首先介紹即插即用的概念和驅動程序支持即插即用功能的必要性。另外,本章還介紹如何利用WDM驅動程序開發框架設計支持即插即用功能的驅動程序。
13.1 即插即用概念
13.1.1 歷史原因
13.1.2 即插即用的目標
13.1.3 Windows中即插即用相關組件
13.1.4 遺留驅動程序
13.2 即插即用IRP
13.2.1 即插即用IRP的功能代碼
13.2.2 處理即插即用IRP的派遣函數
13.3 通過設備接口尋找設備
13.3.1 設備接口
13.3.2 WDM驅動中設置接口
13.3.3 應用程序尋找接口
13.3.4 查看接口設備
13.4 啟動和停止設備
13.4.1 為一個實際硬件安裝HelloWDM
13.4.2 啟動設備
13.4.3 轉發并等待
13.4.4 獲得設備相關資源
13.4.5 枚舉設備資源
13.4.6 停止設備
13.5 即插即用的狀態轉換
13.5.1 狀態轉換圖
13.5.2 IRP_MN_QUERY_STOP_DEVICE
13.5.3 IRP_MN_QUERY_REMOVE_DEVICE
13.6 其他即插即用IRP
13.6.1 IRP_MN_FILTER_RESOURCE_REQUIREMENTS
13.6.2 IRP_MN_QUERY_CAPABILITIES
13.7 小結
 第14章 電源管理
 本章主要介紹了如何在WDM驅動程序中進行電源處理。電源處理主要是處理好電源狀態和設備狀態。
14.1 WDM電源管理模型
14.1.1 概述
14.1.2 熱插拔
14.1.3 電源狀態
14.1.4 設備狀態
14.1.5 狀態轉換
14.2 處理IRP_MJ_POWER
14.3 處理IRP_MN_QUERY_CAPABILITIES
14.3.1 DEVICE_CAPABILITIES
14.3.2 一個試驗
14.4 小結
第3篇 實用篇
 第15章 I/O端口操作
 本章總結了多種I/O端口操作的方法。這些方法本質上是一樣的,都是將端口輸入輸出的匯編指令運行在內核模式中。
15.1 概述
15.1.1 從DOS說起
15.1.2 匯編實現
15.1.3 DDK實現
15.2 工具軟件WinIO
15.2.1 WinIO簡介
15.2.2 使用方法
15.3 端口操作實現方法一
15.3.1 驅動端程序
15.3.2 應用程序端程序
15.4 端口操作實現方法二
15.4.1 驅動端程序
15.4.2 應用程序端程序
15.5 端口操作實現方法三
15.5.1 驅動端程序
15.5.2 應用程序端程序
15.6 端口操作實現方法四
15.6.1 原理
15.6.2 驅動端程序
15.6.3 應用程序端程序
15.7 驅動PC喇叭
15.7.1 可編程定時器
15.7.2 PC喇叭
15.7.3 操作代碼
15.8 操作并口設備
15.8.1 并口設備簡介
15.8.2 并口寄存器
15.8.3 并口設備操作
15.9 小結
第16章 PCI設備驅動
本章主要介紹PCI設備的驅動開發。首先介紹了PCI總線協議。作為驅動程序員,開發PCI驅動程序首先要了解PCI配置空間。根據讀取PCI配置空間,可以得到PCI設備的所有資源。另外,本章還總結了四種獲取PCI配置空間的方法。
16.1 PCI總線協議
16.1.1 PCI總線簡介
16.1.2 PCI配置空間簡介
16.2 訪問PCI配置空間方法一
16.2.1 兩個重要寄存器
16.2.2 示例
16.3 訪問PCI配置空間方法二
16.3.1 DDK函數讀取配置空間
16.3.2 示例
16.4 訪問PCI配置空間方法三
16.4.1 通過即插即用IRP獲得PCI配置空間
16.4.2 示例
16.5 訪問PCI配置空間方法四
16.5.1 創建IRP_MN_READ_CONFIG
16.5.2 示例
16.6 PCI設備驅動開發示例
16.6.1 開發步驟
16.6.2 中斷操作
16.6.3 操作設備物理內存
16.6.4 示例
16.7 小結
第17章 USB設備驅動
 本章首先介紹了USB總線協議的基本框架,其中包括USB總線的拓撲結構,USB通信的流程,還有USB的四種傳輸模式。另外,本章介紹了如何編寫USB總線設備的驅動程序。
17.1 USB總線協議
17.1.1 USB設備簡介
17.1.2 USB連接拓撲結構
17.1.3 USB通信的流程
17.1.4 USB四種傳輸模式
17.2 Windows下的USB驅動
17.2.1 觀察USB設備的工具
17.2.2 USB設備請求
17.2.3 設備描述符
17.2.4 配置描述符
17.2.5 接口描述符
17.2.6 端點描述符
17.3 USB驅動開發實例
17.3.1 功能驅動與物理總線驅動
17.3.2 構造USB請求包
17.3.3 發送USB請求包
17.3.4 USB設備初始化
17.3.5 USB設備的插拔
17.3.6 USB設備的讀寫
17.4 小結
 第18章 SDIO設備驅動
本章首先介紹了SDIO協議,講述了SD內存卡和SDIO卡的兼容問題。然后介紹了SDIO協議中的發送命令、回應命令、傳送數據等相關協議。隨后,本章又介紹了Windows中,DDK提供的對SDIO卡設備的支持。然后介紹了如何利用總線驅動,使SDIO設備初始化,接收中斷,發送和接收數據等操作。
18.1 SDIO協議
18.1.1 SD內存卡概念
18.1.2 SDIO卡概念
18.1.3 SDIO總線
18.1.4 SDIO令牌
18.1.5 SDIO令牌格式
18.1.6 SDIO的寄存器
18.1.7 CMD52命令
18.1.8 CMD53命令
18.2 SDIO卡驅動開發框架
18.2.1 SDIO Host Controller驅動
18.2.2 SDIO卡的初始化
18.2.3 中斷回調函數
18.2.4 獲得和設置屬性
18.2.5 CMD52
18.2.6 CMD53
18.3 SDIO開發實例
18.4 小結
 第19章 虛擬串口設備驅動
 本章介紹了串口開發的框架模型,在串口的AddDevice例程中需要暴露出一個串口的符號連接,另外在相應的注冊表中需要進行設置。在串口與應用程序的通信中,主要是一組DDK定義的IO控制碼,這些IO控制碼負責由應用程序向驅動發出請求。
19.1 串口簡介
19.2 DDK串口開發框架
19.2.1 串口驅動的入口函數
19.2.2 應用程序與串口驅動的通信
19.2.3 寫的實現
19.2.4 讀的實現
19.3 小結
 第20章 攝像頭設備驅動程序
 本章主要介紹了微軟提供的攝像頭驅動框架。在該框架中,微軟提供了類驅動和小驅動的概念。對于驅動程序員的任務就是編寫小驅動程序。
20.1 WDM攝像頭驅動框架
20.1.1 類驅動與小驅動
20.1.2 攝像頭的類驅動與小驅動
20.1.3 編寫小驅動程序
20.1.4 小驅動的流控制
20.2 虛擬攝像頭開發實例
20.2.1 編譯和安裝
20.2.2 虛擬攝像頭入口函數
20.2.3 對STREAM_REQUEST_BLOCK的處理函數
20.2.4 打開視頻流
20.2.5 對視頻流的讀取
20.3 小結
第4篇 提高篇
 第21章 再論IRP
 本章將相關IRP的操作做了進一步的總結。首先是轉發IRP,歸納了幾種不同的方式。其次總結了創建IRP的幾種不同方法。創建IRP總的來說分為創建同步IRP和創建異步IRP。對于創建同步IRP,操作比較簡單,I/O管理器會負責回收IRP的相關內存,但是使用不夠靈活。對于創建異步IRP,操作比較復雜,程序員需要自己負責對IRP及相關內存回收,但使用十分靈活。
21.1 轉發IRP
21.1.1 直接轉發
21.1.2 轉發并且等待
21.1.3 轉發并且設置完成例程
21.1.4 暫時掛起當前IRP
21.1.5 不轉發IRP
21.2 創建IRP
21.2.1 IoBuildDeviceIoControlRequest
21.2.2 創建有超時的IOCTL IRP
21.2.3 用IoBuildSynchronousFsdRequest創建IRP
21.2.4 關于IoBuildAsynchronousFsdRequest
21.2.5 關于IoAllocateIrp
21.3 小結
第22章 過濾驅動程序
 本章主要介紹WDM和NT式過濾驅動程序開發。過濾驅動程序開發十分靈活,可以修改已有驅動程序的功能,也可以對數據進行過濾加密。另外,利用過濾驅動程序還能編寫出很多具有相當功能強大的程序來。
22.1 文件過濾驅動程序
22.1.1 過濾驅動程序概念
22.1.2 過濾驅動程序的入口函數
22.1.3 U盤過濾驅動程序
22.1.4 過濾驅動程序加載方法一
22.1.5 過濾驅動程序加載方法二
22.1.6 過濾驅動程序的AddDevice例程
22.1.7 磁盤命令過濾
22.2 NT式過濾驅動程序
22.2.1 NT式過濾驅動程序
22.2.2 NT過濾驅動的入口函數
22.2.3 掛載過濾驅動
22.2.4 過濾鍵盤讀操作
22.3 小結
 第23章 高級調試技巧
 本章將介紹一些Windows開發驅動的高級調試技巧。有一些高級驅動程序調試技巧,可以幫助程序員找出驅動程序中的Bug。另外,利用一些第三方工具軟件,也可以幫助程序員找到驅動程序中的漏洞,從而提高開發效率。
23.1 一般性調試技巧
23.1.1 打印調試信息
23.1.2 存儲dump信息
23.1.3 使用WinDbg調試工具
23.2 高級內核調試技巧
23.2.1 安裝VMWare
23.2.2 在虛擬機上加載驅動程序
23.2.3 VMWare和WinDbg聯合調試驅動程序
23.3 用IRPTrace調試驅動程序
23.4 小結

您曾經瀏覽過的商品

購物須知

大陸出版品因裝訂品質及貨運條件與台灣出版品落差甚大,除封面破損、內頁脫落等較嚴重的狀態,其餘商品將正常出貨。

特別提醒:部分書籍附贈之內容(如音頻mp3或影片dvd等)已無實體光碟提供,需以QR CODE 連結至當地網站註冊“並通過驗證程序”,方可下載使用。

無現貨庫存之簡體書,將向海外調貨:
海外有庫存之書籍,等候約45個工作天;
海外無庫存之書籍,平均作業時間約60個工作天,然不保證確定可調到貨,尚請見諒。

為了保護您的權益,「三民網路書店」提供會員七日商品鑑賞期(收到商品為起始日)。

若要辦理退貨,請在商品鑑賞期內寄回,且商品必須是全新狀態與完整包裝(商品、附件、發票、隨貨贈品等)否則恕不接受退貨。

優惠價:87 339
絕版無法訂購

暢銷榜

客服中心

收藏

會員專區