Windows 7設備驅動程序開發(fā)

出版時間:2012-1  出版社:人民郵電  作者:里夫斯  頁數(shù):220  譯者:張猛,紀小玲,周姝嫣  
Tag標簽:無  

內容概要

  設備驅動程序是非常特殊的軟件,應用程序通過它才能與外界溝通。Windows
7與外界的所有溝通都必須有設備驅動程序的參與。
  本書介紹了編寫Windows
7設備驅動程序所需的知識,涵蓋了用戶模式驅動程序開發(fā)、內核模式驅動程序開發(fā)、WDF架構、驅動程序調試等主題。作者展示了如何利用微軟提供的強大工具和模型,高效地開發(fā)穩(wěn)定、健壯的驅動程序。
  通過本書,你將學會:
  如何使用WDF減少開發(fā)時間,提高系統(tǒng)穩(wěn)定性,增強實用性;
  如何利用UMDF和KMDF進行開發(fā);
  如何以最佳方式設計、開發(fā)、調試用戶模式驅動程序和內核模式驅動程序;
  如何管理I/O請求和隊列、自管理I/O、同步、鎖、即插即用、電源管理和設備枚舉;
  如何利用COM開發(fā)UMDF;
  如何利用安全的默認設置、參數(shù)驗證、Unicode計數(shù)字符串和安全的設備命名技巧,確保用戶模式驅動程序的安全。
  無論是開發(fā)實驗器材、通信硬件或其他設備的Windows驅動,本書都有助于加速產(chǎn)品的上市。

作者簡介

  Ronald D. Reeves
  工 程學和計算機科學專業(yè)雙料博士。他具有40多年的計算機硬件、軟件和驅動程序的設計和開發(fā)經(jīng)驗,是軟件開發(fā)和咨詢公司Software
Genesis的創(chuàng)始人兼董事長。他是美國知名的技術作家、咨詢顧問和教師,是Win32 System Services(Prentice
Hall,
2001)的作者之一,曾為兩本介紹設備驅動程序的圖書做過技術審稿人。目前他在勞倫斯理工大學和克利里大學教授研究生課程。

書籍目錄

第一部分 設備驅動程序體系結構概述
 第1 章 對象  
  1.1 對象的本質  
  1.2 軟件對象是什么  
  1.3 預備知識  
  1.4 軟件組件  
 第2 章 WDF 體系結構  
  2.1 WDF 組件的功能  
  2.2 WDF 的設計目標  
  2.3 WDF 中的設備和驅動程序支持  
  2.4 WDF 驅動程序模型  
  2.5 WDF 對象模型  
  2.5.1 內核模式對象  
  2.5.2 用戶模式對象  
  2.6 即插即用和電源管理支持  
  2.7 集成的I/O 排隊和取消  
  2.7.1 并發(fā)  
  2.7.2 I/O 模型  
  2.7.3 I/O 請求流程  
  2.7.4 設備I/O 請求  
  2.7.5 即插即用和電源管理請求  
  2.8 WMI 請求(僅限內核模式驅動程序)  
  2.9 驅動程序框架  
  2.9.1 內核模式框架  
  2.9.2 用戶模式框架  
  2.10 Windows 內核  
  2.10.1 反射器  
  2.10.2 驅動程序宿主進程  
  2.10.3 驅動程序管理器  
  2.11 開發(fā)和測試工具  
  2.11.1 PFD  
  2.11.2 SDV   
  2.11.3 框架驗證器  
  2.11.4 跟蹤日志  
  2.11.5 調試器擴展  
  2.11.6 適用性和版本控制  
