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

windows驅動開發詳解pdf

發布時間:2022-10-03 06:20:44

1. Windows設備驅動程序WDF開發的前言

Windows設備驅動程序,過去是WDM(Windows Driver Model)框架,編程復雜,初學者難以掌握其編程要領。為了解決這一問題,微軟對WDM驅動程序的架構做了改進,形成了全新的WDF(Windows Driver Foundation)框架結構。它提供了面向對象和事件驅動的驅動程序開發框架,大大降低了開發難度。從現在開始,掌握Windows設備驅動程序的開發人員,由過去的「專業」人士,將變為「普通」大眾。
WDF驅動程序包括兩個類型,一個是內核級的,稱為KMDF(Kernel-Mode Driver Framework),為SYS文件;另一個是用戶級的,稱為UMDF(User-Mode Driver Framework),為DLL文件。
內核模式驅動程序:這類驅動程序作為內核模式操作系統組件的一部分執行,它們管理I/O、即插即用、內存、進程和線程、安全等。內核模式驅動程序通常為分層結構。
用戶模式驅動程序:這類驅動程序通常提供 Win32 應用程序與內核模式驅動程序或其他操作系統組件之間的介面。用戶模式驅動程序支持基於協議或基於串列匯流排(如攝像機和便攜音樂播放器)的設備。
WDF的運行平台有:Microsoft Windows Server® 2008、Microsoft Windows Vista、Microsoft Windows Server® 2003、Microsoft Windows XP、Microsoft Windows 2000 (KMDF only)。

2. Windows設備驅動程序WDF開發的本書內容

