Windows驱动开发技术详解由浅入深、循序渐进地介绍了windows驱动程序的开发方法与调试技巧。本书共分23章,内容涵盖了windows操作系统的基本原理、nt驱动程序与wdm驱动程序的构造、驱动程序中的同步异步处理方法、驱动程序中即插即用功能、驱动程序的各种调试技巧等。同时,还针对流行的pci驱动程序、usb驱动程序、虚拟串口驱动程序、摄像头驱动程序、sdio驱动程序进行了详细的介绍,本书最大的特色在于每一节的例子都是经过精挑细选的,具有很强的针对性。力求让读者通过亲自动手实验,掌握各类windows驱动程序的开发技巧,学习尽可能多的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.4.6 hellowdm对irp_mn_remove_device的处理
1.4.7 hellowdm对其他irp的回调函数
1.4.8 hellowdm的卸载例程
1.5 hellowdm的编译和安装
1.5.1 用ddk编译环境编译hellowdm
1.5.2 hellowdm的编译过程
1.5.3 安装hellowdm
1.6 小结
第2章 windows操作驱动的基本概念
驱动程序被操作系统加载在内核模式下,它与windows操作系统内核的其他组件进行密切交互。本章主要介绍windows操作系统内核的基本概念,同时还介绍应用程序和驱动程序之间的通信方法。
2.1 windows操作系统概述
2.1.1 windows家族
2.1.2 windows特性
2.1.3 用户模式和内核模式
2.1.4 操作系统与应用程序
2.2 操作系统分层
2.2.1 windows操作系统总体架构
2.2.2 应用程序与win32子系统
2.2.3 其他环境子系统
2.2.4 native api
2.2.5 系统服务
2.2.6 执行程序组件
2.2.7 驱动程序
2.2.8 内核
2.2.9 硬件抽象层
2.2.10 windows与微内核
2.3 从应用程序到驱动程序
2.4 小结
第3章 windows驱动编译环境配置、安装及调试
本章将带领读者一步步对驱动程序进行编译、安装和简单的调试工作。这些步骤虽然简单,但往往困惑着初次接触驱动程序的开发者。
3.1 用c语言还是用c++语言
3.1.1 调用约定
3.1.2 函数的导出名
3.1.3 运行时函数的调用
3.2 用ddk编译环境编译驱动程序
3.2.1 编译版本
3.2.2 nmake工具
3.2.3 build工具
3.2.4 makefile文件
3.2.5 dirs文件
3.2.6 sources文件
3.2.7 makefile.inc文件
3.2.8 build工具的环境变量
3.2.9 build工具的命令行参数
3.3 用vc编译驱动程序
3.3.1 建立驱动程序工程
3.3.2 修改编译选项
3.3.3 修改链接选项
3.3.4 其他修改
3.3.5 vc编译小结
3.4 查看调试信息
3.4.1 打印调试语句
3.4.2 查看调试语句
3.5 手动加载nt式驱动
3.6 编写程序加载nt式驱动
3.6.1 scm组件和windows服务
3.6.2 加载nt驱动的代码
3.6.3 卸载nt驱动的代码
3.6.4 实验
3.7 wdm式驱动的加载
3.7.1 wdm的手动安装
3.7.2 简单的inf文件剖析
3.8 wdm设备安装在注册表中的变化
3.8.1 硬件子键
3.8.2 类子键
3.8.3 服务子键
3.9 小结
第4章 驱动程序的基本结构
本章首先对windows驱动程序的两个重要数据结构进行介绍,分别是驱动对象和设备对象数据结构。另外还要介绍nt驱动程序和wdm驱动程序的入口函数、卸载例程、各种irp派遣上函数等。
4.1 windows驱动程序中重要的数据结构
4.1.1 驱动对象(driver_object)
4.1.2 设备对象(device_object)
4.1.3 设备扩展
4.2 nt式驱动的基本结构