第二部分 用戶模式驅動程序
 第3 章 Windows 7 用戶模式驅動程序概述和操作  
  3.1 在用戶模式中支持的設備  
  3.2 UMDF 模型概述  
  3.2.1 UMDF 對象模型  
  3.2.2 UMDF 對象  
  3.3 驅動程序回調接口  
  3.4 UMDF 驅動程序功能  
  3.4.1 身份模擬  
  3.4.2 設備屬性存儲  
  3.5 I/O 請求流  
  3.5.1 I/O 請求調度  
  3.5.2 創(chuàng)建、清理和關閉請求  
  3.5.3 創(chuàng)建、讀、寫和設備I/O 控制請求  
  3.6 I/O 隊列  
  3.6.1 調度類型  
  3.6.2 隊列和電源管理  
  3.7 I/O 請求對象  
  3.7.1 根據(jù)I/O 請求獲取緩沖區(qū)  
  3.7.2 向I/O 目標發(fā)送I/O 請求  
  3.7.3 為I/O 請求創(chuàng)建緩沖區(qū)  
  3.7.4 取消和掛起的請求  
  3.7.5 完成I/O 請求  
  3.7.6 自適應超時  
  3.8 自管理I/O   
  3.9 同步問題  
  3.10 鎖  
  3.11 即插即用和電源管理通知  
  3.12 設備枚舉和啟動  
  3.13 關閉設備電源和移除設備  
  3.14 構建、測試和調試  
  3.14.1 安裝和配置  
  3.14.2 版本控制和更新  
 第4 章 針對UMDF 進行驅動程序編程  
  4.1 Windows I/O 概述  
  4.2 COM 簡介  
  4.3 UMDF 體系結構  
  4.4 必需的驅動程序功能  
  4.5 UMDF 示例驅動程序  
  4.5.1 最小UMDF 驅動程序:Skeleton 驅動程序  
  4.5.2 Skeleton 驅動程序的類、對象和接口  
  4.6 驅動程序動態(tài)鏈接庫和導出  
  4.6.1 驅動程序入口點:DllMain  
  4.6.2 獲得類對象:DllGetClassObject   
  4.7 COM 支持函數(shù)  
  4.7.1 IUnknown 方法  
  4.7.2 IClassFactory 接口  
  4.7.3 驅動程序回調對象  
  4.7.4 設備回調對象  
  4.8 以Skeleton 驅動程序為基礎進行開發(fā)  
  4.8.1 自定義導出文件  
  4.8.2 自定義源文件  
  4.8.3 自定義INX 文件  
  4.8.4 自定義Comsup.cpp 文件  
  4.8.5 將特定于設備的代碼加入Driver.cpp  
  4.8.6 將特定于設備的代碼加入Device.cpp  
 第5 章 使用COM 開發(fā)UMDF 驅動程序  
  5.1 入門指南  
  5.1.1 COM 基礎知識  
  5.1.2 HRESULT   
  5.2 使用UMDF COM 對象  
  5.2.1 獲得UMDF 對象的接口  
  5.2.2 引用計數(shù)  
  5.3 基本的基礎設施實現(xiàn)  
  5.3.1 DllMain   
  5.3.2 DllGetClassObject   
  5.3.3 驅動程序對象的類工廠  
  5.3.4 實現(xiàn)UMDF 回調對象  
  5.3.5 實現(xiàn)QueryInterface   
