《竹林蹊徑:深入淺出windows驅動開發》是2011年電子工業出版社出版的圖書,作者是張佩。
基本介紹
- 書名:竹林蹊徑:深入淺出windows驅動開發
- 作者:張佩
- ISBN:9787121125553
- 類別:計算機/作業系統
- 頁數:506頁
- 出版社:電子工業出版社
- 出版時間:2011年3月1日
- 裝幀:平裝
- 開本:16開
內容簡介,圖書目錄,
內容簡介
《竹林蹊徑:深入淺出windows驅動開發》是作者根據多年的工作學習經驗,總結的第一手驅動開發資料。但它不是一本深刻到最底層的原理性的書,有這種預期的讀者會失望。本書更多的是經驗之談,一些實踐中的小發現小意外,頗為書中內容添彩。 《竹林蹊徑:深入淺出windows驅動開發》的特色之一,是對WDF框架做了較多的切入。本書第一個主要內容是(第3~7章)圍繞WDF而展開討論,側重點各有不同。第3章以框架為討論的中心;第4、5兩章以WDF框架開發USB和1394驅動;第6章講述核心C++編程,也以WDF框架為藍本;第7章講述WDF驅動的測試和調試。 第二個主要內容是關於音視頻驅動開發(第10~11章)。音視頻驅動包括AVStream架構,本書做了較詳細的闡述。第10章講述使用AVStream小連線埠架構,第11章講述ASIO音頻驅動開發。 第三個主要內容是關於設備驅動安裝(第12~14章)。第12章講系統安裝模組,從總體角度闡述系統和設備驅動如何配合完好地進行工作;第13章講述INF安裝檔案的細節,包括各個域的作用,以及諸多安裝指令的使用。第14章講如何編寫驅動安裝軟體。 剩餘的一些章節,分別是關於驅動入門(第1、2章)、Windbg調試命令(第8章)、核心同步(第9章)等內容。
讀者對象:本書適合一般入門級核心程式設計師,對WDF有興趣,準備開發USB或1394設備驅動者,本書尤其有用。本書對於入行較久,經驗豐富的程式設計師,也具有一定的參考價值。
圖書目錄
第1章 Hello World驅動
1.1 從Hello World開始
1.1.1 HelloDRIVER
1.1.2 代碼解釋
1.1.3 驅動程式的編譯和安裝
1.1.4 查看我們的驅動
1.2 虛擬環境
1.2.1 使用虛擬環境進行驅動開發
1.2.2 使用VMware虛擬機
1.2.3 目標機設定
1.2.4 Virtual PC虛擬機
1.3 小結
第2章 商業驅動開發技術
2.1 建立開發調試環境
2.1.1 SVN環境
2.1.2 創建工程,導入SVN
2.1.3 建立符號伺服器
2.1.4 用符號調試
2.2 64位驅動開發技術
2.2.1 64位驅動編寫技術
2.2.2 32位應用程式與64位驅動混合模式
2.3 驅動程式的發布與測試
2.3.1 驅動程式簽名
2.3.2 驅動程式測試
2.3.3 WHQL
2.4 小結
第3章 WDF概述
3.1 主要特點
3.2 框架視圖
3.3 兼容性
3.4 對象模型
3.4.1 對象和句柄
3.4.2 引用計數
3.4.3 上下文空間
3.4.4 PME接口
3.4.5 DDI接口
3.4.6 父子關係
3.4.7 對象同步
3.5 驅動對象和設備對象
3.5.1 驅動對象
3.5.2 驅動入口DriverEntry
3.5.3 設備對象
3.5.4 創建設備對象
3.5.5 設備棧
3.6 IO模型
3.6.1 IO目標對象
3.6.2 IO目標對象的細節
3.6.3 安全的緩衝區
3.6.4 記憶體對象(一)
3.6.5 記憶體對象(二)
3.6.6 框架和IO請求
3.6.7 更詳細的處理流程
3.6.8 IO請求參數
3.6.9 佇列
3.6.10 創建IO請求
3.7 PNP和電源模型
3.8 小結
使用WDF框架開發USB驅動,方便且簡單。本章首先總體上從硬體和軟體兩個方面介紹USB相關知識點,包括設備的電氣特性、匯流排結構、USB驅動類型以及類驅動。編程方面,從USB設備初始化、數據操作以及設備控制等幾個方面來講解,透徹並且翔實。
第4章 WDF USB設備驅動開發
4.1 USB設備硬體結構
4.1.1 主從結構
4.1.2 硬體拓撲
4.1.3 USB中斷
4.2 USB軟體結構
4.2.1 匯流排驅動
4.2.2 系統類驅動
4.2.3 功能驅動
4.2.4 父驅動與混合設備
4.2.5 過濾驅動
4.2.6 USB驅動棧、設備棧
4.3 核心開發
4.3.1 設備驅動
4.3.2 入口函式
4.3.3 USB描述符
4.3.4 描述符介紹
4.3.5 匯總舉例
4.3.6 讀取描述符
4.3.7 初始化
4.3.8 設備初始化函式
4.3.9 創建設備對象
4.3.10 設備命名、符號連結
4.3.11 啟動設備
4.3.12 創建佇列
4.3.13 停止設備/反初始化
4.4 數據I/O操作
4.4.1 USB控制命令
4.4.2 構造並傳送控制命令
4.4.3 讀USB中斷連線埠
4.4.4 連續讀操作
4.4.5 數據處理函式
4.4.6 中斷連線埠的效率
4.4.7 讀/寫批量連線埠
4.5 設備控制
4.5.1 關於I/O Target對象
4.5.2 獲取USB版本
4.5.3 管道重置
4.5.4 設備重置
4.5.5 管道中止與終止
4.6 用戶程式
4.6.1 核心讀/寫
4.6.2 控制命令
4.7 小結
第5章 WDF 1394驅動開發
5.1 1394一席談
5.1.1 版本情況
5.1.2 電源特性
5.1.3 1394卡
5.1.4 匯流排拓撲
5.2 傳送請求
5.2.1 同步方式
5.2.2 異步方式
5.2.3 對WDM的回憶
5.3 匯流排重置與計數
5.3.1 匯流排重置
5.3.2 設定重置回調
5.3.3 計數更新
5.4 PNP操作
5.5 異步通信
5.5.1 地址範圍
5.5.2 異步讀
5.5.3 異步寫
5.5.4 異步鎖請求
5.5.5 數據流
5.6 等時通信
5.6.1 申請頻寬
5.6.2 釋放頻寬
5.6.3 等時通道
5.6.4 資源句柄
5.6.5 緩衝區掛載
5.6.6 緩衝區解掛
5.6.7 開始傳輸
5.6.8 停止傳輸
5.6.9 其他等時操作
5.7 其他操作
5.7.1 設備配置
5.7.2 獲取控制器信息
5.7.3 速度信息
5.7.4 廠商自定義命令
5.8 安裝與測試
5.8.1 1394虛擬設備
5.8.2 創建虛擬設備
5.8.3 示例代碼
5.8.4 安裝與測試
5.9 小結
第6章 核心驅動C++編程
6.1 驅動中的類
6.1.1 一個簡單的例子
6.1.2 new/delete
6.1.3 extern "C"
6.1.4 全局/靜態變數
6.1.5 棧的憂慮
6.2 類封裝的驅動程式
6.2.1 尋找合適的存儲所
6.2.2 類方法與事件函式
6.2.3 KMDF驅動實現
6.2.4 WDM驅動實現
6.3 多態
6.3.1 基類、子類
6.3.2 實現多態
6.3.3 測試
6.4 小結
第7章 WDF驅動測試
7.1 WDF錯誤
7.1.1 實例分析
7.1.2 USB錯誤
7.2 WDF擴展調試命令
7.3 WDFTester
7.3.1 WDFFiTester
7.3.2 使用
7.3.3 WDFCallTracer
7.4 WDFVerifier
7.4.1 識別KMDF驅動
7.4.2 使用與介紹
7.5 小結
第8章 調試命令詳解
8.1 概述
8.1.1 尋求幫助
8.1.2 DML語言
8.1.3 基本信息
8.1.4 基本設定
8.1.5 格式化顯示
8.1.6 開始調試
8.2 符號與源碼
8.2.1 模組列表
8.2.2 模組信息
8.2.3 符號路徑
8.2.4 符號載入
8.2.5 符號搜尋
8.2.6 源碼命令
8.3 進程與執行緒
8.3.1 進程命令
8.3.2 執行緒命令
8.3.3 異常與事件
8.3.4 局部變數
8.3.5 顯示類型
8.4 斷點
8.4.1 軟體斷點
8.4.2 硬體斷點
8.4.3 其他操作
8.5 記憶體命令
8.5.1 查看記憶體
8.5.2 記憶體信息
8.5.3 其他命令
8.6 小結
第9章 核心同步
9.1 關於核心同步
9.2 核心事件同步
9.2.1 原理
9.2.2 用戶程式
9.2.3 核心實現
9.3 IRP同步
9.3.1 用戶程式
9.3.2 核心實現
9.4 WMI同步
9.5 數據緩衝區同步
9.6 反向調用
9.7 小結
第10章 音頻驅動開發
10.1 簡介
10.1.1 音頻模組架構
10.1.2 系統中的音頻設備
10.2 AVStream對象
10.2.1 設備對象
10.2.2 Filter工廠和Filter對象
10.2.3 Pin工廠和Pin對象
10.2.4 Node對象與Connection結構體
10.3 AVStream描述符
10.3.1 描述符簡介
10.3.2 描述符示例
10.3.3 分發函式表
10.3.4 自控表
10.3.5 自控表示例
10.4 代碼講解
10.4.1 入口函式
10.4.2 設備分發函式
10.4.3 Filter與Pin分發函式
10.4.4 創建和刪除
10.4.5 數據處理
10.4.6 數據格式
10.5 自控表函式
10.5.1 事件函式
10.5.2 屬性函式
10.5.3 方法函式
10.5.4 用戶接口
10.6 硬體操作
10.6.1 數據DMA
10.6.2 AVStream中的DMA實現
10.6.3 談談ISR
10.7 安裝與測試
10.7.1 安裝
10.7.2 測試工具
10.8 小結
第11章 ASIO虛擬音效卡
11.1 引言
11.2 關於ASIO
11.3 ASIO用戶驅動
11.3.1 COM接口
11.3.2 安裝與卸載
11.3.3 IASIO接口
11.3.4 技術核心
11.3.5 計算延遲
11.4 核心驅動實現
11.4.1 同步
11.4.2 原理
11.4.3 實現
11.5 ASIO音頻軟體
11.6 小結
第12章 設備驅動安裝入門
12.1 基礎知識預介
12.1.1 設備類型
12.1.2 設備實例ID
12.1.3 驅動載入和安裝
12.2 安裝模組
12.2.1 核心PNP管理器
12.2.2 用戶PNP管理器
12.2.3 安裝接口函式(Setup API)
12.2.4 配置管理器接口(CfgMgr API)
12.2.5 類安裝器(Class Installers)
12.2.6 類協安裝器(Class Co-Installers)
12.2.7 設備協安裝器(Device Co-Installers)
12.2.8 驅動包(Driver Package)
12.2.9 驅動倉庫(Driver Store)
12.2.10 設備管理器(Device Manager)
12.2.11 安裝程式
12.2.12 新設備嚮導
12.2.13 添加硬體嚮導
12.2.14 驅動安裝器(Driver Installer)
12.3 重要問題
12.3.1 尋找和選擇
12.3.2 32位與64位系統兼容
12.3.3 系統重啟
12.4 安裝模式
12.4.1 示例1:客戶端模式
12.4.2 示例2:伺服器模式
12.5 安裝器編程
12.5.1 DIF碼
12.5.2 處理流程
12.5.3 工程示例
12.5.4 註冊
12.6 小結
第13章 深入解析INF檔案
13.1 概述
13.1.1 域
13.1.2 指令
13.1.3 多系統
13.2 註冊表指令
13.2.1 縮寫根鍵
13.2.2 軟體鍵
13.2.3 硬體鍵
13.2.4 AddReg
13.2.5 DelReg
13.2.6 BitReg
13.3 檔案操作指令
13.3.1 CopyFiles
13.3.2 DelFiles
13.3.3 RenFiles
13.4 服務指令
13.4.1 AddService
13.4.2 DelService
13.5 基本域
13.5.1 版本域
13.5.2 檔案域
13.5.3 默認安裝域
13.5.4 控制域
13.5.5 字元串域
13.6 設備類安裝域
13.6.1 主域
13.6.2 服務子域
13.7 接口類安裝域
13.8 廠商/產品域
13.8.1 廠商域
13.8.2 產品域
13.9 設備安裝域
13.9.1 硬體子域
13.9.2 協安裝器子域
13.9.3 接口子域
13.9.4 廠商默認配置子域
13.9.5 邏輯優先配置子域
13.10 ChkInf介紹
13.11 小結
第14章 設計驅動安裝程式
14.1 驅動包
14.1.1 安裝方式
14.1.2 安裝驅動包
14.1.3 卸載驅動包
14.2 驅動更新
14.2.1 設備已連線
14.2.2 設備未連線
14.2.3 枚舉系統設備
14.3 分析INF檔案
14.3.1 函式介紹
14.3.2 列印設備ID
14.4 MyDrvInst介紹
14.5 製作軟體安裝包
14.5.1 視圖介紹
14.5.2 我們的工程
14.5.3 編譯執行
14.6 小結
附錄A CY001 USB開發板
附錄B VisualKD + VMWare實現單機核心調試