本書主要討論KMDF,KMDF是WDM的繼續,可以把WDM驅動程序轉換為KMDF驅動程序。還對UMDF設備驅動程序作了編程入門介紹。
過去,我研究過如何用DriverStudio開發工具開發Windows下的WDM設備驅動程序,承蒙電子工業出版社的厚愛,出版了《Windows 2000/XP WDM設備驅動程序開發》一書。
WDF的簡單化編程,導致DriverStudio退出了Windows設備驅動程序的開發,將DriverStudio定格在3.2版本。
從形式上看,KMDF的對象和DriverStudio的類,具有相似的地方。本書的內容安排和《Windows 2000/XP WDM設備驅動程序開發》的基本一致,具體安排如下:
章 名 主 要 內 容
第1章 Windows 2000和WDM驅動程序 KMDF是WDM的繼續,KMDF構建在WDM之上。對於一些Windows驅動程序的基本概念,初學者仍需要了解,如Windows 2000中的組件、驅動程序種類,以及WDM驅動程序特點等
第2章 KMDF驅動程序框架 KMDF驅動程序框架由對象和事件回調常式構成。KMDF框架中所有的事物都由對象來表示,各種事件處理都由事件回調常式來完成。學習KMDF編程,主要是學習KMDF的各種對象、對象函數和事件回調常式的編程
第3章 基本對象 KMDF提供了許多對象,本章只介紹一些基本的對象,如WDFREQUEST對象、WDFQUEUE對象等,還介紹了數據同步訪問、字元串操作和QueueSample實例
第4章 KMDF驅動程序編程入門 介紹Windows Vista下的KMDF驅動程序編程入門,包括KMDF驅動程序編程環境的建立,KMDF的創建、生成及安裝過程,以及Win32 Console和MFC兩種應用程序的編程
第5章 KMDF驅動程序和應用程序之間的通信 介紹應用程序與KMDF之間的通信,包括應用程序對KMDF的通信,以及KMDF對應用程序的通信
第6章 即插即用常式 主要介紹PnP組件、即插即用常式的載入和卸載順序及PnpPowerSample實例等
第7章 電源管理 主要介紹系統電源狀態與設備電源狀態、電源管理控制標志位、設備的喚醒特徵和空閑檢測、電源管理編程及IdleSample實例等
第8章 KMDF過濾器驅動程序 描述如何寫一個過濾器驅動程序,該驅動程序可位於功能驅動程序的上面或下面,它通過過濾流經它的IRP來修改設備的行為
第9章 USB設備開發 主要介紹USB設備的配置/介面/端點、USB數據的傳輸方式、USB描述符、USB編程對象、USB編程(如激活配置與中止配置、同步操作、非同步操作)及USBSample實例等
第10章 PCI設備驅動程序開發 本章就硬體訪問、中斷處理和DMA傳輸3個方面展開討論,並以CY7C09449晶元為例,給出一個經過測試的PCI設備驅動程序實例——PCISample實例。另外,還給出了一個不依靠硬體設備的DMASample實例
第11章 UMDF驅動程序編程入門 介紹UMDF驅動程序編程入門,包括UMDF驅動程序的創建、生成及安裝,以及一個簡單的實例編程
第12章 WinDbg使用介紹 WinDbg是微軟提供的一個功能非常強大的調試軟體,可以在源代碼級別調試Windows下的WDF驅動程序。本章主要介紹用WinDbg調試KMDF和UMDF
微軟推薦的WDF書籍是《Developing Drivers with the Microsoft Windows Driver Foundation》,作者是Penny Orwick和Guy Smith。
微軟提供的學習WDF的中文網站地址是:www. microsoft. com/china/whdc。
開發工具
微軟提供的WDF驅動程序開發工具包WDK的最新版本是WDK 1.7,可以從其網站下載。
本書實現WDF驅動程序及應用程序實例所用的工具是:Visual C++ 6.0和WDK 1.7。
本書配套光碟
本書配套光碟中含有書中所有實例的驅動程序和應用程序的全部源代碼,以及生成的驅動程序和可執行的應用程序。除USBSample和PCISample實例因需要硬體設備的支持,讀者無法運行外,其他11個實例均可在Windows XP和Vista下運行。
本書特點
編程入門:詳細的步驟介紹,初學者的良師益友。
應用實例:對程序作了必要的注釋,了解驅動程序編程的捷徑。
簡單實用:KMDF的編程非常簡單,Winows硬體開發工程師必須掌握。
理解深刻:筆者精通Winows設備驅動程序開發和硬體開發,所有實例均為自己創造,每個實例都有其獨特意義,筆者用實例詮釋自己對KMDF的理解和認識。
微軟推薦的WDF書籍是「理論派」,以講解理論為主,講得非常詳細和全面;本書是「實戰派」,全書以實例為主,用實例帶你快速入門。
善於學習,勤於思考,勇於實踐。用這句話與投身硬體開發的青年學子共勉。
希望這本書能對您現在或將來的工作有所幫助。
本書得以順利出版,要特別感謝周利莉的一貫支持;感謝何海洋和趙慶花的支持;感謝陳建波和何亞壘的支持;感謝朱沭紅編輯和電子工業出版社。
由於作者的理論水平有限,書中難免出現差錯和遺漏,敬請廣大計算機應用開發人員批評指正,
十年時間,跟蹤Windows設備驅動程序的開發,驅動程序VxD->WDM->KMDF,工具VtoolsD->DDK、DriverWorks->WDK,但願WDF長久。別了WDM,別了DriverStudio。
缺月掛疏桐,漏斷人初靜。誰見幽人獨往來,縹緲孤鴻影。……
武安河
2009年元旦

3. <<Windows驅動開發技術詳解>>哪裡有完整的電子書

http://dl3.csdn.net/fd.php?i=95896923493636&s=

這可是我用CSDN上的6分換的
如果不行,你直接去那上面下

http://download.csdn.net/source/692349

4. 如何開發Windows NT設備驅動程序