第三部分 內核模式驅動程序
 第6 章 Windows 7 內核模式驅動程序概述與操作  
  6.1 KMDF 支持的設備  
  6.2 KMDF 組件  
  6.3 KMDF 驅動程序結構  
  6.4 KMDF 和WDM 驅動程序比較  
  6.5 設備對象和驅動程序角色  
  6.5.1 過濾器驅動程序和過濾器設備對象  
  6.5.2 功能驅動程序和功能設備對象  
  6.5.3 總線驅動程序和物理設備對象  
  6.5.4 舊版設備驅動程序和控制設備對象  
  6.6 KMDF 對象模型  
  6.6.1 方法、屬性和事件  
  6.6.2 對象層次結構  
  6.6.3 對象特性  
  6.6.4 對象上下文  
  6.6.5 對象創(chuàng)建和刪除  
  6.7 KMDF I/O 模型  
  6.7.1 I/O 請求處理程序  
  6.7.2 I/O 隊列  
  6.7.3 I/O 請求對象  
  6.7.4 從I/O 請求檢索緩沖區(qū)  
  6.7.5 I/O 目標  
  6.7.6 創(chuàng)建I/O 請求緩沖區(qū)  
  6.7.7 取消和掛起請求  
  6.7.8 完成I/O 請求  
  6.7.9 自托管I/O   
  6.7.10 訪問IRP 和WDM 結構  
 第7 章 即插即用和電源管理  
  7.1 即插即用和電源管理概述  
  7.2 設備枚舉和啟動  
  7.2.1 功能或過濾器設備對象的啟動順序  
  7.2.2 物理設備對象的啟動順序  
  7.2.3 設備電源關閉和移除  
  7.3 WMI 請求處理程序  
  7.4 同步問題  
  7.4.1 同步范圍  
  7.4.2 執(zhí)行級別  
  7.4.3 鎖  
  7.4.4 同步機制的交互作用  
  7.5 安全  
  7.5.1 安全默認值  
  7.5.2 參數(shù)驗證  
  7.5.3 Unicode 計數(shù)字符串  
  7.5.4 安全設備命名技術  
 第8 章 內核模式的安裝和生成  
  8.1 WDK 生成工具  
  8.2 生成環(huán)境  
  8.3 生成項目  
  8.4 生成Featured Toaster   
  8.4.1 Makefile 和Makefile.inc   
  8.4.2 源文件  
  8.4.3 生成過程  
  8.5 安裝KMDF 驅動程序  
  8.5.1 WDF 輔助安裝程序  
  8.5.2 INF  
  8.5.3 KMDF 驅動程序的INF  
  8.5.4 wdffeatured.inf  
  8.6 目錄文件和數(shù)字簽名  
  8.7 安裝Featured Toaster  
  8.8 測試KMDF 驅動程序  
  8.8.1 PREfast   
  8.8.2 SDV  
  8.8.3 KMDF 日志  
  8.8.4 KMDF 驗證程序  
  8.8.5 調試KMDF 驅動程序  
  8.8.6 內核調試  
  8.8.7 KMDF 驅動程序功能  
  8.9 調試宏和例程  
  8.10 WDF 調試程序擴展命令  
  8.11 使用WPP 跟蹤與KMDF 驅動程序  
  8.12 使用WinDbg 與Featured Toaster   
  8.13 版本控制和動態(tài)綁定  
 第9 章 為KMDF 編寫驅動程序  
  9.1 KMDF 與WDM 示例之間的差別  
  9.2 KMDF 示例中使用的宏  
  9.3 KMDF 驅動程序結構和概念  
  9.3.1 對象創(chuàng)建  
  9.3.2 對象上下文區(qū)  
  9.3.3 I/O 隊列  
  9.3.4 I/O 請求  
  9.4 最小的KMDF 驅動程序:SimpleToaster   
  9.4.1 創(chuàng)建WDF 驅動程序對象:DriverEntry   
  9.4.2 創(chuàng)建設備對象、設備接口和I/O 隊列:EvtDriver-DeviceAdd  
  9.4.3 設備對象和設備上下文區(qū)  
  9.4.4 設備接口  
  9.4.5 默認I/O 隊列  
  9.4.6 處理I/O 請求:EvtIoRead、EvtIoWrite、EvtIoDevice-Control
  
  9.5 純軟件驅動程序示例  
  9.5.1 文件創(chuàng)建和關閉請求  
  9.5.2 其他的設備對象特性  
  9.5.3 設置其他設備對象屬性  
 第10 章 為即插即用和電源管理編寫程序  
  10.1 注冊回調函數(shù)  
  10.2 管理電源策略  
  10.3 通電和斷電時的回調函數(shù)  
  10.4 支持喚醒信號的回調函數(shù)  
 第11 章 為WMI 支持編寫程序  
  11.1 WMI 體系結構  
  11.2 注冊為WMI 數(shù)據(jù)提供程序  
  11.3 處理WMI 請求  
  11.4 WDM 驅動程序的WMI 要求  
  11.5 WMI 類名和基類  
  11.6 觸發(fā)WMI 事件  
  11.7 解決具體的WMI 問題  
  11.7.1 驅動程序的WMI 類并不出現(xiàn)在\root\wmi 命名空間中  
  11.7.2 不能訪問驅動程序的WMI屬性或方法  
  11.7.3 未接收驅動程序的WMI事件  
  11.7.4 改變WMI 請求的安全設置并不生效  
  11.8 測試WMI 驅動程序支持的技術  
  11.8.1 WMI IRP 和系統(tǒng)事件日志  
  11.8.2 WMI WDM 提供程序日志  
  11.9 WMI 事件跟蹤  
 第12 章 編寫KMDF 硬件驅動程序  
  12.1 支持設備中斷  
  12.1.1 創(chuàng)建中斷對象  
  12.1.2 創(chuàng)建中斷對象的代碼  
  12.1.3 啟用和禁用中斷  
  12.1.4 啟用中斷的代碼  
  12.1.5 禁用中斷的代碼  
  12.1.6 啟用中斷后和禁用中斷前的處理  
  12.2 處理中斷  
  12.2.1 EvtInterruptIsr 回調函數(shù)的代碼  
  12.2.2 中斷的延遲處理  
  12.3 映射資源  
  12.3.1 映射資源的代碼  
  12.3.2 取消映射資源的代碼  
 第13 章 編寫多個I/O 隊列程序并編寫I/O 程序  
  13.1 編寫I/O 隊列簡介  
  13.2 創(chuàng)建和配置隊列  
  13.2.1 為寫請求創(chuàng)建隊列的代碼  
  13.2.2 為讀請求創(chuàng)建隊列的代碼  
  13.2.3 為設備I/O 控制請求創(chuàng)建隊列的代碼  
  13.3 處理并行隊列的請求  
  13.3.1 處理I/O 請求的代碼  
  13.3.2 執(zhí)行緩沖I/O   
  13.4 將請求轉發(fā)給隊列  
  13.5 從手動隊列獲取請求  
  13.6 讀取和寫入注冊表  
  13.7 監(jiān)視器計時器:自管理I/O   
  13.7.1 啟動和重啟自管理I/O設備  
  13.7.2 設備斷電和移除期間的自管理I/O   
  13.7.3 實現(xiàn)監(jiān)視器計時器  
