WINDOWS 設備驅動程式技術內幕

DLL需要應用程式2.11驅動程式的調試工具2.12總結第 dows的執行環境5.2.1管理程式5.2.2 dows下DMA的DOS應用程式11.3

內容介紹

Wndows設備驅動程式技術內幕一書,詳細講解了設備驅動程式的原理及實現方法,並例舉了大量的程式實例,便於讀者學習和掌握。
本書分為三個部分。第一部分主要講怎樣用DOS的方法寫設備驅動程式,該部分的驅動程式被封裝為DLL形式。第二部分講怎樣寫Windows的虛擬設備驅動程式(Vth)。第三部分介紹Wndows系統下標準模式設備驅動程式的編寫方法。
本書是一一本技術性較強的工具書,它主要針對有一定計算機基礎的程式開發者和硬體設計者,同時也適應需要進一步了解計算機套用的讀者。
現在市面上關於Windows編程的書很多,但是關於Windows設備驅動程式編程的書很少,而關於虛擬設備驅動程式的編程就更少了。在工作中往往需要對標準的硬體設備進行操作,有時還需要使用設備驅動程式對物理設備進行操作,這就需要編程人員掌握這些方面的知識,能夠設計出自己需要的設備驅動程式。
本書主要介紹了3種設備驅動程式的編寫方法。全書分為3部分,每一部分先介紹一些基礎知識,再進行詳細內容的講述。各部分的內容都是循序漸進的,便於學習和掌握。
第一部分主要講述怎樣用DOS的方法編寫設備驅動程式。該部分的驅動程式被封裝為DLL形式,可以被Windows應用程式訪問,但不能被DOS應用程式訪問。
第二部分講述怎樣編寫Windows的虛擬設備驅動程式(VxD)。這些虛擬設備驅動程式作為被託管的Windows核心成員運行,可以“到任何地方做任何事”,最終可以知道Windows是怎樣實現虛擬機的。它們的結構十分直觀,便於了解和掌握。當運行環境變得複雜時,VxD本身和基於DLL的驅動程式同樣簡單。
第三部分介紹Windows系統下標準模式設備驅動程式的編寫。這一部分講述了怎樣編寫一個高質量的驅動程式,Windows程式怎樣與DOS的TSR進行通信,在Windows中怎樣用DMA進行工作,以及其他一些高級套用。
本書是一本技術性較強的工具書,它主要適用於有一定計算機基礎的程式開發者和硬體設計者,同時也適應於需要進一步了解計算機套用的讀者。

作品目錄

