導航:首頁 > 文檔加密 > 驅動開發技術詳解pdf

驅動開發技術詳解pdf

發布時間:2022-08-12 04:31:53

1. 嵌入式Linux設備驅動開發詳解的目錄

第1章嵌入式系統與驅動程序1
本章目標1
1.1嵌入式系統概述1
1.1.1嵌入式系統的概念1
1.1.2嵌入式系統的特點2
1.1.3嵌入式系統的體系結構2
1.2嵌入式處理器介紹4
1.2.1嵌入式處理器分類4
1.2.2ARM概述5
1.2.3ARM系列晶元簡介5
1.3嵌入式操作系統介紹7
1.3.1主流嵌入式操作系統7
1.3.2嵌入式系統的發展狀況8
1.3.3嵌入式Linux介紹8
1.3.4嵌入式系統開發環境的建立9
1.3.5嵌入式軟體開發10
1.4嵌入式Linux驅動程序12
1.4.1嵌入式Linux的內核空間和用戶空間12
1.4.2嵌入式Linux的文件系統12
1.4.3嵌入式Linux的設備管理14
1.4.4嵌入式Linux的驅動程序16
1.5知識索引20
1.6思考與練習21
第2章簡單的字元設備驅動程序23
本章目標23
2.1嵌入式Linux字元設備的驅動程序結構23
2.1.1嵌入式Linux驅動程序常用的頭文件24
2.1.2File_operations結構體24
2.1.3字元設備驅動程序的入口25
2.1.4驅動程序的設備注冊26
2.2設備驅動程序中的具體問題27
2.2.1I/O埠28
2.2.2內存操作29
2.2.3中斷處理29
2.3LED的驅動程序實例及測試30
2.3.1LED I/O埠設置30
2.3.2LED硬體電路設計32
2.3.3LED驅動程序設計33
2.3.4LED測試程序設計36
2.4嵌入式Linux中斷處理驅動程序及測試37
2.4.1中斷處理過程37
2.4.2中斷向量表39
2.4.3中斷的處理模式39
2.4.4中斷的優先順序40
2.4.5中斷的嵌套40
2.4.6中斷源的擴展40
2.4.7中斷控制寄存器的設置41
2.5按鍵中斷的驅動程序實例45
2.5.1按鍵中斷的電路設計45
2.5.2按鍵中斷的驅動程序設計45
2.6知識索引48
2.7思考與練習49
第3章數字顯示驅動程序50
本章目標50
3.1數字顯示器50
3.1.1數碼管簡介50
3.1.2數碼管的分類51
3.1.3數碼管顯示原理51
3.2數碼管顯示電路的硬體設計52
3.2.1解碼器的使用52
3.2.2數碼管的驅動方式53
3.2.3串/並變換的解碼設計55
3.3數碼管驅動程序實例56
3.3.1驅動程序的初始化和卸載模塊56
3.3.2文件操作結構模塊57
3.3.3數碼管的打開模塊57
3.3.4數碼管的讀寫模塊58
3.3.5數碼管的I/O控制模塊58
3.3.6數碼管的退出模塊58
3.3.7驅動程序的模塊載入和卸載59
3.4數碼管顯示電路測試程序設計60
3.4.1數碼管測試設計60
3.4.2數碼管測試程序60
3.4.3數碼管測試效果61
3.5知識索引61
3.6思考與練習62
第4章鍵盤驅動程序63
本章目標63
4.1鍵盤介面概述63
4.1.1鍵盤的分類63
4.1.2鍵盤的防抖65
4.1.3鍵盤的掃描65
4.1.4鍵盤的緩沖演算法67
4.2鍵盤的驅動設計實例67
4.2.1鎖存器和緩沖器擴展鍵盤67
4.2.2鎖存器和緩沖器的介面68
4.2.3鎖存器和緩沖器擴展鍵盤驅動程序設計69
4.2.4鎖存器和緩沖器擴展鍵盤測試程序設計71
4.3智能控制晶元HD7279擴展鍵盤72
4.3.1HD7279的電路設計72
4.3.2HD7279的指令介紹73
4.3.3HD7279的串列介面74
4.3.4HD7279的驅動程序設計75
4.3.5HD7279的測試程序設計84
4.4知識索引85
4.5思考與練習85
第5章A/D驅動程序86
本章目標86
5.1A/D轉換的過程86
5.1.1采樣和保持86
5.1.2量化和編碼88
5.1.3ADC的分類89
5.2A/D轉換器的基本原理89
5.2.1逐次逼近型A/D轉換器89
5.2.2雙積分型A/D轉換器90
5.2.3V/F和F/V型轉換器93
5.2.4其他A/D轉換器95
5.3A/D轉換器介面技術97
5.3.1ADC的主要參數及意義97
5.3.2ADC的電路選擇方法98
5.3.3ADC實際應用中的問題99
5.4S3C2410 A/D轉換驅動設計實例99
5.4.1S3C2410的A/D轉換電路99
5.4.2S3C2410X的A/D轉換控制寄存器100
5.4.3S3C2410X的A/D轉換數據寄存器101
5.4.4S3C2410X中A/D轉換驅動程序的設計102
5.4.5S3C2410X中A/D轉換測試程序的設計105
5.5知識索引106
5.6思考與練習107
第6章D/A驅動程序108
本章目標108
6.1D/A的原理介紹108
6.1.1D/A轉換的概念及基本原理108
6.1.2電子模擬開關109
6.1.3D/A轉換器的基本結構110
6.1.4D/A轉換的靜態參數114
6.1.5D/A轉換的動態參數115
6.2D/A轉換的硬體電路設計116
6.2.1D/A轉換的介面技術116
6.2.2D/A轉換晶元介紹117
6.2.3D/A轉換的電路設計118
6.3D/A轉換器的驅動程序實例118
6.3.1D/A驅動程序中的宏定義118
6.3.2D/A的模塊載入118
6.3.3D/A轉換器的文件操作模塊119
6.3.4D/A轉換器的讀寫控制模塊120
6.3.5D/A轉換器的打開、退出模塊120
6.4測試程序的設計120
6.4.1D/A測試程序中的宏定義121
6.4.2D/A測試程序的主函數121
6.4.3D/A測試程序中的功能函數122
6.4.4D/A測試程序中的功能列印函數123
6.4.5D/A測試程序中的波形生成函數123
6.4.6D/A測試程序的效果124
6.5知識索引125
6.6思考與練習125
第7章LCD驅動程序126
本章目標126
7.1LCD顯示器概述126
7.1.1液晶126
7.1.2LCD顯示屏的背光127
7.1.3LCD顯示器的分類127
7.1.4LCD的顯示原理127
7.1.5LCD的驅動方式130
7.1.6LCD的常用指標131
7.2LCD的顯示介面131
7.2.1灰度STN的時序132
7.2.2彩色STN的時序133
7.2.3TFT的時序134
7.3嵌入式處理器的LCD控制器136
7.3.1LCD控制器136
7.3.2LCD控制器的設置137
7.3.3LCD的字元顯示緩存139
7.4LCD的驅動程序設計140
7.4.1LCD驅動程序相關的宏定義140
7.4.2LCD驅動程序的底層操作函數142
7.4.3LCD驅動程序提供的API145
7.4.4LCD驅動程序的模塊化載入151
7.4.5LCD的測試程序152
7.5基於Framebuffer的LCD驅動程序實例155
7.5.1Framebuffer概述155
7.5.2LCD的電路連接155
7.5.3Framebuffer設備驅動程序的結構156
7.5.4Framebuffer設備驅動程序的設計159
7.5.5Framebuffer設備測試程序的設計164
7.5.6嵌入式Linux常用的GUI166
7.6知識索引166
7.7思考與練習167
第8章觸摸屏驅動程序168
本章目標168
8.1觸摸屏概述168
8.2觸摸屏的分類168
8.2.1電阻技術觸摸屏168
8.2.2表面聲波技術觸摸屏169
8.2.3電容電感技術觸摸屏170
8.2.4紅外線技術觸摸屏170
8.3觸摸屏的特性171
8.3.1透明度和色彩失真171
8.3.2反光性171
8.3.3清晰度171
8.3.4漂移172
8.3.5檢測和定位172
8.4觸摸屏的硬體電路設計172
8.4.1電阻式觸摸屏的電路原理172
8.4.2電阻式觸摸屏原點的定位173
8.4.3電阻式觸摸屏的電路連接174
8.5觸摸屏的驅動程序實例176
8.5.1觸摸屏介面的模式176
8.5.2A/D轉換和觸摸屏寄存器的設置177
8.5.3觸摸屏的坐標179
8.5.4觸摸屏的電路連接180
8.5.5觸摸屏的驅動程序介面181
8.6測試程序的設計182
8.6.1觸摸屏的數據定義183
8.6.2觸摸屏的數據處理183
8.6.3觸摸屏的運行測試185
8.7知識索引186
8.8思考與練習187
第9章CAN匯流排驅動程序188
本章目標188
9.1CAN匯流排介面設計188
9.1.1CAN匯流排概述188
9.1.2CAN的工作特點及主要優點189
9.1.3CAN匯流排的電氣特徵和MAC幀結構189
9.2嵌入式處理器上CAN匯流排介面的擴展190
9.2.1SJA1000簡介190
9.2.2SJA1000擴展191
9.3SJA1000擴展CAN匯流排介面的設計192
9.3.1CAN 控制器SJA1000的操作模式192
9.3.2CAN控制器SJA1000的特徵功能193
9.3.3CAN 控制器SJA1000的Basic CAN模式設置194
9.4SJA1000擴展CAN匯流排介面的通信196
9.4.1通過CAN匯流排建立通信的步驟196
9.4.2SJA1000的初始化196
9.4.3驅動程序的結構設計198
9.4.4驅動程序init、exit、open、close函數的實現200
9.4.5驅動程序read、write函數的實現201
9.4.6驅動程序interrupt、ioctl函數實現202
9.4.7測試程序的編寫202
9.5驅動程序的載入204
9.6知識索引204
9.7思考與練習205
第10章IIC匯流排驅動程序206
本章目標206
10.1IIC匯流排概述206
10.1.1IIC匯流排介紹206
10.1.2IIC匯流排引入的原因206
10.1.3IIC匯流排的特點206
10.1.4IIC匯流排的基本結構207
10.1.5IIC匯流排的術語207
10.1.6IIC匯流排的工作208
10.1.7IIC匯流排的競爭仲裁209
10.1.8IIC匯流排的工作流程210
10.2嵌入式處理器的IIC介面211
10.2.1IIC匯流排控制寄存器212
10.2.2IIC匯流排控制/狀態寄存器213
10.2.3IIC匯流排地址寄存器214
10.2.4IIC匯流排移位數據寄存器214
10.2.5S3C2410中與IIC對應的I/O埠215
10.3基於IIC的鍵盤晶元應用216
10.3.1ZLG7290的功能217
10.3.2ZLG7290的控制方式218
10.3.3ZLG7290的寄存器218
10.3.4ZLG7290的通信介面219
10.3.5ZLG7290的指令介紹219
10.4IIC匯流排驅動程序實例221
10.4.1ZLG7290的電路連接221
10.4.2ZLG7290的通信流程223
10.4.3ZLG7290驅動中變數的定義225
10.4.4ZLG7290驅動中實時時鍾的改變226
10.4.5ZLG7290和IIC寄存器的初始化227
10.4.6ZLG7290驅動程序的模塊化228
10.4.7ZLG7290的文件操作結構228
10.5IIC匯流排的測試程序230
10.6知識索引231
10.7思考與練習231
第11章音頻匯流排驅動程序232
本章目標232
11.1音頻匯流排介面概述232
11.1.1音頻的采樣精度233
11.1.2音頻編碼233
11.2IIS音頻匯流排介面233
11.2.1IIS匯流排的物理連接233
11.2.2IIS的匯流排協議234
11.2.3IIS匯流排的硬體設計235
11.2.4IIS匯流排的寄存器236
11.3AC97音頻匯流排介面239
11.4IIS匯流排的驅動程序設計240
11.4.1音頻設備基礎知識240
11.4.2音頻設備文件241
11.4.3WAV聲音文件243
11.4.4音頻設備和驅動程序的通信243
11.4.5設備的初始化和載入244
11.4.6DMA的操作和宏定義246
11.4.7audio設備文件的操作248
11.4.8mixer設備文件的操作260
11.5音頻驅動程序的測試262
11.6知識索引262
11.7思考與練習263
第12章IDE介面驅動程序264
本章目標264
12.1IDE介面概述264
12.1.1硬碟知識介紹264
12.1.2IDE介面標准267
12.1.3IDE介面的傳輸模式269
12.1.4IDE介面寄存器269
12.2IDE介面驅動程序的移植271
12.2.1嵌入式Linux下IDE驅動程序介面271
12.2.2嵌入式Linux下IDE驅動程序272
12.2.3IDE硬碟的讀/寫操作274
12.3IDE驅動程序測試282
12.3.1磁碟文件系統簡介283
12.3.2IDE分區測試283
12.4知識索引285
12.5思考與練習285
第13章快閃記憶體晶元的驅動程序286
本章目標286
13.1快閃記憶體晶元概述286
13.1.1快閃記憶體晶元的物理特性286
13.1.2嵌入式文件系統概述289
13.1.3MTD體系介紹289
13.1.4Flash專有名詞291
13.2NAND Flash291
13.2.1NAND Flash的結構291
13.2.2NAND Flash的操作292
13.2.3NAND Flash控制器294
13.2.4NAND Flash的時序296
13.2.5NAND Flash的驅動程序實例297
13.3NOR Flash301
13.3.1NOR Flash的結構301
13.3.2NOR Flash的操作302
13.3.3NOR Flash的驅動程序實例303
13.4基於快閃記憶體的文件系統307
13.5知識索引309
13.6思考與練習310
第14章USB 設備驅動程序311
本章目標311
14.1USB介面概述311
14.1.1USB系統311
14.1.2USB的電氣特性312
14.1.3USB匯流排的拓撲結構313
14.1.4USB的通信協議313
14.2嵌入式系統中USB的使用315
14.2.1OHCI概述315
14.2.2Host介面硬體設計316
14.3嵌入式系統中USB設備的驅動程序設計316
14.3.1

