Windows 2000/XP WDM设备驱动程序开发(第2版)[按需印刷]
基本信息
编辑推荐
*对WDM深入研究,以作者实战经验,助读者少走弯路,节约大量时间。
*详细描述入门步骤,提供20个典型实例,程序给出必要的注释。
*配套光盘含有书中所有实例的驱动程序和应用程序的全部源代码,以及生成的驱动程序和可执行文件。
内容简介回到顶部↑
本书主要介绍了用DriverStudio 3.1开发工具开发Windows 2000/XP下的WDM设备驱动程序的原理及编程方法。本书详细介绍了WDM基本程序框架和编程,IRP的基本概念及编程,WDM和应用程序之间的通信、即插即用、电源管理、WMI的编程技术,IRP串行处理、过滤器驱动程序,WDM访问硬件设备、处理硬件中断、实现DMA操作的编程技术,以及大量的基本编程技术,还有USB接口和PCI接口设备驱动程序WDM的开发。
本书附有20个典型的编程实例,便于读者学习和掌握。
本书是一本技术性较强的工具书。本书的适用对象是具有一定计算机硬件及C++语言基础的计算机应用开发人员,是计算机应用开发人员和高等院校学生的实用参考书。
本书附有20个典型的编程实例,便于读者学习和掌握。
本书是一本技术性较强的工具书。本书的适用对象是具有一定计算机硬件及C++语言基础的计算机应用开发人员,是计算机应用开发人员和高等院校学生的实用参考书。
目录回到顶部↑
第1章 windows 2000和wdm驱动程序 1
1.1 windows 2000组件概述 1
1.2 windows 2000中的驱动程序种类 2
1.3 wdm驱动程序特点 3
1.3.1 内核模式驱动程序的设计目标 3
1.3.2 wdm驱动程序模型 5
1.3.3 设备和驱动程序的层次结构 6
1.3.4 中断级别irql 6
1.3.5 设备接口 7
第2章 wdm驱动程序的基本结构 9
2.1 kdriver类 9
2.1.1 基本函数 9
2.1.2 基本例程 10
2.2 kpnpdevice类 15
2.2.1 基本函数 15
2.2.2 基本例程 20
2.2.3 扩展例程 21
2.3 kpnplowerdevice类 23
2.4 charsample实例 23
第3章 irp操作 25
1.1 windows 2000组件概述 1
1.2 windows 2000中的驱动程序种类 2
1.3 wdm驱动程序特点 3
1.3.1 内核模式驱动程序的设计目标 3
1.3.2 wdm驱动程序模型 5
1.3.3 设备和驱动程序的层次结构 6
1.3.4 中断级别irql 6
1.3.5 设备接口 7
第2章 wdm驱动程序的基本结构 9
2.1 kdriver类 9
2.1.1 基本函数 9
2.1.2 基本例程 10
2.2 kpnpdevice类 15
2.2.1 基本函数 15
2.2.2 基本例程 20
2.2.3 扩展例程 21
2.3 kpnplowerdevice类 23
2.4 charsample实例 23
第3章 irp操作 25
前言回到顶部↑
WDM(Windows Driver Model)是微软公司全新的驱动程序模式,支持即插即用、电源管理和WMI技术,它的运行平台是Windows 98/2000/XP/2003操作系统。随着Windows操作系统的不断发展,那些致力于Windows操作系统下微机接口设备开发的广大科技开发人员,必须学习和掌握WDM的原理及编程方法。
我对WDM进行了深入的研究,在学习的过程中,不仅在原理上有许多一时难以理解的问题,而且在编写实例时,也遇到了许多未曾想到的技术困难。虽然最终解决了所有问题,但却花费了大量的时间。可以自信地说,我的经验是宝贵的,读者将会少走很多弯路和节省大量的时间。
我对参考文献所提到的《Windows WDM设备驱动程序开发指南》、《Programming the Microsoft Windows Driver Model》和《Windows 2000驱动程序开发大全》三本书做了深入的研究,基本掌握了WDM的编程思想。我之所以说编程思想,是因为这三本书所用的是DDK工具,而我所用的是DriverWorks工具。我不大喜欢用DDK编程,它太复杂了,有点非高手莫入的味道。有人把DDK比做汇编语言,把DriverWorks比做C语言,这比较恰当。也许有人认为还是DDK正宗,话虽如此,但对于大多数的计算机应用开发人员来说,时间及效率可能更重要。这便是我为什么向读者积极推荐用DriverStudio工具来开发Windows设备驱动程序的原因。
开发工具
下面谈谈WDM设备驱动程序的开发工具。
开发WDM离不开DDK,微软公司提供的DDK版本有:Windows 98 DDK、Windows 2000 DDK、Windows XP DDK(Windows.XP.SP1 DDK)和Windows.Server.2003 DDK,分别对应相应的4种操作系统。WDM程序仅在源代码级兼容这四个操作系统,其所生成的可执行代码是不同的,必须用相应的DDK来生成某一操作系统下的WDM驱动程序。
本书没有将Windows 98考虑在内,主要基于两点:一则它已渐渐远去;再者,它对WDM的支持不是特别好,有一些语句它并不支持。关于这一点,请参考文献1、2。
DriverStudio是一个开发工具包,它包含VtoolsD、DriverWorks、DriverNetWorks和SoftICE等开发工具,现在其最高的版本为3.1版本。VtoolsD用于开发Windows98下的VxD驱动程序,DriverWorks用于开发普通设备的WDM驱动程序,DriverNetWorks用于开发网络设备的WDM驱动程序,SoftICE用于开发程序的调试。用DriverWorks或DriverNetWorks开发WDM驱动程序,需要DDK的支持。
WDM程序框架有一定的要求,若用DDK开发WDM,读者可参考文献1、2的范例。可以用DriverStudio 3.1中的DriverWizard生成一个DDK支持的WDM驱动程序框架,本书的第14章讲述了其过程。用DriverWorks所生成的WDM程序框架,对于开发人员来说,非常简单。但实质上,仍满足DDK对WDM的要求,调用的仍是DDK所提供的基本函数。
本书还用到Visual C++ 6.0和Windows XP SP2 SDK工具。Platform SDK只在编译PnPEvent和WMISample实例的应用程序时需要。
本书配套光盘
本书配套光盘含有书中所有实例的驱动程序和应用程序的全部源代码,以及生成的驱动程序和可执行的应用程序。除USBCounter和PCI9054实例因需要硬件设备的支持而无法运行外,其他18个实例均可运行。但光盘中的实例仅在Windows XP操作系统下完成。
Chinesedot目录下的HZK16点阵字库,FileThread实例需要用到。
设备类注册表下的注册表文件用于创建Windows 2000和Windows XP操作系统下的“WDM范例”设备类信息。
再版信息
同第一版相比,主要有四个方面的变化:
1.开发工具为最新的DriverStudio 3.1。
2.主要修改了第4,5,11章的内容。
3.对程序做了必要的注释,另外对部分实例做了轻微的改动。
4.第14章,讲述了只用DDK支持的WDM驱动程序的创建过程。
我对WDM进行了深入的研究,在学习的过程中,不仅在原理上有许多一时难以理解的问题,而且在编写实例时,也遇到了许多未曾想到的技术困难。虽然最终解决了所有问题,但却花费了大量的时间。可以自信地说,我的经验是宝贵的,读者将会少走很多弯路和节省大量的时间。
我对参考文献所提到的《Windows WDM设备驱动程序开发指南》、《Programming the Microsoft Windows Driver Model》和《Windows 2000驱动程序开发大全》三本书做了深入的研究,基本掌握了WDM的编程思想。我之所以说编程思想,是因为这三本书所用的是DDK工具,而我所用的是DriverWorks工具。我不大喜欢用DDK编程,它太复杂了,有点非高手莫入的味道。有人把DDK比做汇编语言,把DriverWorks比做C语言,这比较恰当。也许有人认为还是DDK正宗,话虽如此,但对于大多数的计算机应用开发人员来说,时间及效率可能更重要。这便是我为什么向读者积极推荐用DriverStudio工具来开发Windows设备驱动程序的原因。
开发工具
下面谈谈WDM设备驱动程序的开发工具。
开发WDM离不开DDK,微软公司提供的DDK版本有:Windows 98 DDK、Windows 2000 DDK、Windows XP DDK(Windows.XP.SP1 DDK)和Windows.Server.2003 DDK,分别对应相应的4种操作系统。WDM程序仅在源代码级兼容这四个操作系统,其所生成的可执行代码是不同的,必须用相应的DDK来生成某一操作系统下的WDM驱动程序。
本书没有将Windows 98考虑在内,主要基于两点:一则它已渐渐远去;再者,它对WDM的支持不是特别好,有一些语句它并不支持。关于这一点,请参考文献1、2。
DriverStudio是一个开发工具包,它包含VtoolsD、DriverWorks、DriverNetWorks和SoftICE等开发工具,现在其最高的版本为3.1版本。VtoolsD用于开发Windows98下的VxD驱动程序,DriverWorks用于开发普通设备的WDM驱动程序,DriverNetWorks用于开发网络设备的WDM驱动程序,SoftICE用于开发程序的调试。用DriverWorks或DriverNetWorks开发WDM驱动程序,需要DDK的支持。
WDM程序框架有一定的要求,若用DDK开发WDM,读者可参考文献1、2的范例。可以用DriverStudio 3.1中的DriverWizard生成一个DDK支持的WDM驱动程序框架,本书的第14章讲述了其过程。用DriverWorks所生成的WDM程序框架,对于开发人员来说,非常简单。但实质上,仍满足DDK对WDM的要求,调用的仍是DDK所提供的基本函数。
本书还用到Visual C++ 6.0和Windows XP SP2 SDK工具。Platform SDK只在编译PnPEvent和WMISample实例的应用程序时需要。
本书配套光盘
本书配套光盘含有书中所有实例的驱动程序和应用程序的全部源代码,以及生成的驱动程序和可执行的应用程序。除USBCounter和PCI9054实例因需要硬件设备的支持而无法运行外,其他18个实例均可运行。但光盘中的实例仅在Windows XP操作系统下完成。
Chinesedot目录下的HZK16点阵字库,FileThread实例需要用到。
设备类注册表下的注册表文件用于创建Windows 2000和Windows XP操作系统下的“WDM范例”设备类信息。
再版信息
同第一版相比,主要有四个方面的变化:
1.开发工具为最新的DriverStudio 3.1。
2.主要修改了第4,5,11章的内容。
3.对程序做了必要的注释,另外对部分实例做了轻微的改动。
4.第14章,讲述了只用DDK支持的WDM驱动程序的创建过程。








点击看大图





加载中...

