标题：Windows驱动开发技术详解
版权信息
作　者： 张帆　等编著
出 版 社： 电子工业出版社
  
出版时间： 2008-7-1 
字　数： 851000 
页　数： 530 
开　本： 16开
I S B N ： 9787121068461 
分类： 图书 >> 计算机/网络 >> 操作系统/系统开发 >> WINDOWS 
定价：￥65.00
编辑推荐
原创经典，威盛一线工程师倾力打造。深入驱动核心，剖析操作系统底层运行机制，通过实例引导，快速学——中国工程院院士
院士推荐
目前，电子系统设计广泛采用通用操作系统，达到降低系统的设计难度和缩短研发周期。实现操作系统与硬件快速信息交换是电子系统设计的关键。
通用操作系统硬件驱动程序的开发，编写者不仅需要精通硬件设备、计算机总线，而且需要Windows操作系统知识以及调试技巧。学习和掌握Windows硬件驱动程序的开发是电子系统设计人员必备的能力。
本书是作者结合教学和科研实践经验编写而成的，不仅详细介绍了Windows内核原理，并且介绍了编程技巧和应用实例，兼顾了在校研究生和工程技术人员的实际需求，对教学、生产和科研有现实的指导意义，是一本值得推荐的专著。
作者简介
张帆：毕业于北京理工大学电子工程系，曾就职于威盛电子有限公司，现就职于北京创毅视讯科技有限公司。长期从事PCI、USB、SDIO、串口、摄像头等设备的WindowsS驱动程序开发。对Windows操作系统内核有深入的研究，并且有丰富的Windows驱动程序开发经验。
内容简介
本书共分23章，内容涵盖了Windows操作系统的基本原理、NT驱动程序与WDM驱动程序的构造、驱动程序中的同步异步处理方法、驱动程序中即插即用功能、驱动程序的各种调试技巧等。同时，还针对流行的PCI驱动程序、USB驱动程序、虚拟串口驱动程序、摄像头驱动程序、SDIO驱动程序进行了详细的介绍。
图书目录
第1篇 入门篇
第1章 从两个最简单的驱动谈起 
本章向读者呈现两个最简单的Windows驱动程序，一个是NT式的驱动程序，另一个是WDM式的驱动程序。这两个驱动程序没有操作具体的硬件设备，只是在系统里创建了虚拟设备。在随后的章节中，它们会作为基本驱动程序框架，被本书其他章节的驱动程序开发所复用。笔者将带领读者编写代码、编译、安装和调试程序。
第2章 Windows操作驱动的基本概念 
驱动程序被操作系统加载在内核模式下，它与Windows操作系统内核的其他组件进行密切交互。本章主要介绍Windows操作系统内核的基本概念，同时还介绍应用程序和驱动程序之间的通信方法。
第3章 Windows驱动编译环境配置、安装及调试 
本章将带领读者一步步对驱动程序进行编译、安装和简单的调试工作。这些步骤虽然简单，但往往困惑着初次接触驱动程序的开发者。
第4章 驱动程序的基本结构 
本章首先对Windows驱动程序的两个重要数据结构进行介绍，分别是驱动对象和设备对象数据结构。另外还要介绍NT驱动程序和WDM驱动程序的入口函数、卸载例程、各种IRP派遣上函数等。
第5章 Windows内存管理 
本章围绕着驱动程序中的内存操作进行了介绍。在驱动程序开发中，首先要注意分页内存和非分页内存的使用。同时，还需要区分物理内存地址和虚拟内存地址这两个概念。
第6章 Windows内核函数 
本章介绍了Windows内核模式下的一些常用内核函数，这些函数在驱动程序的开发中将会经常用到。
第7章 派遣函数 
本章重点介绍了驱动程序中的处理IRP请求的派遣函数。所有对设备的操作最终将转化为IRP请求，这些IRP请求会被传送到派遣函数处理。
第2篇 进阶篇
第8章 驱动程序的同步处理 
本章介绍了驱动程序中常用的同步处理办法，并且将内核模式下的同步处理方法和用户模式下的同步处理方法做了比较。另外，本章还介绍了中断请求级、自旋锁等同步处理机制。
第9章 IRP的同步 
本章详细地介绍了IRP的同步处理方法和异步处理方法。另外，本章还介绍了StartIO例程、中断服务例程、DPC服务例程。
第10章 定时器 
本章总结了在内核模式下的四种等待方法，读者可以利用这些方法灵活地用在自己的驱动程序中。最后本章还介绍了如何对IRP的超时情况进行处理。
第11章 驱动程序调用驱动程序 
本章主要介绍了如何在驱动程序中调用其他驱动程序。比较简单的方法是将被调用的驱动程序以文件的方式操作。比较高级的方法是构造各种IRP，并将这些IRP传送到被调用的驱动程序中。
第12章 分层驱动程序 
本章主要介绍了分层驱动的概念。分层驱动可以将功能复杂的驱动程序分解为多个功能简单的驱动程序。多个分层的驱动程序形成一个设备堆栈，IRP请求首先发送到设备堆栈的顶层，然后依次穿越每层的设备堆栈，最终完成IRP请求。
第13章 让设备实现即插即用 
本章首先介绍即插即用的概念和驱动程序支持即插即用功能的必要性。另外，本章还介绍如何利用WDM驱动程序开发框架设计支持即插即用功能的驱动程序。
第14章 电源管理 
本章主要介绍了如何在WDM驱动程序中进行电源处理。电源处理主要是处理好电源状态和设备状态。
第3篇 实用篇
第15章 I/O端口操作 
本章总结了多种I/O端口操作的方法。这些方法本质上是一样的，都是将端口输入输出的汇编指令运行在内核模式中。
第16章 PCI设备驱动 
本章主要介绍PCI设备的驱动开发。首先介绍了PCI总线协议。作为驱动程序员，开发PCI驱动程序首先要了解PCI配置空间。根据读取PCI配置空间，可以得到PCI设备的所有资源。另外，本章还总结了四种获取PCI配置空间的方法。
第17章 USB设备驱动 
本章首先介绍了USB总线协议的基本框架，其中包括USB总线的拓扑结构，USB通信的流程，还有USB的四种传输模式。另外，本章介绍了如何编写USB总线设备的驱动程序。
第18章 SDIO设备驱动 
本章首先介绍了SDIO协议，讲述了SD内存卡和SDIO卡的兼容问题。然后介绍了SDIO协议中的发送命令、回应命令、传送数据等相关协议。随后，本章又介绍了Windows中，DDK提供的对SDIO卡设备的支持。然后介绍了如何利用总线驱动，使SDIO设备初始化，接收中断，发送和接收数据等操作。
第19章 虚拟串口设备驱动 
本章介绍了串口开发的框架模型，在串口的AddDevice例程中需要暴露出一个串口的符号连接，另外在相应的注册表中需要进行设置。在串口与应用程序的通信中，主要是一组DDK定义的IO控制码，这些IO控制码负责由应用程序向驱动发出请求。
第20章 摄像头设备驱动程序 
本章主要介绍了微软提供的摄像头驱动框架。在该框架中，微软提供了类驱动和小驱动的概念。对于驱动程序员的任务就是编写小驱动程序。
第4篇 提高篇
第21章 再论IRP 
本章将相关IRP的操作做了进一步的总结。首先是转发IRP，归纳了几种不同的方式。其次总结了创建IRP的几种不同方法。创建IRP总的来说分为创建同步IRP和创建异步IRP。对于创建同步IRP，操作比较简单，I/O管理器会负责回收IRP的相关内存，但是使用不够灵活。对于创建异步IRP，操作比较复杂，程序员需要自己负责对IRP及相关内存回收，但使用十分灵活。
第22章 过滤驱动程序 
本章主要介绍WDM和NT式过滤驱动程序开发。过滤驱动程序开发十分灵活，可以修改已有驱动程序的功能，也可以对数据进行过滤加密。另外，利用过滤驱动程序还能编写出很多具有相当功能强大的程序来。
第23章 高级调试技巧 
本章将介绍一些Windows开发驱动的高级调试技巧。有一些高级驱动程序调试技巧，可以帮助程序员找出驱动程序中的Bug。另外，利用一些第三方工具软件，也可以帮助程序员找到驱动程序中的漏洞，从而提高开发效率。