2. windows驅動開發技術詳解 第11章驅動程序調用驅動程序 11.1.5非同步調用方法二 為什麼沒輸出47,50行的內容

因為沒有寫入root許可權吧,你可以試試!在開始菜單上有cmd打開之後輸入qsbyd然後一步一執行即可,不明白的問問我喲!

3. VC驅動編程

推薦幾本
《天書夜讀-從匯編語言到windows內核編程》
《寒江獨釣-windows內核安全編程》
《Windows驅動開發技術詳解》

網上都有pdf版本的,你可以到verycd上或者其他地方搜索的到下載地址

4. Android底層介面與驅動開發技術詳解有PDF嗎

真沒聽過

5. 驅動開發

這個,介紹只好復制來說了。我覺得你要是有興趣,隨便在那都能找到很多有趣的資料。看下面驅動的發展史:

Windows 驅動程序的發展演變
我們在學習開發驅動程序時有必要弄清楚Windows設備驅動程序的發展演變過程(為了簡便起見,以下簡稱驅動程序),以便明白我們將要開發什麼樣的驅動程序。這就象你開發一個應用程序時必須弄清楚它是運行在WINDOWS平台下還是在DOS平台下,否則我們能寫出什麼樣的應用程序就可想而知了。
驅動程序開發者的各項任務之中,有許多是為特定的硬體編寫驅動程序。由於WINDOWS的發展,這樣的工作在 Windows 9X 下要比在前一版Windows(windows3.x 、Windows Workgroup) 中容易得多。先了解一些歷史演變,可能會對驅動程序的編寫有所幫助。
實模式Windows(Real-Mode Windows)
從一開始,MS-DOS 和系統基本輸入輸出系統(BIOS) 就已經提供了許多硬體設備的驅動程序。BIOS 通過一些常用的軟體中斷,開放出驅動程序的服務 ,像INT 10h 是顯示系靳中斷,INT 13h是磁碟子系靳中斷,INT 16h 是鍵盤中斷等等。BIOS 也處理硬體中斷,並承擔對「可編程中斷控制器」(Programmable Interrupt Controller ,PIC )的管理任務。MS-DOS 也通過軟體中斷(如 INT 21h 、INT 25h 、INT 26h )提供了系統服務 ,並提供一個機制(CONFIG.SYS 中的 device= 語句),讓新的或強化後的驅動程序能?蛟諳到y啟動時被載入進操作系統內核。
標准模式Windows(Standard-Mode Windows)
早期的 Windows 中,MS-DOS 和 BIOS 是最重要的。Windows運行在實模式狀態中,這時的Windows充其量不過是一個強化後的MS-DOS圖形用戶界面而已。從系統角度看,Windows只不過是個大的圖形應用程序。Intel 80286 的出現,使 Windows能?蛟詒;つJ街性誦脅⒒竦酶嘰? 16MB 實際內存空間。依靠保護模式和實模式的轉換,Windows 仍然繼續使用MS-DOS 和 BIOS 提供的服務來完成所有的系統需求。這種運作模式被稱為 Windows標准模式(Windows standard mode) 。在 80286 機器上切換實模式和保護模式,系統開銷很大。Intel 於是提供了一個快又有效率的指令,讓你從實模式切換到保護模式。但Intel 認為沒有什麼人還需要再從保護模式切換回實模式。結果,唯一能?蛉帽;つJ匠絛潁ㄈ? Windows standard mode )存取實模式軟體(如 MS-DOS )的方法就是復位CPU(reset CPU) 。在人們開發出來的各種復位方法中,最普遍的一種就是觸發鍵盤控制器,提供由 Ctrl-Alt-Delete 鍵所發出的外部信號。於是引發所謂的三鍵失效(triple fault,即三鍵熱啟動),這是 CPU 先天無法處理的一種「失效「。事實上無論哪一種作法,代價都很昂貴,因為它們至少都得經過 BIOS 的引導程序 。事實上,在某些 286 機器,模式的切換要花掉好幾毫秒。顯然 Windows 需要一種方法,避免每次一有事件發生,像是鍵盤被按下或滑鼠移動等等,就得切換到實模式。解?Q方法就是寫一個保護模式驅動程序,可以在保護模式中處理 I/O 中斷。這些驅動程序直到今天我們都還在使用,你在 SYSTEM 子目錄中看到的擴展名為 .DRV 的文件都是!包括 MOUSE.DRV 、COMM.DRV 等等。我把它們稱為 ring3 DLL 驅動程序,因為它們實質上都是 16 位 Windows 動態鏈接庫(DLLs ),在 ring3層 (Intel CPU 最不受保護的層,一般應用程序運行在ring3層,核心態的驅動程序動行在ring0層)執行。它們的任務是在不離開 CPU保護模式的前提下,和 Windows KERNEL 、USER 、GDI 模塊之間形成介面。
增強模式Windows(Enhanced-Mode Windows )
Intel 80386 CPU 使 Windows的第三種操作模式(所謂的 enhanced mode)成為可能。在此模式中 Windows 採用分頁(paging) 和虛擬86(V86) 特性,創造出??擬機器(VirtualMachines ,VMs )。對一個應用程序而言,VM 就像一獨立的的個人電腦,獨自擁有自己的鍵盤、滑鼠、顯示器等等硬體。而實際上,經過所謂的??擬化(virtualization ),數個 VMs 共享相同硬體。對最終用戶而言,最大的好處是他現在能?蛟詿翱謐刺?中(而非全屏幕)運行MS-DOS程序 。"??擬化"是 VxDs 的工作。VxD 的名稱來自於 "virtual x device",意思是此驅動程序用來??擬化某個(x )設備。例如:VKD用來??擬化鍵盤,使Windows 和任何一個MS-DOS程序都自認為獨立擁有屬於自己的鍵盤。VMD 用來??擬化滑鼠。某些 VxDs 並不是為了??擬化某些硬體,而是為了提供各種底層系統服務。頁面交換(PAGESWAP) 和 頁面文件(PAGEFILE)就屬於這種非設備VxD ,它們共同管理交換文件(swap file ),使 增強模式Windows (enhanced-modeWindows) 得以將磁碟空間分配成為??擬內存的一部份。盡管基礎技術令人耳目一新,但增強模式Windows (enhanced-mode Windows )還是繼續在磁碟和文件 I/O 方面使用 MS-DOS 和 BIOS 。需要交換(swap )一個文件時,它還是把 CPU 切換到 V86 模式,讓 MS-DOS 和 BIOS 來處理 I/O 操作。在保護模式、真實模式、V86 模式之間的所有切換動作都使得 Windows 慢下來。更多
的延時則來自於MS-DOS 和 BIOS 不可重入這一問題(即不能兩個程序同時使用相同的服務)。Windows 必須強迫所有應用程序在同一個隊列等待實模式服務。
Windows95
Windows 95 將終結這一份對歷史的回憶。Windows 95 使用數種不同的驅動程序模型,大部份是使用 32 位 ring0層的虛擬設備驅動程序(VxDs) ,而非 rin3層的 DLLs 。所有的設備驅動程序都有一個具有管理功能的核心虛擬機VMM(虛擬機管理器)管理。
Windows對中斷的處理與MS-DOS大不一樣。當中斷發生時,處理器轉換為ring0級保護模式。Windows系統並不像MS-DOS那樣通過中斷描述符表IDT(Interrupt Descriptor Table)直接指向中斷處理過程,而是由IDT入口指向VMM中的程序。該程序將判斷是否為中斷調用,如果是,則把中斷控制權交給虛擬可編程中斷控制器VPICD(Virtual Programmable Interrupt Controller Device),VPICD實際上是一個重要的VxD。VPICD再將其交給另一個注冊了該中斷的VxD(如Audcard.vxd)來處理。VxD程序是通過調用VPICD服務VPICD_Virtualize_IRQ來注冊中斷的。
Windows 95 對於設備 (device) 的處理,一般的模型是:由一個 VxD 掌管所有中斷並執行所有數據傳輸,應用程序則使用函數調用 (function calls) 的方式對 VxDs 發出服務請求。這種VxD 為主的設備規劃模型的一個好例子就是:Windows 95 的串列通信(serial communications) 。從前 Windows的串列通訊是使用一個 ring3 驅動程序(COMM.DRV ),?群?硬體中斷處理程序以及驅動一個通用非同步收發蕊片(universal asynchronous receiver-transmitter (UART )蕊片)所需的全部邏輯功能代碼。在未讓此驅動程序知道的情?r下,兩個 VxDs (VCD 和COMBUFF )攔截了硬體中斷和軟體 IN/OUT 指令,為的是??擬化每一個 port ,並且改善因多任務而引起的問題。Windows 95 也有一個 ring3 組件名為 COMM.DRV ,但這個組件已經成為新的VxD (VCOMM )的一個簡單的外層程序,只用來提供 16 位程序和 VCOMM之間的介面。VCOMM 則處於底層,聯結一般應用程序、VxD clients 、 VxD 埠驅動程序和實際的硬體。埠驅動程序現在負責處理所有中斷,並執行真正與硬體起作用的 IN/OUT 指令。
Windows 95 文件系統是另一個好例子。過去,對文件系統服務的請求(requests ),源自於16 位保護模式程序所發出的 INT 21h 。有一個 VxD 用來處理這些 INT 21h ,並將它們切換到 V86 模式,以便讓MS-DOS 處理。MS-DOS 發出 INT 13h中斷 ,以請求使用 BIOS 的磁碟 I/O 功能;發出 INT 2Fh ,允許網路的 "redirector moles"(重新定向模塊)將此請求通過網路傳輸出去。Windows 95 提供給應用程序的,仍是向上兼容的介面,INT 21h 仍舊是導至文件系統的動作,但是底層基礎卻大不一樣。
在 Windows 95 之中,一個名為「可安硯文件系統「(Installable File System ,IFS )的管理器會處理所有 INT 21h ,甚至是來自於 V86 模式的。然後它把控制權交斤一個文件系統驅動程序(File System Driver ,FSD )。有一個 FSD 名為 VFAT ,是針對 MS-DOS
文件系統(所謂 File Allocation Table ,FAT )而設計;另一個 FSD 名為 CDFSD ,可以解析 CD-ROM 格式;此外還有其他 FSDs ,知道如何經由各種網路彼此通訊。針對本機(local 端)FSD (如VFAT )的磁碟操作,會經過被I/O管理器(Input/Output Supervisor ,IOS)監視管理的一堆VxDs處理。甚至 V86 模式的 INT 13h 中斷調用最終也是由 IOS 處理。換句??真,實模式和保護模式所發出的對文件系靳的請求(request ),不論是針對本地(local )或遠程(remote )磁碟,有可能完全(或幾乎完全)由 VxDs 來處理。Windows 95 這種以 VxD 為中心的驅動程序模型,好處之一是,系統程序員不一定要是 MS-DOS 和 BIOS 的專家,就可以寫驅動程序。那些准備提供系統擴展組件的程序員,也同享這個好處;原本你必須了解DOS保護模式介面(DPMI)以及 Windows 核心模塊的許多神秘特性或未公開特性,現在只需了解 Win32 的 DeviceIoControl API 函數,以及那些支持所謂 "alertable waits」(即時喚醒,大意是那些可以在VXD中調用的Windows 32位 API函數,但數量極其有限,)的 Win32 API 即可。這兩個介面可以讓你把 VxD 當做 32 位應用程序的擴展組件。盡管Windows系統驅動程序設計的任務主要是在系統底層上擴展 Windows 的功能,但Windows 95 還是保留了令人印象深刻的向上兼容能力(對上層程序,如dos程序來說,它們的調用介面沒變,但底層實際操作卻大不一樣了)。DPMI 還是存在(有些16 位程序還是需要它),你還是可以運行實模式的網路驅動程序或文件系統驅動程序--如果這是你的必要選擇。事實上,你往往可以把 Windows 3.1 的一整組硬體設備、網路驅動程序、16 位應用程序及其必要的 VxDs 整個搬到 Windows 95 ,不至於遭遇什麼大問題。

