目 錄
前言
第1章 引言
1.1Windows驅動程序模型
1.1.1WDM與NT式驅動程序
1.1.2可用的驅動程序
1.1.3本書配套光盤
1.1.4設備驅動程序軟件工具
1.1.5未討論的驅動程序類型
1.2新的思維方式
1.2.1設備驅動程序環境
1.2.2術語與資源
1.3Win32程序接口
1.3.1基本I/O
1.3.2重疊的異步請求
1.3.3環境
1.3.4設備特定的限製
1.3.5驅動程序的其他Win32訪問
1.4小結
第2章 概述
2.1設備驅動程序的組成部分
2.1.1驅動程序入口點和迴調例程
2.1.2分發例程
2.1.3創建設備
2.1.4硬件資源分配
2.1.5調用其他驅動程序
2.1.6串行硬件的訪問
2.1.7訪問硬件
2.1.8硬件問題
2.1.9電源管理
2.1.10WMI
2.1.11NT事件報告
2.1.12係統綫程
2.2設備驅動程序的類型
2.2.1Windows概述
2.2.2I/O請求處理
2.2.3即插即用設備棧
2.2.4標準總綫驅動程序和類驅動
程序
2.2.5驅動程序棧舉例
2.3驅動程序選擇
2.3.1現成的驅動程序
2.3.2使用標準驅動程序
2.3.3操作係統
2.3.4分層的設備驅動程序
2.3.5單一驅動程序
2.3.6建議的和可選的功能
2.4WDM的閤理性
2.4.1一個核心模型
2.4.2復雜性
2.4.3即插即用與分層
2.4.4功能範圍
2.4.5開發環境
2.4.6開發者支持
2.5小結
第3章 設備驅動程序設計
3.1引言
3.2驅動程序設計指南
3.2.1文檔
3.2.2好的設計
3.3內核調用
3.3.1內核宏
3.3.2內核對象
3.3.3驅動程序例程名稱
3.4處理器模型
3.4.1處理器模式
3.4.2中斷級
3.5使用內存
3.5.1內存池
3.5.2旁視列錶
3.5.3其他的內存考慮
3.5.4訪問用戶應用程序內存
3.5.5DMA
3.6IRP處理
3.6.1IRP參數
3.6.2在驅動程序棧中處理IRP
3.7小結
第4章 WDM驅動程序環境
4.1係統設置
4.1.1DDK
4.1.2本書配套光盤軟件的安裝
4.1.3快捷方式
4.2實用程序
4.2.1DOS框
4.2.2計算機管理控製颱
4.2.3NTDevices小程序
4.2.4硬件嚮導
4.2.5注冊錶編輯器
4.2.6INF編輯器
4.2.7WBEM
4.2.8調試程序
4.2.9NT和Windows20凹實用程序
4.2.10本書配套光盤上的工具
4.3驅動程序目標
4.4驅動程序語言和庫
4.5好的代碼
4.6build實用程序
4.6.1makefile
4.6.2SOURCES
4.6.3makefile文件
4.6.4build目錄
4.6.5其他build步驟
4.6.6DIRS文件
4.7VC++項目
4.7.1Makefile構造環境
4.7.2MakeDrvr
4.7.3目錄
4.7.4常見任務
4.8Wdm1驅動程序代碼
4.8.1編譯器選項
4.8.2頭文件
4.8.3驅動程序進入模塊
4.8.4版本資源
4.8.5訪問注冊錶
4.8.6UNICODE_STRING結構
4.9安裝Wdml
4.10安裝詳細信息
4.10.1INF文件
4.10.2注冊錶
4.10.3Windows2000對象
4.11設備和驅動程序的管理
4.11.1添加另一個設備
4.11.2刪除設備
4.11.3更新驅動程序
4.11.4NT式驅動程序
4.12小結
第5章 設備接口
5.1設備
5.1.1設備訪問
5.1.2後續的I/O
5.2設備對象和設備擴展
5.3設備對象的創建和刪除
5.3.1創建設備
5.3.2刪除設備
5.4設備名
5.5設備接口
5.6Win32設備接口訪問
5.6.1得到設備的接口名
5.6.2運行WdmlTest
5.7小結
第6章 測試與調試
6.1測試、測試、再測試
6.2驅動程序測試
6.2.1測試所有的函數是否都工作
6.2.2Windows2000和Windows98
6.2.3多處理器
6.2.4取消I/O
6.3調試
6.4調試技術
6.4.1遞增式的開發
6.4.2檢查版本
6.4.3Windows2000還是Windows98
6.5調試工具
6.5.1Windows2000事件
6.5.2跟蹤工具
6.5.3驅動程序驗證程序
6.5.4調試程序
6.6DebugPrint
6.6.1使用DebugPrint
6.6.2使用DebugPrintMonitor
6.6.3在驅動程序中使用DebugPrint
6.7關於調試的說明
6.7.1更新驅動程序
6.7.2驅動程序在引導時失敗
6.7.3驅動程序依賴性
6.7.4未取消的IRP
6.8錯誤檢查代碼
6.9小結
第7章 分發例程
7.1分發例程IRP
7.2I/O請求包
7.2.1分發例程處理
7.2.2可重入性
7.2.3IRP處理
7.2.4IRP完成
7.3IRP結構
7.4常用的IRP參數
7.4.1“創建”IRP,IRO_MJ_CREATE
7.4.2“關閉”IRP,IRP_MJ_CLOSE
7.4.3“讀”IRP,IRP_MJ_READ
7.4.4“寫”IRP,IRP_MJ_WRITE
7.4.5IOCTLIRP,IRP_MJ_IOCTL
7.5用戶緩衝區
7.5.1緩衝I/O
7.5.2直接I/O
7.5.3其他I/O方式
7.5.4DeviceIoControl緩衝區
7.6Wdm1分發例程
7.6.1創建和關閉
7.6.2寫
7.6.3讀
7.6.4IOCTL
7.6.5係統控製
7.7小結
第8章 即插即用與設備棧
8.1設計概述
8.1.1設計目標
8.1.2即插即用係統
8.2即插即用消息
8.3設備枚舉
8.3.1固定的和可配置的設備
8.3.2枚舉
8.3.3設備樹
8.4設備棧
8.4.1PnP支持與設備棧
8.4.2設備對象
8.5上沿
8.5.1USB鍵盤例子
8.5.2功能設備對象和物理設備對象
8.5.3上沿定義
8.6小結
第9章 即插即用的實現
9.1實現即插即用
9.1.1添加和刪除設備
9.1.2基本的PnP處理程序
9.1.3沿設備棧嚮下傳遞不支持
的IRP
9.1.4PnP狀態和消息
9.1.5狀態標誌
9.1.6保持IRP
9.1.7打開的句柄
9.1.8處理PnPIRP的時間
9.1.9實現資源分配
9.2測試Wdm2
9.3其他PnPIRP
9.3.1IRP_MN_DEVICE_USAGE_
NOTIFICATION
9.3.2IRP_MN_FILTER_RESOUR CE_
REQUIREMENTS
9.3.3IRP_MN_QUERY_BUS_
INFORMATION
9.3.4IRP_MN_QUERY_
CAPABILITIES
9.3.5IRP_MN_QUEPY_DEVICE_
RELATIONS
9.3.61RP_MN_QUERY_DEVICE_
TEXT
9.3.7IRP_MN_QUERY_ID
9.3.8IRP_MN_QUERY_
INTERFACE
9.3.9IRP_MN_QUERY_PNP_DEVICI
STATE
9.3.101RP_MN_QUERY_RESOURCE
REQUIREMENTS
9.3.11IRP_ MN_QU ERY_
RESOURCES
9.3.12IRP_MN_READ_CONFIG
9.3.131RP_MN_SET_L OC K
9.3.14IRP_MN_WRITE_CONFIG
9.4PnP通知
9.4.1Win32PnP通知
9.4.2設備驅動程序PnP通知
9.4.3通知請求驅動程序交互
9.5高級的即插即用
9.5.1總綫驅動程序
9.5.2發送PnPIRP
9.5.3設備屬性
9.6小結
第10章 電源管理
10.1電源概述
10.1.1ACPI
10.1.2Win32電源管理
10.1.3Wdm2Power應用程序
10.1.4電池小類驅動程序
10.2係統電源策略
10.3電源IRP
10.4處理電源IRP
10.4.1處理設備電源IRP
10.4.2處理係統電源IRP
10.4.3不處理電源IRP
10.5設備電源策略主
10.6處理“設置電源”IRP
10.6.1設置係統電源狀態
10.6.2設置設備電源狀態
10.6.3SetPowerState
10.7分發例程的電源處理
10.8測試Wdm2電源功能
10.9設備功能
10.10高級電源管理
10.10.1喚醒
10.10.2電源順序
10.10.3停止係統關閉事件
10.10.4電源通知
10.10.5檢測係統電源狀態變化
10.10.6 WMI支持
10.11小結
第11章 安裝
11.1WDM驅動程序的安裝過程
11.2INF文件
11.3標準節
11.4 INF文件的節層次結構
11.4.1Wdm1Free.INF
11.4.2InfEdit
11.5跨平颱和WDMINF文件
11.5.1在Windows2000中安裝Wdm1
11.5.2Windows2000服務注冊錶項
11.6查找驅動程序
11.6.1硬件ID
11.6.2兼容ID
11.6.3重復枚舉
11.7NT式驅動程序的安裝
11.7.1安裝過程
11.7.2驅動程序的裝入順序
11.7.3NT4控製麵闆Devices小程序
11.7.4Windows2000 設備管理
11.7.5Windows98設備管理
11.7.6REG文件
11.8在Windows98中安裝NT式驅動
程序
11.9小結
第12章 WMI
12.1概述
12.1.1 WBEM模型
12.1.2WDM提供者
12.2一個WMI驅動程序
12.2.1WMI構造環境
12.2.2注冊為WMI數據提供者
12.2.3處理係統控製IRP
12.2.4QueryWmiRegInfo處理程序
12.2.5QueryWmiDataBlock處理
程序
12.2.6SetWmiDataBlock處理程序
12.2.7SetWmiDataItem處理程序
12.2.8ExecuteWmiMethod處理程序
12.2.9觸發WMI事件
12.3WMI運行
12.4小結
第13章 事件的報告
13.1概述
13.2消息文件
13.3注冊為事件源
13.4 事件的産生
13.5Wdm3事件的測試
13.6小結
第14章 DebugPrint
14.1設計規範
14.2設計實現
14.3測試驅動程序代碼
14.3.1係統綫程
14.3.2事件
14.3.3同步
14.3.4産生跟蹤事件
14.3.5鏈錶
14.3.6最後的代碼
14.4DebugPrint驅動程序
14.4.1設計
14.4.2DebugPrint設備
14.4.3讀隊列
14.4.4取消IRP
14.4.5寫算法
14.4.6讀算法
14.5DebugPrintMonitor
14.5.1設計
14.5.2Win32工作者綫程
14.5.3DebugPrint_Event類
14.5.4Win32重疊I/O
14.6小結
第15章 WdmIo和PHDIo驅動程序
15.1Win32接口
15.1.1IOCTL
15.1.2命令
15.2LPT打印機驅動程序的應用程序
15.2.1並行端口
15.2.2WdmoIoTest
15.2.3PHDIoTest
15.2.4發齣命令
15.2.5使用中斷驅動的I/O寫數據
15.2.6使用中斷驅動的I/O讀數據
15.3測試WdmIo
15.3.1安裝WdmIo
15.3.2LogConfig節
15.3.3運行WdmIoTest
15.4測試PHDIo
15.4.1安裝PHDIo
15.4.2運行PHDIoTest
15.5WdmIo和PHDIo的分析
15.5.1使用哪一個
15.5.2缺陷
15.6小結
第16章 硬件I/OIRP的排隊
16.1硬件訪問
16.2IRP隊列
16.2.1設備隊列
16.2.2StartI0例程
16.3命令的處理
16.4取消排隊的IRP
16.4.1排隊IRP的取消
16.4.2WdmIoIRP取消策略
16.4.3另一種取消策略
16.5“清理”IRP的處理
16.6測試、取消和清理
16.7補充設備隊列
16.8小結
第17章 中斷驅動的I/O
17.1中斷處理
17.1.1中斷的性質
17.1.2連接到中斷
17.2WdmIo讀與寫
17.3中斷處理程序
17.4延遲過程調用
17.4.1使用基本的DPC
17.4.2自定義DPC
17.5定時器
17.5.11秒間隔定時器
17.5.2WdmIo超時
17.5.3自定義定時器
17.6小結
第18章 NT硬件
18.1NT式驅動程序的構造
18.1.1DDK問題
18.1.2編譯環境
18.1.3NT式驅動程序結構
18.2設備的創建與刪除
18.3資源分配
18.4資源轉換
18.5資源的查找
18.5.1自動檢測的硬件
18.5.2查詢可配置總綫
18.5.3最後的資源查找技術
18.6小結
第19章 WDM係統驅動程序
19.1客戶驅動程序的編寫
19.2過濾驅動程序
19.3NT層次
19.4小結
第20章 通用串行總綫
20.1設備類
20.2概述
20.2.1WindowsUSB驅動程序接口
20.2.2傳輸類型
20.3USB低級結構
20.3.1USB設備
20.3.2USB信號
20.3.3總綫信號
20.3.4低層協議
20.3.5電源
20.4USB設備框架
20.4.1總綫枚舉
20.4.2標準控製事務
20.4.3描述符
20.4.4驅動程序安裝
20.4.5USB類
20.4.6新增功能
20.5客戶驅動程序設計
20.5.1端點類型選擇
20.5.2等時設備
20.6小結
第21章 USB驅動程序接口
21.1USB客戶驅動程序設計
21.1.1UsbKbd的使用
21.1.2UsbKbd安裝
21.1.3頭文件和庫
21.2USBDI的IOCTL
21.2.1URB
21.2.2USBDI的調用
21.2.3多個USBDI調用
21.3訪問USB
21.3.1初始化USB設備
21.3.2發齣URB
21.3.3選擇接口
21.3.4其他初始化
21.3.5取消配置的選擇
21.3.6中斷傳輸
21.3.7控製傳輸
21.3.8其他問題
21.4UsbKbd的測試
21.5USBDI結構參考
21.6USBDIURB參考
21.6.1URB設置功能
21.6.2URB傳輸功能
21.6.3URB缺省管道功能
21.6.4URB等時幀功能
21.7小結
第22章 人工輸入設備模型
22.1HID概述
22.2HID模型
22.2.1報告
22.2.2用法
22.2.3獲取HID功能
22.3HID模型錶示
22.3.1HID描述符
22.3.2設備屬性
22.3.3報告描述符
22.6小結
第23章 HID客戶
23.1HID類驅動程序
23.1.1HID類驅動程序特徵
23.1.2WindowsHID客戶程序
23.1.3頭文件
23.1.4HIDUSB小驅動程序
23.1.5USB啓動設備
23.2用戶態HID客戶程序
23.2.1查找HID設備
23.2.2讀取HID功能
23.2.3讀取輸入報告
23.2.4發送輸齣報告
23.2.5其他用戶態HID客戶函數
23.2.6運行HidKbdUser
23.3內核態HID客戶程序
23.3.1客戶程序類型
23.3.2PnP通知
23.3.3HidKbd設備
23.3.4讀取HID功能
23.3.5HidKbd設備的打開和關閉
23.3.6數據的讀寫
23.3.7其他HID類IOCTL
23.4小結
附錄A 信息資源
附錄B PC99
附錄C 直接存儲器訪問
附錄D 詞匯錶
· · · · · · (
收起)