附錄 驅動程序信息網(wǎng)站  
參考文獻  

章節(jié)摘錄

版權頁:插圖:WDF的主要設計目標包括:簡化即插即用和電源管理的驅動程序支持,在內核模式和用戶模式下都能使用即插即用和電源管理。無縫地處理即插即用事件和電源事件,對于系統(tǒng)的可靠性和良好用戶體驗來說至關重要,但要想正確實現(xiàn)也出奇地復雜。這種復雜性多數(shù)是因為驅動程序必須確定處理每個即插即用或電源管理請求的正確方式。正確的處理取決于驅動程序的位置、設備棧、設備當前的狀態(tài)、操作系統(tǒng)當前的狀態(tài),有時還取決于設備或系統(tǒng)即將出現(xiàn)的狀態(tài)變化的特性。這類支持通常需要數(shù)千行代碼來處理復雜的、依賴于狀態(tài)的各種情況。大多數(shù)驅動程序都需要編寫代碼來處理那些它們根本不支持的請求。WDF將狀態(tài)跟蹤和決策制定邏輯集中在框架內,而不再要求在每個驅動程序中完成這些邏輯。WDF對即插即用和電源管理的支持基于以下原則。

編輯推薦

   Windows 7設備驅動程序開發(fā)必備   融匯作者多年開發(fā)經(jīng)驗   深入底層探究研發(fā)之道

圖書封面

圖書標簽Tags

評論、評分、閱讀與下載


    Windows 7設備驅動程序開發(fā) PDF格式下載