Windows98&2k&NT
1996年的Windows Hardware Engineering Conference(WinHEC)會議上,Microsoft宣布了一種新的Windows設備驅動程序模型――Win32 Driver Model(WDM)。這種新的設備驅動程序模型將成為Windows 2000(即Windows NT 5.0)的核心。
這個消息令從事Windows設備驅動程序(VxD)開發的程序員感到沮喪(雖然大家早已預料到Windows系列與Windows NT系列最終將走到一起)。WDM將vxd的開發人員帶到了一個新的起點上,什麼都是新的:新的模式,新的觀點。如果你曾看過DDK的匯編代碼的話,你一定可以體會這個消息對VxD開發者是個沉重的打擊,而對於Windows NT設備驅動程序(Kernel Mode Driver)的開發者來說,卻是另一番心情――因為WDM基本等於Kernel Mode Driver+Plug and Play。

VxD將讓位於WDM,現在令我們欣慰的是Microsoft宣布Windows 98(Windows 98支持VxD,推薦使用WDM方式驅動,但有些設備,如列印機等還不能用它,微軟預先設想的是Windows98和Windows 2k x86版在WDM驅動上可以二進制碼兼容,但實際上沒有完全實現)可能會堅持到200X年(天知道,估計也就是三兩年)。在這期間,掌握VxD技術的你還是可以主動要求老闆給你加薪的。即使到了WDM一統天下之時,也不用灰心,因為無論是VxD還是WDM,都要求開發人員對計算機硬體有著全面而細致的了解。通過VxD的鍛煉,你至少熟悉了計算機的硬體資源並對保護模式有了比較深刻的認識,這些東西都是將來從事WDM開發的硬功夫。

