Windows驱动开发技术详解 (china-pub首发) (08年度畅销榜TOP50)
基本信息
编辑推荐
原创经典,威盛一线工程师倾力打造。.
深入驱动核心,剖析操作系统底层运行机制。
通过实例引导,快速学习编译、安装、调试的方法。
用实例详细讲解PCI、USB、虚拟串口、虚拟摄像头、SDIO等驱动程序的开发。
归纳了多种调试驱动程序的高级技巧,如用WinDbg和VMWare软件对驱动进行源码级设计。
介绍了多种实用的工具软件,如BusHound、IRPTrace、DebugView等。
推荐阅读
内容简介回到顶部↑
本书由浅入深、循序渐进地介绍了windows驱动程序的开发方法与调试技巧。本书共分23章,内容涵盖了windows操作系统的基本原理、nt驱动程序与wdm驱动程序的构造、驱动程序中的同步异步处理方法、驱动程序中即插即用功能、驱动程序的各种调试技巧等。同时,还针对流行的pci驱动程序、usb驱动程序、虚拟串口驱动程序、摄像头驱动程序、sdio驱动程序进行了详细的介绍,本书最大的特色在于每一节的例子都是经过精挑细选的,具有很强的针对性。力求让读者通过亲自动手实验,掌握各类windows驱动程序的开发技巧,学习尽可能多的windows底层知识。
本书适用于中、高级系统程序员,同时也可用做高校计算机专业操作系统实验课的补充教材。
本书适用于中、高级系统程序员,同时也可用做高校计算机专业操作系统实验课的补充教材。
作译者回到顶部↑
本书提供作译者介绍
张帆:毕业于北京理工大学电子工程系,曾就职于威盛电子有限公司,现就职于北京创毅视讯科技有限公司。长期从事PCI、USB、SDIO、串口、摄像头等设备的WindowsS区动程序开发。对Windows操作系统内核有深入的研究,并且有丰富的Windows驱动程序开发经验。
.. << 查看详细
.. << 查看详细
目录回到顶部↑
第1篇 入门篇
第1章 从两个最简单的驱动谈起
本章向读者呈现两个最简单的windows驱动程序,一个是nt式的驱动程序,另一个是wdm式的驱动程序。这两个驱动程序没有操作具体的硬件设备,只是在系统里创建了虚拟设备。在随后的章节中,它们会作为基本驱动程序框架,被本书其他章节的驱动程序开发所复用。笔者将带领读者编写代码、编译、安装和调试程序。
1.1 ddk的安装
1.2 第一个驱动程序helloddk的代码分析
1.2.1 helloddk的头文件
1.2.2 helloddk的入口函数
1.2.3 创建设备例程
1.2.4 卸载驱动例程
1.2.5 默认派遣例程
1.3 helloddk的编译和安装
1.3.1 用ddk环境编译helloddk
1.3.2 用vc集成开发环境编译helloddk
1.3.3 helloddk的安装
1.4 第二个驱动程序hellowdm的代码分析
1.4.1 hellowdm的头文件
1.4.2 hellowdm的入口函数
1.4.3 hellowdm的adddevice例程
1.4.4 hellowdm处理pnp的回调函数
1.4.5 hellowdm对pnp的默认处理
第1章 从两个最简单的驱动谈起
本章向读者呈现两个最简单的windows驱动程序,一个是nt式的驱动程序,另一个是wdm式的驱动程序。这两个驱动程序没有操作具体的硬件设备,只是在系统里创建了虚拟设备。在随后的章节中,它们会作为基本驱动程序框架,被本书其他章节的驱动程序开发所复用。笔者将带领读者编写代码、编译、安装和调试程序。
1.1 ddk的安装
1.2 第一个驱动程序helloddk的代码分析
1.2.1 helloddk的头文件
1.2.2 helloddk的入口函数
1.2.3 创建设备例程
1.2.4 卸载驱动例程
1.2.5 默认派遣例程
1.3 helloddk的编译和安装
1.3.1 用ddk环境编译helloddk
1.3.2 用vc集成开发环境编译helloddk
1.3.3 helloddk的安装
1.4 第二个驱动程序hellowdm的代码分析
1.4.1 hellowdm的头文件
1.4.2 hellowdm的入口函数
1.4.3 hellowdm的adddevice例程
1.4.4 hellowdm处理pnp的回调函数
1.4.5 hellowdm对pnp的默认处理
前言回到顶部↑
你是否想知道USB移动硬盘插入PC后,Windows是如何识别的?.
你是否想知道Windows是如何得到显卡中的数据的?
你是否想知道什么导致了系统蓝屏死机?
你是否被老板或者导师逼着写一个PCI、USB等驱动程序,正感到无从下手?
你是否对Windows内核怀着强烈的好奇心?
如果你的回答为“是”,那么阅读本书将是最佳的选择!
上图是Windows操作系统的一个示意图。一般的Windows程序员都是编写应用程序或者用户DLL,而不会对Windows底层有更深入的了解。而驱动程序位于操作系统的底层,它和内核紧密联系。另外,驱动程序直接操作硬件设备,但究竟如何操作,大部分程序员都不能清楚地讲出来。这些都使得驱动程序开发变得很神秘,仿佛都应该是编程高手的事情。
对于驱动程序开发,书店里很少能见到这方面的书籍。笔者在学习的时候尝到了各种苦头。为了帮助大家快速掌握驱动程序开发,笔者萌生了写一本书的想法。
本书的特点
1.快速上手:为了让读者快速上手,笔者先给出两个驱动程序的例子。这两个例子分别代表Windows两类最基本的驱动程序,NT式驱动程序和WDM式驱动程序。笔者非常详细地介绍了驱动程序编译、安装、调试的方法。编译驱动程序一般使用build工具,但是考虑到很多读者都是VC程序员,笔者特意介绍了如何用VC编译器编译驱动程序。
2.内容翔实,实例丰富:本书详细地介绍了PCI驱动程序、USB驱动程序、虚拟串口程序、虚拟摄像头程序、SDIO驱动程序的开发,并辅以大量实例,使读者可以边学技术,边进行实践。..
3.介绍多种调试技巧:驱动程序由于运行在内核模式下,很难像普通应用程序那样可以方便地调试。尤其对于VC程序员来说,以前的那些调试技巧,很多都不能用了。另外,莫名其妙的“蓝屏死机”也会成为驱动程序开发人员的梦魇。笔者结合自己开发驱动程序多年的经验,归纳了多种调试驱动程序的高级技巧。这些包括用WinDbg和VMWare软件对驱动进行源码级调试、用WinDbg调试蓝屏后的Dump文件等。
4.灵活地使用一些工具:工欲善其事,必先利其器。很多工具软件会帮助我们更好地了解驱动程序内部的运行情况。本书将介绍很多实用的工具软件,如调试USB驱动程序的BusHound软件、查看IRP的IRPTrace软件、查看调试信息的DebugView软件、加载NT式驱动的DriverMoniter软件、加载WDM式驱动的EzDriverInstaller及查看设备对象的DeviceTree工具等。
5.分析本质:本书对驱动程序的讨论不是仅停留在“表面”,更多地方是带领读者深入到操作系统的底层。本书对驱动程序涉及的操作系统中各个组件都有深入的介绍。另外,本书详细地介绍了驱动程序中的同步处理和异步处理。正确处理同步与异步,会使驱动程序更稳定,运行效率更高。
6.探讨Windows内核:驱动程序和Windows的内核紧密相连。本书讲述了很多Windows内核的原理。由于Windows不是开源的操作系统,所以很少有书籍涉及Windows内核的原理。深入理解Windows内核的构造与原理,将更好地帮助程序员写出稳定的驱动程序。
本书的内容
本书由23章组成,内容分布如下:
入门篇编译、安装方法(1)介绍NT式、WDM式驱动程序的编译、安装方法
驱动程序开发的基本方法(2~7)介绍驱动程序的基本概念、基本数据结构。介绍驱动程序中经常用到的内核函数。介绍驱动程序的入口函数、卸载函数、IRP处理函数等
进阶篇同步和异步处理(8~9)介绍驱动程序内部对同步操作请求和异步操作请求的处理。介绍如何编写同步和异步的IRP处理函数
你是否想知道Windows是如何得到显卡中的数据的?
你是否想知道什么导致了系统蓝屏死机?
你是否被老板或者导师逼着写一个PCI、USB等驱动程序,正感到无从下手?
你是否对Windows内核怀着强烈的好奇心?
如果你的回答为“是”,那么阅读本书将是最佳的选择!
上图是Windows操作系统的一个示意图。一般的Windows程序员都是编写应用程序或者用户DLL,而不会对Windows底层有更深入的了解。而驱动程序位于操作系统的底层,它和内核紧密联系。另外,驱动程序直接操作硬件设备,但究竟如何操作,大部分程序员都不能清楚地讲出来。这些都使得驱动程序开发变得很神秘,仿佛都应该是编程高手的事情。
对于驱动程序开发,书店里很少能见到这方面的书籍。笔者在学习的时候尝到了各种苦头。为了帮助大家快速掌握驱动程序开发,笔者萌生了写一本书的想法。
本书的特点
1.快速上手:为了让读者快速上手,笔者先给出两个驱动程序的例子。这两个例子分别代表Windows两类最基本的驱动程序,NT式驱动程序和WDM式驱动程序。笔者非常详细地介绍了驱动程序编译、安装、调试的方法。编译驱动程序一般使用build工具,但是考虑到很多读者都是VC程序员,笔者特意介绍了如何用VC编译器编译驱动程序。
2.内容翔实,实例丰富:本书详细地介绍了PCI驱动程序、USB驱动程序、虚拟串口程序、虚拟摄像头程序、SDIO驱动程序的开发,并辅以大量实例,使读者可以边学技术,边进行实践。..
3.介绍多种调试技巧:驱动程序由于运行在内核模式下,很难像普通应用程序那样可以方便地调试。尤其对于VC程序员来说,以前的那些调试技巧,很多都不能用了。另外,莫名其妙的“蓝屏死机”也会成为驱动程序开发人员的梦魇。笔者结合自己开发驱动程序多年的经验,归纳了多种调试驱动程序的高级技巧。这些包括用WinDbg和VMWare软件对驱动进行源码级调试、用WinDbg调试蓝屏后的Dump文件等。
4.灵活地使用一些工具:工欲善其事,必先利其器。很多工具软件会帮助我们更好地了解驱动程序内部的运行情况。本书将介绍很多实用的工具软件,如调试USB驱动程序的BusHound软件、查看IRP的IRPTrace软件、查看调试信息的DebugView软件、加载NT式驱动的DriverMoniter软件、加载WDM式驱动的EzDriverInstaller及查看设备对象的DeviceTree工具等。
5.分析本质:本书对驱动程序的讨论不是仅停留在“表面”,更多地方是带领读者深入到操作系统的底层。本书对驱动程序涉及的操作系统中各个组件都有深入的介绍。另外,本书详细地介绍了驱动程序中的同步处理和异步处理。正确处理同步与异步,会使驱动程序更稳定,运行效率更高。
6.探讨Windows内核:驱动程序和Windows的内核紧密相连。本书讲述了很多Windows内核的原理。由于Windows不是开源的操作系统,所以很少有书籍涉及Windows内核的原理。深入理解Windows内核的构造与原理,将更好地帮助程序员写出稳定的驱动程序。
本书的内容
本书由23章组成,内容分布如下:
入门篇编译、安装方法(1)介绍NT式、WDM式驱动程序的编译、安装方法
驱动程序开发的基本方法(2~7)介绍驱动程序的基本概念、基本数据结构。介绍驱动程序中经常用到的内核函数。介绍驱动程序的入口函数、卸载函数、IRP处理函数等
进阶篇同步和异步处理(8~9)介绍驱动程序内部对同步操作请求和异步操作请求的处理。介绍如何编写同步和异步的IRP处理函数
书摘回到顶部↑
第1篇 入门篇
第1章从两个最简单的驱动谈起
Windows驱动程序的编写,往往需要开发人员对Windows内核有深入了解和大量的内核调试技巧,稍有不慎,就会造成系统的崩溃。因此,初次涉及Windows驱动程序开发的程序员,即使拥有大量Win32程序的开发技巧,往往也很难入门。
本章向读者呈现两个最简单的Windows驱动程序,一个是NT式的驱动程序,另一个是WDM式的驱动程序。这两个驱动程序没有操作具体的硬件设备,只是在系统里创建了虚拟设备。在随后的章节中,它们会作为基本驱动程序框架,被本书其他章节的驱动程序开发所复用。笔者将带领读者编写代码、编译、安装和调试程序。相信对第一次编写驱动程序的读者来说,这将是非常激动和有趣的。代码的具体讲解将分散在后面的章节论述。现在请和笔者一起,开始Windows驱动编程之旅吧!
1.1 DDK的安装
在编写第一个驱动之前,需要先安装微软公司提供的Windows驱动程序开发包DDK(Driver Development Kit)。笔者计算机里安装的是Windows XP 2462版本的DDK,建议读者安装同样版本或者更高版本的DDK,如图1-1所示。
在安装的时候请选择完全安装,即安装DDK的所有部件,如图1-2所示。因为除了DDK的基本编译环境外,DDK还提供了大量的源代码和实用工具,这对于Windows驱动程序的初学者进行学习和编写驱动程序将是非常有用的。
安装完毕后,会在开始菜单中出现相应的项目。其中,主要用到的是BuildEnvironment,如图1-3所示。该版本的DDK会同时安装上Windows 2000和Windows XP的编译环境。
……
第1章从两个最简单的驱动谈起
Windows驱动程序的编写,往往需要开发人员对Windows内核有深入了解和大量的内核调试技巧,稍有不慎,就会造成系统的崩溃。因此,初次涉及Windows驱动程序开发的程序员,即使拥有大量Win32程序的开发技巧,往往也很难入门。
本章向读者呈现两个最简单的Windows驱动程序,一个是NT式的驱动程序,另一个是WDM式的驱动程序。这两个驱动程序没有操作具体的硬件设备,只是在系统里创建了虚拟设备。在随后的章节中,它们会作为基本驱动程序框架,被本书其他章节的驱动程序开发所复用。笔者将带领读者编写代码、编译、安装和调试程序。相信对第一次编写驱动程序的读者来说,这将是非常激动和有趣的。代码的具体讲解将分散在后面的章节论述。现在请和笔者一起,开始Windows驱动编程之旅吧!
1.1 DDK的安装
在编写第一个驱动之前,需要先安装微软公司提供的Windows驱动程序开发包DDK(Driver Development Kit)。笔者计算机里安装的是Windows XP 2462版本的DDK,建议读者安装同样版本或者更高版本的DDK,如图1-1所示。
在安装的时候请选择完全安装,即安装DDK的所有部件,如图1-2所示。因为除了DDK的基本编译环境外,DDK还提供了大量的源代码和实用工具,这对于Windows驱动程序的初学者进行学习和编写驱动程序将是非常有用的。
安装完毕后,会在开始菜单中出现相应的项目。其中,主要用到的是BuildEnvironment,如图1-3所示。该版本的DDK会同时安装上Windows 2000和Windows XP的编译环境。
……
评论交流
共有151人开贴评论 207人参与评论 119人参与打分 查看
评价等级:





发表于:2008-8-6 23:02:00
怎么说呢,看到这里对此书好评如潮,我感到很无奈。这本书从深度来说,只能算是基本入门,里面讲的东西都是基础之基础,我看过的任何一本驱动设计书都要比这本更有深度,我这里并没有任何故意贬低此书的意思,但是事实如此。或许对于非计算机专业出身的人来说会有那么一点貌似深奥的东西吧。另外这本书的论述也不是很严谨,不那么准确的说法也挺多的,作为一本新书,技术上也显得比较过时,甚至让人怀疑是不是2001年之前就已经成稿,只是最近进行了小幅修订出版。
说完缺点再说说优点。从另一个角度来看,如果这本书纯粹是写给业余驱动编程爱好者的,那么此书倒也不失为一本别有特色之作。比如书的第一部分里大量的关于编译器方面的解释,关于诸如extern c和调用约定之类的论述等等,都让人感觉到了此书对没有编程经验的读者的关照。全书结构也比较有特色,循序渐进,阶梯比较小,知识覆盖面比较广,对一些常用的硬件和总线结构进行了基本的描述,这些东西都极大地降低了入门的成本。
总体来看,这本书比较适合业余爱好者或需要编写简单软件的硬件工程师,但作为专门的驱动程序员,我觉得这本书价值非常有限。
说完缺点再说说优点。从另一个角度来看,如果这本书纯粹是写给业余驱动编程爱好者的,那么此书倒也不失为一本别有特色之作。比如书的第一部分里大量的关于编译器方面的解释,关于诸如extern c和调用约定之类的论述等等,都让人感觉到了此书对没有编程经验的读者的关照。全书结构也比较有特色,循序渐进,阶梯比较小,知识覆盖面比较广,对一些常用的硬件和总线结构进行了基本的描述,这些东西都极大地降低了入门的成本。
总体来看,这本书比较适合业余爱好者或需要编写简单软件的硬件工程师,但作为专门的驱动程序员,我觉得这本书价值非常有限。
| 我要写评论 |
| 查看所有评论交流(共151条) |


点击看大图







加载中...