用戶評論 (總計18條)

 
 

  •   windows驅動程序需要兼容windows7,要學習學習了,內容挺全的
  •   設計的內容都是點到為止。比較適合初學者。不過現(xiàn)在驅動方面的書太少了,有一本就買一本吧。
  •   書是好書,但很難,偏硬件,看不太懂。
  •   比想像中薄
  •   之前看過英文原版,但是英文不是很好。所以特地買了才出的中文版,好好讀下。
  •   這本書是微軟官方推薦的基礎教程,對設備驅動程序開發(fā)涉及到的基本概念、常用方法進行了通俗易懂的講解,適合初學者學習使用。
  •   感覺此書有一定windows編程經(jīng)驗的人看會有很大的幫助,尤其是以前做過WDM驅動的,現(xiàn)在想用WDF模式開發(fā),那么此書是一個很好的選擇。如果是想把此書當做入門書的話,感覺在理解上會有一定的難度。
  •   概念講的比較細,但是感覺例子太少。
  •   還沒有看,但是同事推薦的,應該還可以
  •   這本書講的不是太好,也就是把文檔翻譯下,或者說把數(shù)據(jù)結構解釋一下,沒什么!
  •   書不咋的。不過英文不好的人,看MSDN實在困難,看看這個也好
  •   仔細看完知道我為什么給一星了,太后悔了,買完書第二天才發(fā)現(xiàn)這本書的評價如此之差,退貨也來不及了,只希望能警示后人。

    This book was recently reviewed in detail by four le***** experts in Windows device driver development (Google "ntinsider_2011_02").

    I got a pretty good laugh at some of those reviews! I agree with every single one of them; this book is a waste of money...

    Don Burn: "New developers could use a good introductory book on WDF to get them going. This book is not it. For experienced developers, this book is a total waste of time, since it covers things at a very high level with no new information."

    Scott Noone: "In case it hasn't been clear from this review, *do not buy this book*. There just isn't anything here that you haven't seen before and what is here is full of inaccuracies."

    Martin O'Brien: "There are three things that strike me most about this book, other than its crappiness. The first is that is essentially a rehash of existing material. The second is its almost ***plete lack of detail. The third is that its rehash na***e notwithstanding, it is full of errors of all types." [This one made me laugh - I don't often see "crappiness" in a book review!]

    Peter Viscarola: "This book sucks. It's useless."

    What's sad is that most of the reviewers mentioned that there is a definite *need* for a good book on Windows driver development, which has been the case for years. I have two of the classics (which I re***mend):
    Developing Drivers with the Windows Driver Foundation
    Programming the Microsoft Windows Driver Model

    Those two ***bined with some Windows system-level books (Windows Internals and Advanced Windows Debugging) taken together are a pretty good team, but there is still a need for additional books in the field of driver writing, particularly at the beginner level. This book is not one of the contenders, sorry.
  •   相信我是絕對不會再參加預購了,太不經(jīng)試了,一試就露原形出來。
  •   是本好書,有水平的作者才能寫到這個程度。可以被譯者給糟蹋了,感覺譯者不懂開發(fā),開發(fā)中用到的術語也被按照英語直譯了,比如StartIO被譯成啟動IO,編譯時候的makefile和sources兩個配置文件被翻譯成makefile和源文件,大概是makefile直譯的意思譯者都看不下去了吧。類似種種,中文看起來很費解的地方也很多,難道借助了翻譯工具。如果不能說粗話,我就無語了。
  •   講理論太多,例子幾乎沒有,完全不符合書名的定位。
  •   感覺譯者根本不是計算機背景或者沒有做過驅動,翻譯生硬,看著中文版,發(fā)現(xiàn)好多地方莫名其妙的,當初還不如直接看英文版。
  •   竟然是二手書,真是不敢相信
  •   一本好書,被翻譯得其爛無比,這種水平,一定不是有開發(fā)經(jīng)驗的人。封面上的署名:紀小玲、周姝嫣,就知道是女性的名字,實際工作中,做driver開發(fā)的女生非常少。以后看到署名有女生名字的書,就不要買了,完全外行。
 

250萬本中文圖書簡介、評論、評分,PDF格式免費下載。 第一圖書網(wǎng) 手機版

京ICP備13047387號-7