好了,該說說Windows NT了。在Windows NT中,80386保護模式的「保護」比Windows 95中更堅固,這個「鍍金的籠子」更加結實,更加難以打破。在Windows 95中,至少應用程序I/O操作是不受限制的,而在Windows NT中,我們的應用程序連這點許可權都被剝奪了。在NT中幾乎不太可能進入真正的ring0層。
在Windows NT中,存在三種Device Driver:

1.「Virtual device Driver」 (VDD)。通過VDD,16位應用程序,如DOS 和Win16應用程序可以訪問特定的I/O埠(注意,不是直接訪問,而是要通過VDD來實現訪問)。

2.「GDI Driver」,提供顯示和列印所需的GDI函數。

3.「Kernel Mode Driver」,實現對特定硬體的操作,比如說CreateFile, CloseHandle (對於文件對象而言), ReadFile, WriteFile, DeviceIoControl 等操作。「Kernel Mode Driver」還是Windows NT中唯一可以對硬體中斷和DMA進行操作的Driver。SCSI 小埠驅動和 網卡NDIS 驅動都是Kernel Mode Driver的一種特殊形式。

Windows NT的驅動程序模型與Windows 3.1、Windows 95是截然不同的。所以如你的程序使用的某些特有驅動程序是VXD驅動的話,在Windows nt和windows 2k中是不能運行的。你聽說過的CIH病毒就是運用的是VXD相似技術。所以不可能在nt和windows 2k中感染CIH病毒。
關於WDM驅動程序方面的相關知識,可以參看《WINDOWS WDM設備驅動程序開發指南》和《Programming the Microsoft Windows Driver Model》兩本書或參看微軟DDK文檔。在本專欄以後的文章中,我們將一起學習WDM驅動程序的開發技術(大勢所趨嘛)。
求採納為滿意回答。