第1章概述
1.1本書的讀者對象
1.1.1哪些人應該讀這本書
1.1.2哪些人不能讀這本書
1.2套用平台
1.3本書的結構
1.4學習的方法
1.5需要的工具
第一部分 驅動程式基礎
第2章基礎知識
2.1驅動程式的定義
2.2特權封裝
2.3非特權封裝
2.4 DLL與靜態庫的比較
2.5為什麼要把驅動程式封裝為DLL
2.6應用程式與DLL比較
2.6.1 DLL和棧段
2.6.2 DLL和數據段
2.6.3 DLL和動態分配記憶體的主權
2.6.4 DLL的初始化和終止
2.7 DLL的函式要求
2.8框架驅動程式
2.9建立框架驅動程式
2.10 DLL需要應用程式
2.11驅動程式的調試工具
2.12總結
第 3 章與硬體相連線
3.1端日映射和記憶體映射的比較
3.1.1訪問瑞口映射硬體
3.1.2訪問記憶體映射硬體
3.1.3兩步驟地址轉換過程
3.1.4對1 MB以下的設備映射使用預定義的選擇器
3.2連線埠映射例子程式
3.2.1例子程式 3.1
3.2.2例子程式 3.2
3.2.3例子、序3.3
3.2.4例子程式 3.4
3.2.5例子程式 3.5
3.3驅動程式設計概述
3.4驅動程式例子
3.5記憶體映射的方案
3.6先進記憶體的問題
3.7設備映射大於1 MB需要DPMI服務
3.8總結
第4章中斷方式設備驅動程式
4.1 Windows虛擬記憶體
4.2 實現方法
4.3什麼是可以丟棄的
4.4為什麼整理記憶體
4.5安全中斷驅動程式記憶體需求
4.5.1固定的原因
4.5.2不可丟棄的原因
4.5.3頁面鎖定的原因
4.6中斷安全的代碼和數據
4.6.1 FIXED何時是真正固定的
4.6.2動態分配中斷安全的緩衝區
第二部分 虛擬驅動程式簡介
第5章Windows的虛擬世界
5.1虛擬機是什麼
5.2 Windows的執行環境
5.2.1管理程式
5.2.2 Wndows應用程式
5.2.3 DOS應用程式
5.3 Wndows地址空間
5.3.1線性地址空間
5.3.2線性地址空間和物理地址空間
5.3.3邏輯、線性和物理地址空間
5.4這意味著什麼
5.5實現虛擬機
5.5.1捕獲I/O操作
5.5.2捕獲記憶體操作
5.5.3捕獲中斷和異常事件
5.6 V86模式簡介
5.7總結
第6章虛擬驅動程式簡介
6.1 VxD的基本結構
6.2設備描述器部件
6.3支持數據結構
6.4事件的標誌信息
6.5保護模式初始化
6.6創建VxD的工具
6.7總結
第7章設備選優VxD
7.1 VMM和處理器的異常事件
7.2連線埠所有權
7.2.1 PORTTRAP(連線埠訪問)程式例子
7.2.2仿真多位元組I/O
7.2.3安裝和使用PORTTRAP
7.3例子PAGETRAP
7.3.1初始化例程
7.3.2錯誤處理器例程
7.3.3結束處理器
7.3.4測試PAGETRAP
7.4總結
第8章服務硬體中斷的VxD
8.1中斷和VMM
8.1.1中斷反射的過程
8.1.2哪個VM獲得中斷
8.1.3擴展模式中的中斷執行時間
8.2 VxD通信
8.2.1傳遞參數
8.2.2從應用程式調用VxD的API
8.2.3硬體中斷處理VxD
8.2.4 API調用服務
8.3硬體中斷反射VxD
8.3.1目調Mast
8.3.2目調Hw_Int
8.3.3回調EOI
8.3.4回調Virt_Int和IRET
8.4總結
第三部分特殊技術
第9章第0層處理器縮短回響時間
9.1替換 VxD
9.1.1安裝
9.1.2初始化BIMODAL_INT STRUC
9.2 註冊處理器
9.2.1 VPICD初始化欄位
9.1.2處理中斷
9.3編寫處理器程式
9.3.1為什麼沒有堆疊變數
9.3.2一種更糟的情況
9.4總結
第10章雙模態驅動程式
10.1新的雙模態驅動程式綜述
10.1.1新的雙模態驅動程式代碼
10.1.2回調細節
10.2總結
第11章編寫使用DMA的驅動程式
11.1 DMA緩衝區的要求
11.1.1物理上毗鄰
11.1.2固定的和頁面鎖定
11.1.3定位在64KB的邊界上
11.1.4怎樣分配DMA緩衝區
11.2 Windows下DMA的DOS應用程式
11.3 DMA的Wndows應用程式可使用這個知識
11.3.1使用VDS緩衝區更好
11.3.2最佳的解決方案――助手VxD
11.4 DMABUF的API
11.5使用助手VxD――USEAPI.C
11.6總結
第12章使用實模式服務
12. 1關於DOS設備驅動程式
12.1.1對IOCTL的專門處理
12.1.2介紹DOS TSR
12.1.3通過緩衝區傳遞數據
12.1.4 TSR調用Windows應用程式
12.2增強模式中的回調
12.3編程細節
12.4總結
第13章編寫標準模式的驅動程式
13.1基本概念
13.1.1硬體的連線埠映射
13.1.2記憶體映射的硬體
13.1.3標準模式中的選擇器
13.2標準模式中的中斷
13.3從保護模式和實模式中獲取中斷
13.4分離實模式控制器和保護模式控制器
13.5總結
第14章定時器和軟體中斷
14.1定時器
14.1.1使用SetTimer()
14. 1.2調用INT 1CH和INT 8H
14.1.3不要依賴於每秒18.2次
14.1.4使用timeSetEvent()
14.1.5使用VxD
14.1.6不要使用GetTickCount()
14.1.7使用BIOS的周期計數或者是timeGetTime()
14.2軟體中斷
14.2.1連線到軟體中斷
14.2.2用VxD捕獲軟體中斷
14.3編程細節
14.4總結

相關詞條

熱門詞條

聯絡我們