Windows WDM設備驅動程式開發指南

t驅動程式14.4.1設計14.4.2DebugPrin itor14.5.1設計14.5.2Win HID客戶23.1HID類驅動程式23.1.1HID類驅動程式特徵23.1.2Win

內容介紹

本書主要介紹Windows98和Windows2000新的驅動程式模型(WDM)。描述了WDM
設備驅動程式的結構、功能和開發方法;通過實際的設備驅動程式例子,說明WDM設備
驅動程式的實現技術、測試和調試方法;介紹了本書提供的一個調試軟體DebugPrint;
說明如何在客戶驅動程式中使用USB驅動程式接口(USBDI)訪問USB設備,以及如何利用
HID類驅動程式以標準方法訪問多種輸入設備。

作品目錄

目 錄
前言
第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 辭彙表

相關詞條

熱門詞條

聯絡我們