6. 《Linux設備驅動開發詳解基於最新的Linux4.0內核》pdf下載在線閱讀,求百度網盤雲資源

《Linux設備驅動開發詳解》(宋寶華)電子書網盤下載免費在線閱讀

資源鏈接:

鏈接:https://pan..com/s/1ddjTHycqTk3yYQDr-raoKw

提取碼:evup

書名:Linux設備驅動開發詳解

作者:宋寶華

豆瓣評分:6.5

出版社:機械工業出版社

出版年份:2015-8

頁數:618

內容簡介:

對於嵌入式工程師來說,進入更高階段後,學習Linux設備驅動開發無疑就是職業生涯的一次「重生」。這是因為Linux設備驅動開發不僅僅涉及操作系統的轉換,開發方式的轉換,更重要的是思維上的轉變。對於Linux這樣一個復雜系統,如何從復雜的代碼中抓住設備驅動開發的關鍵是任何一個Linux設備驅動開發者入門時需要面對的挑戰。除了知識、工具之外,往往還需要思路上的指導。本書不但幫助Linux設備驅動開發的初學者釐清必要的概念,還從具體的實例、設備驅動開發的指導原則循序漸進地引導讀者漸入學習佳境。為了讓讀者能夠達到Linux設備驅動開發的至臻境界,作者更是從軟體工程的角度抽象出設備驅動開發的一般思想。毫無疑問,本書將成為讀者學習Linux設備驅動開發過程中的一座「燈塔」。

作者簡介:

宋寶華,

Linux佈道者,知名嵌入式系統專家,《Essential Linux Device Drivers》譯者。作為最早從事Linux內核與設備驅動研究的專家之一,他在眾多國內外知名企業開展Linux技術培訓。他也是一位活躍的Linux開發者和深度實踐者,為Linux官方內核貢獻了大量的Linux源碼並承擔代碼審核工作。至今已向Linux官方內核提交逾數萬行代碼和幾百個補丁。他的《Linux設備驅動開發詳解》系列書在嵌入式Linux開發者中有口皆碑,是眾多Linux書籍中為數不多的暢銷書。

7. 設備驅動程序的開發

你是指的windows驅動開發吧
先了解驅動原理,結構性的東西
有兩本書,我現在手上都有,很經典
《wdm設備驅動程序開發》
《windwos驅動開發技術詳解》
前面那本是講driver studio環境(國外的一個開發驅動的輔助軟體)的,後面這本時間DDK開發環境的,就是微軟提供的。
driver studio是對ddk的一種封裝,方便上手,而且很易於建立驅動工程,能節省不少時間,但是如果你想要做一個高手,還是從ddk開始做起,能更加理解windows的驅動結構,兩者的詳細區別,你可以在網上搜索一下,有很多帖子介紹的。安裝了ddk和driver studio後,他們的幫助文檔,和附帶的演示代碼都是很重要很權威的學習工具!多看看,要比在網上搜索答案更使用。

8. 如何正確入門Windows系統驅動開發領域

[序言]
很多人都對驅動開發有興趣,但往往找不到正確的學習方式.當然這跟驅動開發的本土化資料少有關系.大多學的驅動開發資料都以英文為主,這樣讓很多驅動初學者很頭疼.本人從事驅動開發時間不長也不短,大概也就3~4年時間.大多數人都認為會驅動開發的都是牛人,高手之類的.其實高手,牛人不是這樣定義的.我們在學習驅動開發之前,一定要明白一個道理:術業有專攻,不要盲目跟風.

[本內容適用環境及工具]
1> Windows系統下
2> VS2003版本以上
3> Windows驅動開發包(DDK(老版本) WDK(新版本))
4> 有能力著可以安裝VMWare

[本內容適用群體]
1> 具有C/C++語言基礎的人
2> 具有80x86匯編基礎的人
3> 具備高中以上文化水平的邏輯思維

[具備Windows系統理論書籍]
1> Windows核心編程
2> Win32多線程程序設計
3> 深入解析Windows操作系統
4> Windows操作系統原理

FAQ1:為什麼需要[具備Windows系統理論書籍]這4本書?
答:驅動是Windows系統的一個重要的組成部分,深入Windows系統核心的一個體系,就因為驅動跟系統內核聯系得十分緊密,所以涉及了不少系統的基礎理論以及原理.因此在學習驅動開發之前必須先明白Windows系統的基礎開發理論,Windows系統的運作原理,Windows系統的架構體系.那麼我提供的上面4本書是目前市面上我認為最經典最全面的書籍了.

[具備Windows驅動開發書籍]
1> Windows驅動開發技術詳解
2> Windows設備驅動程序WDF開發

FAQ2:為什麼需要[具備Windows驅動開發書籍]這2本書?
答:假設你對Windows系統的基礎理論扎實了,也看完了所說的[Windows系統理論書籍]這4本書,而且你還從事開發過Windows程序或者大程序的經驗者.那麼你進入Windows驅動開發的時候,需要一本經典的驅動入門開發書籍即可正確入門.現在我提供了[Windows驅動開發書籍]這2本書完完全全針對Windows驅動開發入門而編寫的書籍.當然我首要推薦<Windows驅動開發詳解>這本書.本書的內容在目前來說,針對驅動開發的講解時非常到位了.包含了驅動開發理論 配置 驅動體系 等等......是一本不可多得的好書.那麼第2本,其實有點濫竽充數,但是他裡面有少少涉及到WDF這個最新的驅動開發理論的講解,大家也就湊合著吧.

[具備Windows調試基礎理論書籍]
1> 軟體調試
2> Windows用戶態程序高效排錯

