Windows 2000 设备驱动程序设计指南[按需印刷]
[绝版]
基本信息
内容简介回到顶部↑
目录回到顶部↑
译者序
序
前言
第1章 windows 2000驱动程序概述
1.1 总的系统体系结构
1.1.1 windows 2000的设计目标
1.1.2 windows 2000中的硬件特权层
1.1.3 可移植性
1.1.4 可扩展性
l.1.5 性能
1.1.6 执行程序组件
1.2 内核模式i/o组件
1.2. 1 i/o子系统的设计目标
1.2.2 windows 2000中驱动程序的种类
1.3 特殊的驱动程序结构
1.3.1 视频驱动程序
1.3.2 打印机驱动程序
1.3.3 多媒体驱动程序
1.3.4 网络驱动程序
1.4 小结
序
前言
第1章 windows 2000驱动程序概述
1.1 总的系统体系结构
1.1.1 windows 2000的设计目标
1.1.2 windows 2000中的硬件特权层
1.1.3 可移植性
1.1.4 可扩展性
l.1.5 性能
1.1.6 执行程序组件
1.2 内核模式i/o组件
1.2. 1 i/o子系统的设计目标
1.2.2 windows 2000中驱动程序的种类
1.3 特殊的驱动程序结构
1.3.1 视频驱动程序
1.3.2 打印机驱动程序
1.3.3 多媒体驱动程序
1.3.4 网络驱动程序
1.4 小结
译者序回到顶部↑
众所周知,驱动程序开发是操作系统开发中最棘手、技术难度最大的一部分。设备驱动程序的优劣直接影响设备性能的发挥,尤其在 Windows 2000的全新体系结构下,更加强调设备驱动程序必须与系统基本代码进行和谐的相互作用。
本书全面介绍了驱动程序的规划、实现、测试、调试、安装和发布,是有关Windows设备驱动程序创作方面最优秀的指南之一,完全更新到 Windows 2000版本!全面介绍了新的 Windows驱动程序模型(WDM,Windows Driver Model)、实用调试技术和交互式故障解决方法。同时,书中大多数章节都给出了一个或多个示例驱动程序,并包含在本书附带的光盘中。建议在学习过程中理论与实践相结合,动手实现每一个小程序,以取得最佳学习效果。
如果读者具备Windows管理方面的知识,具有Win32用户模式编程经验和C程序设计语言等方面的知识,则阅读本书能够取得更好的效果。本书可以作为一本有关驱动程序开发方面的自学教材使用,它不仅适用于那些有经验的设备驱动程序开发人员,同样也适用于那些有经验的Windows程序员。通过本书的学习,他们将掌握驱动程序开发的整个过程。同时,本书对于那些研究 Windows 2000内核的人来说也是有用的,尤其是那些研究 I/O子系统和相关组件的人。
在本书的翻译工作中,我们深深地为原著作者的教育才能所感动,仿佛自己就正在教室里听他讲课一样。在翻译过程中我们尽全力使译文忠实地体现原著的风格、内容和思想,希望读者在阅读本书中能与我们有同样的体会,这也是本书翻译过程中努力实现的目标。
本书主要由施带组织翻译,参加本书翻译、录排、校对等工作的人员有:施惠琼、方杰、张廷辉、陈指挥、倪志红、赵朗、徐睿胤、钱建国、严俊、施晓东、盛仕辉、陈根样、王小光、龚露娜、马军、马丽、田军、田洗县、王小将等。全书最后由施平安进行统稿。
在翻译过程中,我们对本书中出现的术语都进行了仔细的推敲和研究,但由于本书的内容涉及许多有关Windows驱动程序开发方面的新知识,而有些方面在译者自己的开发经历中也很少遇到,加上时间仓促,译者水平有限,疏漏和争议之处在所难免,望广大读者提出宝贵的意见。
如果您在阅读中碰到了什么问题,请同我们工作室联系: qiandao@ 263. net。我们会尽力解决您的问题。
施诺
2001年4月
本书全面介绍了驱动程序的规划、实现、测试、调试、安装和发布,是有关Windows设备驱动程序创作方面最优秀的指南之一,完全更新到 Windows 2000版本!全面介绍了新的 Windows驱动程序模型(WDM,Windows Driver Model)、实用调试技术和交互式故障解决方法。同时,书中大多数章节都给出了一个或多个示例驱动程序,并包含在本书附带的光盘中。建议在学习过程中理论与实践相结合,动手实现每一个小程序,以取得最佳学习效果。
如果读者具备Windows管理方面的知识,具有Win32用户模式编程经验和C程序设计语言等方面的知识,则阅读本书能够取得更好的效果。本书可以作为一本有关驱动程序开发方面的自学教材使用,它不仅适用于那些有经验的设备驱动程序开发人员,同样也适用于那些有经验的Windows程序员。通过本书的学习,他们将掌握驱动程序开发的整个过程。同时,本书对于那些研究 Windows 2000内核的人来说也是有用的,尤其是那些研究 I/O子系统和相关组件的人。
在本书的翻译工作中,我们深深地为原著作者的教育才能所感动,仿佛自己就正在教室里听他讲课一样。在翻译过程中我们尽全力使译文忠实地体现原著的风格、内容和思想,希望读者在阅读本书中能与我们有同样的体会,这也是本书翻译过程中努力实现的目标。
本书主要由施带组织翻译,参加本书翻译、录排、校对等工作的人员有:施惠琼、方杰、张廷辉、陈指挥、倪志红、赵朗、徐睿胤、钱建国、严俊、施晓东、盛仕辉、陈根样、王小光、龚露娜、马军、马丽、田军、田洗县、王小将等。全书最后由施平安进行统稿。
在翻译过程中,我们对本书中出现的术语都进行了仔细的推敲和研究,但由于本书的内容涉及许多有关Windows驱动程序开发方面的新知识,而有些方面在译者自己的开发经历中也很少遇到,加上时间仓促,译者水平有限,疏漏和争议之处在所难免,望广大读者提出宝贵的意见。
如果您在阅读中碰到了什么问题,请同我们工作室联系: qiandao@ 263. net。我们会尽力解决您的问题。
施诺
2001年4月
前言回到顶部↑
本书讲述如何编写、安装和调试 Windows 2000设备驱动程序,旨在作为 Microsoft DDK文档和软件的补充教材。
Windows 2000与 Windows NT的前几个版本相比,在各方面都得到了相当的改善。为 Windows 2000设计的设备驱动程序也可以用于新的 WDM体系结构。如果这样,驱动程序将成为与Windows 98相兼容的资源。本书讨论了新的 WDM规范。
同时,本书对于那些研究 Windows 2000内核的人来说也是有用的,尤其是那些研究I/O子系统和相关组件的人。
读者应具备的知识
本书的所有内容都要求读者具备一定的基础知识。首先,读者必须熟悉 Windows 2000管理——例如,安全性和安装。因为对内核代码进行试验可能会产生与系统相关的问题;因此,读者心里应该有所准备,并能够在系统出现问题时对之进行恢复。
其次,读者应当熟悉C程序设计语言,并在一定程度上熟悉C++语言。在本书中只用到极少数的C++语言,并且其目的只是为了简化冗长的代码。
再次,具备Win32用户模式编程经验是有用的。在设计和测试设备驱动程序代码方面,知道用户模式代码如何驱动I/O设备是有用的。本书提供的测试代码的例子基于Windows的控制台子系统模型。要查阅这一主题的内容,请读者参阅“Win32 Programmers Reference”,尤其要参考关于I/O原语(CreateFile,ReadFile,WriteFile和DeviceIoControl的内容。
最后一点,虽然不要求读者具备硬件或者设备驱动程序软件设计的经验;但是,如果读者具备某些低级设备接口方面的经验,对于阅读本书会有所帮助。例如,如果读者具备编写Unix系统设备驱动程序的知识,将有助于阅读本书。
本书内容
本书的重点在于首先解释硬件的体系结构、环境和设备驱动程序,然后详细说明如何编写代码。
本书中的各章节组织如下:
第1-5章:本书的前五章讨论编写设备驱动程序所需的基础知识。这些基础知识包括Windows 2000体系结构的范围、硬件术语和总线基础知识,以及详细探讨 Windows 2000 I/O管理程序和相关的内容。
第6-13章:接下去的八章构成本书的核心内容。这几章内容几乎涉及了 Windows 2000驱动程序开发的所有内容,包括从建立驱动程序的机制,到驱动程序特定设备的测试及记录错误和其他事件。
第14-15章:这两章内容讨论设备驱动程序构造方面的更高级主题,包括使用系统线程、分层、过滤,以及使用驱动程序类别。
第16-17章:最后两章讨论驱动程序安装和调试所需的实践性内容。讨论了使用Windows2000 INF文件进行即插即用设备的自动安装(以及遗留设备的手动安装)。详细讨论了WinDbg的使用,使得程序员能够进行真正的交互式调试。
附录:附录讨论驱动程序开发所需的参考信息,并列出了 Windows 2000符号文件安装、故障检验(bugcheck)码等内容。
本书没有包含的内容
由于本书旨在讲述驱动程序“自下而上”的开发过程,因此一些特定的主题不在本书的讨论范围之内。不在本书讨论范围内的主题如下:
文件系统驱动程序:当前,构造一个完整的Windows 2000可安装的文件系统要求有Microsoft IFS设备。对于将要使用 IFS设备的用户,本书将会为他们提供有益的帮助,因为本书涉及的内容是使用IFS设备所必需的前提知识。
特定设备的驱动程序信息:构造NIC(Network Interface Card)、SCSI、视频(包括捕捉设备)、打印机和多媒体驱动程序,没有在本书中进行明确讨论。第1章内容讨论了这类驱动程序的结构内涵;但是,即使是专门讲述这些主题的章节,内容也是很不完整的。
Windows 2000与 Windows NT的前几个版本相比,在各方面都得到了相当的改善。为 Windows 2000设计的设备驱动程序也可以用于新的 WDM体系结构。如果这样,驱动程序将成为与Windows 98相兼容的资源。本书讨论了新的 WDM规范。
同时,本书对于那些研究 Windows 2000内核的人来说也是有用的,尤其是那些研究I/O子系统和相关组件的人。
读者应具备的知识
本书的所有内容都要求读者具备一定的基础知识。首先,读者必须熟悉 Windows 2000管理——例如,安全性和安装。因为对内核代码进行试验可能会产生与系统相关的问题;因此,读者心里应该有所准备,并能够在系统出现问题时对之进行恢复。
其次,读者应当熟悉C程序设计语言,并在一定程度上熟悉C++语言。在本书中只用到极少数的C++语言,并且其目的只是为了简化冗长的代码。
再次,具备Win32用户模式编程经验是有用的。在设计和测试设备驱动程序代码方面,知道用户模式代码如何驱动I/O设备是有用的。本书提供的测试代码的例子基于Windows的控制台子系统模型。要查阅这一主题的内容,请读者参阅“Win32 Programmers Reference”,尤其要参考关于I/O原语(CreateFile,ReadFile,WriteFile和DeviceIoControl的内容。
最后一点,虽然不要求读者具备硬件或者设备驱动程序软件设计的经验;但是,如果读者具备某些低级设备接口方面的经验,对于阅读本书会有所帮助。例如,如果读者具备编写Unix系统设备驱动程序的知识,将有助于阅读本书。
本书内容
本书的重点在于首先解释硬件的体系结构、环境和设备驱动程序,然后详细说明如何编写代码。
本书中的各章节组织如下:
第1-5章:本书的前五章讨论编写设备驱动程序所需的基础知识。这些基础知识包括Windows 2000体系结构的范围、硬件术语和总线基础知识,以及详细探讨 Windows 2000 I/O管理程序和相关的内容。
第6-13章:接下去的八章构成本书的核心内容。这几章内容几乎涉及了 Windows 2000驱动程序开发的所有内容,包括从建立驱动程序的机制,到驱动程序特定设备的测试及记录错误和其他事件。
第14-15章:这两章内容讨论设备驱动程序构造方面的更高级主题,包括使用系统线程、分层、过滤,以及使用驱动程序类别。
第16-17章:最后两章讨论驱动程序安装和调试所需的实践性内容。讨论了使用Windows2000 INF文件进行即插即用设备的自动安装(以及遗留设备的手动安装)。详细讨论了WinDbg的使用,使得程序员能够进行真正的交互式调试。
附录:附录讨论驱动程序开发所需的参考信息,并列出了 Windows 2000符号文件安装、故障检验(bugcheck)码等内容。
本书没有包含的内容
由于本书旨在讲述驱动程序“自下而上”的开发过程,因此一些特定的主题不在本书的讨论范围之内。不在本书讨论范围内的主题如下:
文件系统驱动程序:当前,构造一个完整的Windows 2000可安装的文件系统要求有Microsoft IFS设备。对于将要使用 IFS设备的用户,本书将会为他们提供有益的帮助,因为本书涉及的内容是使用IFS设备所必需的前提知识。
特定设备的驱动程序信息:构造NIC(Network Interface Card)、SCSI、视频(包括捕捉设备)、打印机和多媒体驱动程序,没有在本书中进行明确讨论。第1章内容讨论了这类驱动程序的结构内涵;但是,即使是专门讲述这些主题的章节,内容也是很不完整的。
序言回到顶部↑
驱动程序的开发是操作系统开发过程中最基本的,也是技术难度最大的一部分。作为本书的读者,你应该已经意识到其中具有的复杂性。即便是对于经验非常丰富的软件工程师来讲,开发驱动程序也将是比较棘手的。编写 Windows 2000中的设备驱动程序是 Windows 2000学习中的一大难题。 Art Baker编写的“Windows NT Device Driver Book”是关于 Windows NT驱动程序开发方面的最详细、最权威的指南,是当前关于 Windows NT驱动程序开发的经典著作。我认为
除了Jerry Lozano外,任何人都不能胜任编写Art的著名教程的第2版。 Jerry兼有十足的技术专家、优秀的作家和天才教育家的特点,而这些特色都已经在本书中得到了很好的表现。我在阅读本书的过程中,仿佛觉得就是在听Jerry讲课。
世界上有两种不同类型的书。一些书提供参考信息,它们读起来非常像一本百科全书,这种书适合在需要解决某个特定的问题时去查阅一下。而另一些书实际上就是自学教材,传播所需的知识和技能以解决某个问题,读者需要从头到尾地对它们进行阅读和学习。
本书与它的前一个版本一样,显然属于后一种类型的书籍。它旨在作为设备驱动程序开发者的指南。与关于该主题的其他书籍不同,本书不准备重复DDK内容。DDK可作为Windows2000设备驱动程序技术的权威参考,而本书提供了成功掌握W2K驱动程序开发的指导性内容,为开发者提供了设计、编写和调试Windows 2000设备驱动程序所需的知识,并且是基于Jerry创建的在UCI教学中使用的课程。根据教学过程中反馈回来的信息,作者发现,设备驱动程序和内核模式代码开发者们面临的最大问题是:缺乏关于驱动程序模型、内核模式编程和硬件接口的清楚而简明的技术资料。在本书中,Jerry通过详细的示例和涉及各个领域的内容,成功地解决了上述难题,并且把它们论述得异常清楚。
在本书即将出版时,我清楚地认识到还有一章内容也是非常需要的,即关于USB和IEEE1394驱动程序的细节,并向作者提出修正意见。作者愉快地接受了这一修正意见,并将这些内容包括在本书所属的网站中:www.W2KDriverBook.com。需要这些内容的读者可以访问这一站点。
Andrew Scoppa
UCI软件技术培训主席
除了Jerry Lozano外,任何人都不能胜任编写Art的著名教程的第2版。 Jerry兼有十足的技术专家、优秀的作家和天才教育家的特点,而这些特色都已经在本书中得到了很好的表现。我在阅读本书的过程中,仿佛觉得就是在听Jerry讲课。
世界上有两种不同类型的书。一些书提供参考信息,它们读起来非常像一本百科全书,这种书适合在需要解决某个特定的问题时去查阅一下。而另一些书实际上就是自学教材,传播所需的知识和技能以解决某个问题,读者需要从头到尾地对它们进行阅读和学习。
本书与它的前一个版本一样,显然属于后一种类型的书籍。它旨在作为设备驱动程序开发者的指南。与关于该主题的其他书籍不同,本书不准备重复DDK内容。DDK可作为Windows2000设备驱动程序技术的权威参考,而本书提供了成功掌握W2K驱动程序开发的指导性内容,为开发者提供了设计、编写和调试Windows 2000设备驱动程序所需的知识,并且是基于Jerry创建的在UCI教学中使用的课程。根据教学过程中反馈回来的信息,作者发现,设备驱动程序和内核模式代码开发者们面临的最大问题是:缺乏关于驱动程序模型、内核模式编程和硬件接口的清楚而简明的技术资料。在本书中,Jerry通过详细的示例和涉及各个领域的内容,成功地解决了上述难题,并且把它们论述得异常清楚。
在本书即将出版时,我清楚地认识到还有一章内容也是非常需要的,即关于USB和IEEE1394驱动程序的细节,并向作者提出修正意见。作者愉快地接受了这一修正意见,并将这些内容包括在本书所属的网站中:www.W2KDriverBook.com。需要这些内容的读者可以访问这一站点。
Andrew Scoppa
UCI软件技术培训主席








点击看大图





加载中...