一、開發工具
1,虛擬機和操作系統
本人使用的win10操作系統,並安裝了「VMware Station11」,在虛擬機中暫時只安裝了一個「win7 x64」操作系統,後續將安裝一個win10虛擬機系統。一般情況下,我都是在虛擬機操作進行驅動的安裝和調試,這樣可以防止將本機的操作系統弄亂。
後續將嘗試「通過本機winDbg來調試虛擬機中的驅動」。這是一個比較高級的調試方法,點擊打開鏈接。
2,開發工具
本人主要使用「WDK7600」(點擊打開鏈接)和"VS2015+wdk10"(點擊打開鏈接)。我把前者安裝在「win7 X64」虛擬機中安裝,把後者安裝在本機和實驗室電腦上。由於我使用的教材《Windows驅動開發詳解》和學習博客都是用wdk7這個版本開發,為了環境一致,故選擇了在虛擬機上試驗這些教材上的示例代碼。
關於wdk7,參考博客:點擊打開鏈接。
關於「VS2015+wdk10」,需要在win10系統下,先安裝VS2015,再安裝wdk10,此外還要安裝VS2015的update。(winDbg集成到了wdk10下,路徑:C:\Program Files (x86)\Windows Kits\10\Debuggers\x64)。
注意事項:
1)VS2015默認安裝,是不安裝c++和sdk的,需要選擇自定義安裝;
2)如果已經默認安裝了,這個時候再安裝wdk10,會給出警告;
3)此時,可以選擇先用VS2015新建一個c++項目,然後會提示你安裝c++部分的模塊;
4)安裝好後,就可以正常安裝wdk10了,如果wdk10安裝好後,還有編譯問題,也需要先去VS下看看是否卻c++相關模塊,並按上述3安裝完整。
另一個需要注意的是,編譯報「Inf2Cat error -2: "Inf2Cat, signability test failed. "Double click to see the tool output」,
參考博客:點擊打開鏈接
是因為inf文件的「DriverVer」的時間不對,VS2015默認的「Inf2cat」中的時間為UTF,需要在工程屬性-》「inf2cat」選擇中,將local時間打開。
3,調試工具
1)debugview
在驅動程序中,調用KdPrint函數(類似C語言中printf),然後通過debugview查看列印信息。這是最常用的一種調試方法。
需要注意的是:首先要在「capture」菜單中勾選「kernel」相關的選項,表示抓取內核的信息。然後,需要使用「管理員身份」運行該軟體。Debugview在win10下經常報錯:

需要到「C:\Windows\System32\drivers」中找到「dbgv.sys」,刪除它,再使用「管理員身份」運行該軟體。
2)

4,調試手段
1)驅動安裝階段,可以到「C:\Windows\System32\drivers」目錄下看相應的「sys」文件是否到位。
2)cmd->regedit打開注冊表,再在「編輯」菜單下「查找」對應的設備信息。
3)使用KdPrint函數列印log和DebugView軟體抓取log(最常用的手段);
4)在驅動代碼中寫log文件(理論上可行,待探索);
5)存儲mp信息。所謂mp信息,就是在系統奔潰之前,操作系統會將當前的調用堆棧記錄成一個mp文件。(詳細設置系統轉存mp信息,可以參考《Windows驅動開發技術詳解》最後一章,或博客:點擊打開鏈接)。設置好mp文件後,遇到藍屏,再將mp文件放到WinDbg中查看,這也是一個中常用的調試手段。
6)IRPTrace,這個軟體可以跟蹤IRP,但是win7及後續版本都不可用,可以嘗試自己寫程序跟蹤。
7)PCITree,查看設備掛載;
8)WinObject,查看驅動中的各種對象信息。
9)WinDbg調試虛擬機,這是一個高級應用。配合VS2015可以查看「內存」、「調用堆棧」、「線程」和「反匯編」。
註:在驅動的開發過程,需要逐漸掌握各種工具和調試手段。

二、開發框架
從我最近的瀏覽的資料來看,Windows驅動程序大致有三種類型:NT驅動、WDM驅動和WDF驅動。其中,NT驅動是非即插即用(Plug-in-and-Play,PNP)式的,它是一項系統服務,目前的設備類驅動大都不是這種類型,不是我的關注點,後面將不展開介紹。WDM驅動和WDF驅動都是即插即用的驅動,後者是前者的升級版。
1,WDM框架
WDM是早前的Windows驅動開發框架,雖然現在微軟推薦用WDF,但是,學習WDM一是能夠更對地了解操作系統的內部機制(WDF是對WDM更高層次的封裝),二是《Windows驅動開發技術詳解》以及網上的很多博文都是用的WDM,從學習角度出發也需要掌握一定的WDM知識。
WDM框架的基本知識,可以參考博文:點擊打開鏈接。後續我也用單獨的博文來講解這方面的內容,主要包括:
1)驅動對象與設備對象(DriverObject vs Device Object);
2)物理設備對象(PDO)和功能設備對象(FDO);
3)驅動的層次結構:水平層次(eg:FDO之間)和垂直層次(FDO到PDO);
4)入口函數(DriverEntry);
5)設備擴展(DRIVER_EXTENSION);
6)重要的常式(routine):AddDevice
7)IRP機制(I/O Request Package):MajorFunction(MJ))和MinorFunction(MN);