FAQ3:為什麼需要[具備Windows調試基礎理論書籍]這2本書?
答:在開發驅動的情況下,你少不了要調試驅動程序.那麼如何調試驅動程序呢? Windows已為你考慮到這個問題了並開發了一套強有力的調試工具:Windbg .如何學習這個工具的調試呢?那麼現在市面上只有這2本書針對Windbg講解得還比較到位,至少針對調試命令的使用,已經用中文講解了,大家可以通過2本書先大概了解Windbg的調試命令,然後再進一步進行GOOGLE搜索並深入學習.

[具備匯編基礎理論書籍]
1> 匯編語言 作者:王爽
2> 80x86匯編語言程序設計教程[綠皮版 或者 黑皮版]

FAQ4:為什麼需要[具備匯編基礎理論書籍]這2本書?
答:由於在Windows環境下開發驅動,從而有個弊端,就是Windows的WDK,DDK文檔少得可憐,很多說明多是模糊的.因此導致我們開發的驅動極其不穩定,這時就需要逆向Windows驅動的機制來加深理解.在一個由於驅動的不穩定性,會導致系統藍屏,有時錯誤並不會直接定位到你的代碼,這時就需要匯編來分析錯誤的緣由.就如我前面介紹的[具備Windows調試基礎理論書籍]基本是用匯編語言來闡述調試技術.

[驅動開發擴展書籍]
1> 寒江獨釣-Windows內核安全編程
2> Windows內核原理與實現
3> Rootkit Windows內核安全防範
4> Windows內核情景分析

FAQ5:為什麼需要[驅動開發擴展書籍]這4本書?
答:熟話說:學無止境,驅動開發領域是一個很龐大的體系,這歸根於驅動框架多樣化而決定的.驅動包含了:文件驅動,磁碟驅動,顯卡驅動,網路驅動,等等不同的種類,每一種類就是一個領域,你決定你的能力需要擴展到多方面,那麼你可以考慮先我這里提供的這4本書來學習,通過閱讀這3本書,你會發現驅動可以做很多你意想不到的事情.本人從事開發驅動將近4年,也僅僅涉及 文件驅動,磁碟驅動以及一些小型驅動而已.這些的學習我也僅僅是根據需求來進行選擇性學習.每個人都有自己的能力極限,大家要量力而行.

[推薦正確學習方式]
1> 認真閱讀我提供的參考書籍
2> 多使用Google來解決你遇到的問題
3> 多嘗試用驅動寫你自己喜歡的功能
4> 提升你英文閱讀能力,因為大部分有價值的資料來自於國外
5> 不要急於求成,不要浮躁,不要把驅動開發技術當做一種炫耀

9. 深入淺出windows驅動開發的目錄