2,WDF框架
對於WDF框架,可以參考《Window7設備驅動開發》這本書。WDF框架可以分為KMDF(Kernel Model Driver Frame)和UMDF(User Model Driver Frame),其驅動模型如下:
1)WDF對象(屬性、方法和事件);
2)即插即用和電源管理的集成;
3)集成的I/O排隊和取消(queue);
4)I/O模型。在Windows中,IRP的功能不僅僅是向驅動程序提供傳統的I/O請求(讀、寫、創建等)。它是操作系統和驅動程序、驅動程序和驅動程序之間一種基於數據包的通信機制。

3,一個典型的KMDF驅動程序
通過VS2015新建一個項目,選擇「KMDF」,它會產生如下文件:

1)public.h中定義GUID和CTL_CODE,並提供給應用程序使用;
2)trace.h定義的調試宏和函數,暫不關注;
3)driver.h和driver.c定義了主要的框架代碼。包括:入口函數(DriverEntry)、載入設備的常式(KMDFDriver1EvtDeviceAdd)和清理上下文區的函數。該文件都是框架性的代碼,在驅動開發的過程中,可以選擇一個框架,選定框架後,一般不在該文件中添加功能,而是放到「device.c」和「queue.c」。
4)device.h和device.c,主要處理設備相關的功能,與設備交互的實現放在該文件中。主要包括設備初始化和資源釋放;
5)queue.h和queue.c,主要處理IRP,包括KMDFDriver1EvtIoDeviceControl;

5. 《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書籍中為數不多的暢銷書。

6. 《Linux設備驅動開發詳解4.0》pdf下載在線閱讀全文,求百度網盤雲資源

《Linux設備驅動開發詳解4.0》網路網盤pdf最新全集下載:
鏈接: https://pan..com/s/1wxaYK87l11FDur15aS6FTQ

?pwd=kn9d 提取碼: kn9d
簡介:Linux設備驅動開發詳解介紹了Linux設備驅動開發理論、框架與實例,詳細說明了自旋鎖、信號量、完成量、中斷頂/底半部、定時器、內存和I/O映射以及非同步通知、阻塞I/O、非阻塞I/O等Linux設備驅動理論,以及字元設備、塊設備、tty設備、I2c設備、LCD設備、音頻設備、USB設備、網路設備、PCI設備等Linux設備驅動架構中各個復雜數據結構和函數的關系,並講解了Linux驅動開發的大量實例,使讀者能夠獨立開發各類Linux設備驅動。

7. VC驅動編程

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

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

8. 深入淺出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

9. windows 驅動開發---IrpTrace 的使用

你可以到網上下個教程嘛.

10. 怎樣從零開始學習WINDOWS下的驅動開發

對於初學者,我們需要一個簡單的例子,就和C語言裡面的HelloWorld一樣,編譯運行,接著列印出"Hello world!"。我們要先建立起對WDF驅動的一個初步而強烈的感性認識,然後再對照著例子來學習WDF的概念,看它的代碼是怎麼實現的,這樣就會有深刻的認識。這就是教育學上所謂的循序漸進。按照這個思路,我們就先要編譯安裝運行一個簡單驅動程序例子。我瀏覽了下WDF的例子之後,發現Echo這個例子比較適合我們的這個思路。下面就開始編譯、安裝和運行Echo這個例子。我是在XP下面做的實驗,如果在其他操作系統下,也類似。在開始試驗之前,讀者可以從微軟的網站下載WDK開發包,大小約700Mbytes,需要耐心地下才能下完。

閱讀全文

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

熱點內容
程序員降薪么 瀏覽:200
u盤內部分文件夾不顯示 瀏覽:395
手機上pdf怎麼加密碼 瀏覽:1000
51單片機hex文件 瀏覽:328
vsc怎麼編譯bin 瀏覽:5
安卓基站延遲怎麼辦 瀏覽:543
亞馬遜店鋪可以遷移到雲伺服器嗎 瀏覽:840
真空泵壓縮比會改變嗎 瀏覽:329
示波器app怎麼看 瀏覽:612
米家app英文怎麼改 瀏覽:605
學習編程你有什麼夢想 瀏覽:886
農行信用報告解壓密碼 瀏覽:217
小程序員調試信息 瀏覽:183
電腦打代碼自帶編譯嗎 瀏覽:273
和平怎麼在和平營地轉安卓 瀏覽:463
我的世界中如何查看伺服器的人數 瀏覽:618
台式機改為網路伺服器有什麼好處 瀏覽:960
騰訊雲輕量應用伺服器如何登陸 瀏覽:620
考研復試c語言編譯器 瀏覽:150
安卓的字體怎麼變粗 瀏覽:253