向內核世界說一聲:hello,我來了。如果你是一個初學者,並對這個世界充滿好奇心,請從這一章開始,我們一起打招呼~
第1章 Hello World驅動 1
1.1 從Hello World開始 2
1.1.1 HelloDRIVER 4
1.1.2 代碼解釋 8
1.1.3 驅動程序的編譯和安裝 11
1.1.4 查看我們的驅動 14
1.2 虛擬環境 15
1.2.1 使用虛擬環境進行驅動開發 15
1.2.2 使用VMware虛擬機 15
1.2.3 目標機設置 16
1.2.4 Virtual PC虛擬機 18
1.3 小結 19
如何在規范的商業環境中,開發成功而有效的驅動軟體?驅網站長馬勇(ZnSoft)將向你娓娓道來。你會學到這些內容:建立一個簡單而有效的開發、調試環境;64位環境下的內核編程技巧;如何發布你的驅動軟體。
第2章 商業驅動開發技術 20
2.1 建立開發調試環境 21
2.1.1 SVN環境 21
2.1.2 創建工程,導入SVN 23
2.1.3 建立符號伺服器 25
2.1.4 用符號調試 27
2.2 64位驅動開發技術 34
2.2.1 64位驅動編寫技術 35
2.2.2 32位應用程序與64位驅動混合模式 36
2.3 驅動程序的發布與測試 42
2.3.1 驅動程序簽名 42
2.3.2 驅動程序測試 46
2.3.3 WHQL 49
2.4 小結 50
WDF是目前最新的驅動編程框架。當很多內核程序員還緊抱WDM的巨大佛腳時,千萬要記住,WDF已是大勢所趨。本章介紹了WDF最重要的幾個概念,並進行了一定程度的深度挖掘。對於WDF框架的三大核心模型:對象模型、事件模型、PNP/Power模型,本章作了重點講述。
第3章 WDF概述 51
3.1 主要特點 52
3.2 框架視圖 53
3.3 兼容性 55
3.4 對象模型 56
3.4.1 對象和句柄 59
3.4.2 引用計數 60
3.4.3 上下文空間 61
3.4.4 PME介面 67
3.4.5 DDI介面 69
3.4.6 父子關系 76
3.4.7 對象同步 77
3.5 驅動對象和設備對象 78
3.5.1 驅動對象 78
3.5.2 驅動入口DriverEntry 81
3.5.3 設備對象 84
3.5.4 創建設備對象 85
3.5.5 設備棧 86
3.6 IO模型 88
3.6.1 IO目標對象 88
3.6.2 IO目標對象的細節 90
3.6.3 安全的緩沖區 93
3.6.4 內存對象(一) 96
3.6.5 內存對象(二) 98
3.6.6 框架和IO請求 102
3.6.7 更詳細的處理流程 103
3.6.8 IO請求參數 105
3.6.9 隊列 107
3.6.10 創建IO請求 110
3.7 PNP和電源模型 112
3.8 小結 115
使用WDF框架開發USB驅動,方便且簡單。本章首先總體上從硬體和軟體兩個方面介紹USB相關知識點,包括設備的電氣特性、匯流排結構、USB驅動類型以及類驅動。編程方面,從USB設備初始化、數據操作以及設備控制等幾個方面來講解,透徹並且翔實。
第4章 WDF USB設備驅動開發 116
4.1 USB設備硬體結構 117
4.1.1 主從結構 117
4.1.2 硬體拓撲 118
4.1.3 USB中斷 119
4.2 USB軟體結構 120
4.2.1 匯流排驅動 120
4.2.2 系統類驅動 121
4.2.3 功能驅動 122
4.2.4 父驅動與混合設備 122
4.2.5 過濾驅動 125
4.2.6 USB驅動棧、設備棧 125
4.3 內核開發 127
4.3.1 設備驅動 127
4.3.2 入口函數 128
4.3.3 USB描述符 129
4.3.4 描述符介紹 130
4.3.5 匯總舉例 133
4.3.6 讀取描述符 135
4.3.7 初始化 137
4.3.8 設備初始化函數 138
4.3.9 創建設備對象 141
4.3.10 設備命名、符號鏈接 143
4.3.11 啟動設備 147
4.3.12 創建隊列 156
4.3.13 停止設備/反初始化 158
4.4 數據I/O操作 160
4.4.1 USB控制命令 160
4.4.2 構造並發送控制命令 162
4.4.3 讀USB中斷埠 163
4.4.4 連續讀操作 165
4.4.5 數據處理函數 166
4.4.6 中斷埠的效率 167
4.4.7 讀/寫批量埠 168
4.5 設備控制 171
4.5.1 關於I/O Target對象 171
4.5.2 獲取USB版本 172
4.5.3 管道重置 174
4.5.4 設備重置 176
4.5.5 管道中止與終止 177
4.6 用戶程序 179
4.6.1 內核讀/寫 179
4.6.2 控制命令 179
4.7 小結 180
1394俗稱火線。大夥平時最多接觸它的地方大概是內核調試時,藉助1394卡進行雙機互聯。本章首先從硬體方面介紹了1394的知識,它的匯流排結構很特別,極具可擴性,能非常方便地在各種類型的1394設備之間建立數據鏈路。內核編程方面,本章重點講解了數據通信相關知識,分為非同步通信和同步通信兩種方式,頗為復雜,相對難於掌握,但套路是現成的,變化的東西不多,可以熟能生巧。本章最後介紹了1394雙機互聯的原理,有興趣的讀者可參考之。
第5章 WDF 1394驅動開發 181
5.1 1394一席談 182
5.1.1 版本情況 183
5.1.2 電源特性 183
5.1.3 1394卡 183
5.1.4 匯流排拓撲 184
5.2 發送請求 186
5.2.1 同步方式 187
5.2.2 非同步方式 189
5.2.3 對WDM的回憶 191
5.3 匯流排重置與計數 193
5.3.1 匯流排重置 193
5.3.2 設置重置回調 193
5.3.3 計數更新 194
5.4 PNP操作 195
5.5 非同步通信 196
5.5.1 地址范圍 197
5.5.2 非同步讀 200
5.5.3 非同步寫 201
5.5.4 非同步鎖請求 202
5.5.5 數據流 203
5.6 等時通信 204
5.6.1 申請帶寬 205
5.6.2 釋放帶寬 206
5.6.3 等時通道 206
5.6.4 資源句柄 207
5.6.5 緩沖區掛載 210
5.6.6 緩沖區解掛 211
5.6.7 開始傳輸 211
5.6.8 停止傳輸 212
5.6.9 其他等時操作 213
5.7 其他操作 213
5.7.1 設備配置 213
5.7.2 獲取控制器信息 214
5.7.3 速度信息 215
5.7.4 廠商自定義命令 216
5.8 安裝與測試 216
5.8.1 1394虛擬設備 216
5.8.2 創建虛擬設備 218
5.8.3 示例代碼 219
5.8.4 安裝與測試 221
5.9 小結 222
內核天生適合於C語言編程,但越來越多的內核項目,規模達到10數萬的規模。在這種情況下,人們不由地會將目光投向優雅的C++語言。總體上說,C和C++是至親好友,內核中使用C++本不應有什麼大問題,但有幾個暗礁潛伏已久,不小心的程序員,你可千萬不要觸礁。
第6章 內核驅動C++編程 223
6.1 驅動中的類 224
6.1.1 一個簡單的例子 224
6.1.2 new/delete 225
6.1.3 extern C 227
6.1.4 全局/靜態變數 228
6.1.5 棧的憂慮 230
6.2 類封裝的驅動程序 233
6.2.1 尋找合適的存儲所 233
6.2.2 類方法與事件函數 235
6.2.3 KMDF驅動實現 236
6.2.4 WDM驅動實現 237
6.3 多態 238
6.3.1 基類、子類 238
6.3.2 實現多態 239
6.3.3 測試 241
6.4 小結 241
使用WDF框架編寫的驅動程序,在測試和調試的時候,有特殊的工具。本章介紹了目前所知的三個,它們分別是:Windbg擴展調試命令、WDFTester測試工具、WDFVerifier測試工具。本章將以示例方式,介紹這些工具的使用。
第7章 WDF驅動測試 242
7.1 WDF錯誤 243
7.1.1 實例分析 245
7.1.2 USB錯誤 246
7.2 WDF擴展調試命令 247
7.3 WDFTester 254
7.3.1 WDFFiTester 254
7.3.2 使用 256
7.3.3 WDFCallTracer 260
7.4 WDFVerifier 263
7.4.1 識別KMDF驅動 263
7.4.2 使用與介紹 265
7.5 小結 266
SoftIce漸行漸遠之後,Windbg成為內核調試的第一利器。使用Windbg的最大難點是命令繁多,參數復雜。本章以總結歸納的形式,介紹了作者在工作中經常用到的幾大類調試命令,並以實例形式一一介紹。作者根據個人經驗所作的分類,未能全備,但能夠保證的是,所有實例翔實而可靠,可以作為可信的參考。
第8章 調試命令詳解 267
8.1 概述 268
8.1.1 尋求幫助 269
8.1.2 DML語言 270
8.1.3 基本信息 271
8.1.4 基本設置 272
8.1.5 格式化顯示 273
8.1.6 開始調試 273
8.2 符號與源碼 276
8.2.1 模塊列表 277
8.2.2 模塊信息 279
8.2.3 符號路徑 280
8.2.4 符號載入 283
8.2.5 符號搜索 285
8.2.6 源碼命令 287
8.3 進程與線程 289
8.3.1 進程命令 289
8.3.2 線程命令 292
8.3.3 異常與事件 296
8.3.4 局部變數 300
8.3.5 顯示類型 301
8.4 斷點 301
8.4.1 軟體斷點 301
8.4.2 硬體斷點 303
8.4.3 其他操作 303
8.5 內存命令 304
8.5.1 查看內存 304
8.5.2 內存信息 307
8.5.3 其他命令 311
8.6 小結 312
相信大多數人在學習內核開發的時候,都問過這樣一個問題:內核驅動怎麼向用戶程序發送消息,或者如何調用Win32函數。用戶程序和內核同步,是一個基本而重要的知識,本章介紹了三種主要的實現方式。至於內核是否可以調用Win32函數,讀一讀本章開篇的話,你就有答案了。
第9章 內核同步 313
9.1 關於內核同步 314
9.2 內核事件同步 316
9.2.1 原理 316
9.2.2 用戶程序 318
9.2.3 內核實現 319
9.3 IRP同步 320
9.3.1 用戶程序 321
9.3.2 內核實現 323
9.4 WMI同步 325
9.5 數據緩沖區同步 326
9.6 反向調用 328
9.7 小結 330
微軟最新的音視頻編程框架即AVStream框架,不管從什麼方面來說,音視頻編程都是一個很小眾的領域。AVStream框架極其復雜,個人看法是掌握的難度超過了WDF。本章介紹了AVStream框架的各種基本知識點,並以實例講解一個內核音頻過濾器在系統中是如何工作的。
第10章 音頻驅動開發 331
10.1 簡介 332
10.1.1 音頻模塊架構 332
10.1.2 系統中的音頻設備 334
10.2 AVStream對象 338
10.2.1 設備對象 339
10.2.2 Filter工廠和Filter對象 340
10.2.3 Pin工廠和Pin對象 342
10.2.4 Node對象與Connection結構體 343
10.3 AVStream描述符 346
10.3.1 描述符簡介 346
10.3.2 描述符示例 347
10.3.3 分發函數表 349
10.3.4 自控表 349
10.3.5 自控表示例 351
10.4 代碼講解 355
10.4.1 入口函數 355
10.4.2 設備分發函數 357
10.4.3 Filter與Pin分發函數 358
10.4.4 創建和刪除 359
10.4.5 數據處理 360
10.4.6 數據格式 362
10.5 自控表函數 364
10.5.1 事件函數 364
10.5.2 屬性函數 366
10.5.3 方法函數 367
10.5.4 用戶介面 367
10.6 硬體操作 370
10.6.1 數據DMA 370
10.6.2 AVStream中的DMA實現 371
10.6.3 談談ISR 374
10.7 安裝與測試 376
10.7.1 安裝 376
10.7.2 測試工具 376
10.8 小結 379
ASIO音頻驅動具有兩個非常亮眼的優點:低延遲、多通道。低延遲能夠達到幾毫秒,使得最靈敏的耳朵也難也察覺;多通道則讓通常的雙聲道、6.1聲道等一齊歇菜,而可以很輕松地讓多達十幾、幾十個聲道同時工作,在進行高級音頻編輯時,這非常重要。
第11章 ASIO虛擬音效卡 380
11.1 引言 381
11.2 關於ASIO 383
11.3 ASIO用戶驅動 384
11.3.1 COM介面 384
11.3.2 安裝與卸載 386
11.3.3 IASIO介面 387
11.3.4 技術核心 390
11.3.5 計算延遲 392
11.4 內核驅動實現 393
11.4.1 同步 393
11.4.2 原理 393
11.4.3 實現 396
11.5 ASIO音頻軟體 396
11.6 小結 397
從本章開始的三章內容,講的都是「驅動安裝」這個話題。在本章中,介紹了系統中和驅動安裝有關的各種系統模塊。讀者通過閱讀本章後,至少能夠掌握這兩個基本知識:系統如何識別一個舊設備,並為它載入合適的驅動文件;系統如何發現一個新設備,並完成驅動安裝。
第12章 設備驅動安裝入門 399
12.1 基礎知識預介 400
12.1.1 設備類型 400
12.1.2 設備實例ID 401
12.1.3 驅動載入和安裝 403
12.2 安裝模塊 404
12.2.1 內核PNP管理器 405
12.2.2 用戶PNP管理器 406
12.2.3 安裝介面函數(Setup API) 408
12.2.4 配置管理器介面(CfgMgr API) 410
12.2.5 類安裝器(Class Installers) 410
12.2.6 類協安裝器(Class Co-Installers) 410
12.2.7 設備協安裝器(Device Co-Installers) 411
12.2.8 驅動包(Driver Package) 412
12.2.9 驅動倉庫(Driver Store) 413
12.2.10 設備管理器(Device Manager) 414
12.2.11 安裝程序 415
12.2.12 新設備向導 416
12.2.13 添加硬體向導 416
12.2.14 驅動安裝器(Driver Installer) 416
12.3 重要問題 417
12.3.1 尋找和選擇 417
12.3.2 32位與64位系統兼容 418
12.3.3 系統重啟 419
12.4 安裝模式 420
12.4.1 示例1:客戶端模式 421
12.4.2 示例2:伺服器模式 423
12.5 安裝器編程 424
12.5.1 DIF碼 424
12.5.2 處理流程 427
12.5.3 工程示例 429
12.5.4 注冊 430
12.6 小結 431
INF文件即驅動程序的「安裝文件」,它包含了各種與驅動安裝有關的指令信息。通過INF文件,系統知道如何處理驅動包中的各個文件,並在系統注冊表中做出准確記錄。本章主要從指令和域,這兩個方面進行講解。
第13章 深入解析INF文件 432
13.1 概述 433
13.1.1 域 433
13.1.2 指令 434
13.1.3 多系統 435
13.2 注冊表指令 436
13.2.1 縮寫根鍵 436
13.2.2 軟體鍵 437
13.2.3 硬體鍵 437
13.2.4 AddReg 438
13.2.5 DelReg 440
13.2.6 BitReg 441
13.3 文件操作指令 441
13.3.1 CopyFiles 441
13.3.2 DelFiles 443
13.3.3 RenFiles 443
13.4 服務指令 444
13.4.1 AddService 444
13.4.2 DelService 445
13.5 基本域 446
13.5.1 版本域 446
13.5.2 文件域 447
13.5.3 默認安裝域 451
13.5.4 控制域 454
13.5.5 字元串域 457
13.6 設備類安裝域 458
13.6.1 主域 459
13.6.2 服務子域 461
13.7 介面類安裝域 461
13.8 廠商/產品域 462
13.8.1 廠商域 463
13.8.2 產品域 464
13.9 設備安裝域 464
13.9.1 硬體子域 466
13.9.2 協安裝器子域 467
13.9.3 介面子域 468
13.9.4 廠商默認配置子域 469
13.9.5 邏輯優先配置子域 470
13.10 ChkInf介紹 471
13.11 小結 472
驅動安裝程序讓你的驅動軟體顯得更加專業,所以,放棄手動安裝驅動的做法吧,你的驅動將顯得更靚。本章的示例軟體MyDrvInst,可以作為讀者設計更漂亮的安裝軟體的開始。
第14章 設計驅動安裝程序 473
14.1 驅動包 474
14.1.1 安裝方式 474
14.1.2 安裝驅動包 475
14.1.3 卸載驅動包 476
14.2 驅動更新 477
14.2.1 設備已連接 477
14.2.2 設備未連接 478
14.2.3 枚舉系統設備 481
14.3 分析INF文件 484
14.3.1 函數介紹 484
14.3.2 列印設備ID 486
14.4 MyDrvInst介紹 487
14.5 製作軟體安裝包 490
14.5.1 視圖介紹 490
14.5.2 我們的工程 492
14.5.3 編譯執行 493
14.6 小結 494
附錄A CY001 USB開發板 495
附錄B VisualKD + VMWare實現單機內核調試 501

閱讀全文

與驅動開發技術詳解pdf相關的資料

熱點內容
崔玉濤育兒pdf 瀏覽:639
生命的重建pdf下載 瀏覽:457
戶口本照片加密 瀏覽:380
安卓版抖音為什麼放大不了 瀏覽:787
wincc編譯在哪裡 瀏覽:214
幼兒編程在線學 瀏覽:662
演算法專利證書 瀏覽:409
切瓜解壓視頻大全 瀏覽:525
c語言執行命令行是非同步還是同步 瀏覽:382
用表情命令別人的成語 瀏覽:880
EDA編譯和綜合的區別 瀏覽:673
python密碼排序教學 瀏覽:554
虛擬雲主機試用虛擬代理伺服器 瀏覽:756
androidfastjson下載 瀏覽:437
藍牙傳送安裝包在哪個文件夾 瀏覽:834
百度python爬蟲入門 瀏覽:767
一指禪怎麼用app 瀏覽:461
linux查找後綴 瀏覽:274
反編譯人員 瀏覽:832
電梯里的雲伺服器 瀏覽:78