欢迎访问学兔兔,学习、交流 分享 !

返回首页 |

Windows WDM设备驱动程序开发指南 (美)[C.坎特]Chris Cant著

收藏
  • 大小:7.13 MB
  • 语言:中文版
  • 格式: PDF文档
  • 阅读软件: Adobe Reader
资源简介
Windows WDM设备驱动程序开发指南
作者: (美)[C.坎特]Chris Cant著;孙义 等译
出版时间: 2000
丛编项: 软件开发技术丛书
内容简介
  本书主要介绍Windows 98和Windows 2000新的驱动程序模型(WDM)。描述了WDM设备驱动程序的结构、功能和开发方法;通过实际的设备驱动程序例子,说明WDM设备驱动程序的实现技术、测试和调试方法;介绍了本书提供的一个调试软件DebugPrint;说明如何在客户驱动程序中使用USB驱动程序接口(USBDI)访问USB设备,以及如何利用HID类驱动程序以标准方法访问多种输入设备。
目录
第1章  引言

1.1 Windows驱动程序模型
1.1.1 WDM与NT式驱动程序
1.1.2 可用的驱动程序
1.1.3 本书配套光盘
1.1.4 设备驱动程序软件工具
1.1.5 未讨论的驱动程序类型
1.2 新的思维方式
1.2.1 设备驱动程序环境
1.2.2 术语与资源
1.3 Win32程序接口
1.3.1 基本I/O
1.3.2重叠的异步请求
l,3.3 环境
1.3.4 设备特定的限制
1.3.5 驱动程序的其他Win32访问
1.4 小结

第2章  概述

2.1 设备驱动程序的组成部分
2.1.1 驱动程序人口点和回调例程
2.1.2 分发例程
2.1.3 创建设备
2.1.4 硬件资源分配
2.1.5 调用其他驱动程序
2.1.6 串行硬件的访问
2.1.7 访问硬件
2.1.8 硬件问题
2.1.9 电源管理
2.1.10 WMI
2.1.11 NT事件报告
2.1.12 系统线程
2.2 设备驱动程序的类型
2.2.1 Windows概述
2.2.2 I/O请求处理
2.2.3 即插即用设备栈
2.2.4 标准总线驱动程序和类驱动程序
2.2.5 驱动程序栈举例
2.3 驱动程序选择
2.3.1 现成的驱动程序
2.3.2 使用标准驱动程序
2.3.3 操作系统
2.3.4 分层的设备驱动程序
2.3.5 单一驱动程序
2.3.6 建议的和可选的功能
2.4 WDM的合理性
2.4.1 一个核心模型
2.4.2 复杂性
2.4.3 即插即用与分层
2.4.4 功能范围
2.4.5 开发环境
2.4.6 开发者支持
2.5 小结

第3章  设备驱动程序设计

3.1 引言
3.2 驱动程序设计指南
3.2.1 文档
3.2.2 好的设计
3.3 内核调用
3.3.1 内核宏
3.3.2 内核对象
3.3.3 驱动程序例程名称
3.4 处理器模型
3.4.1 处理器模式
3.4.2 中断级
3.5 使用内存
3.5.1 内存池
3.5.2 旁视列表
3.5.3 其他的内存考虑
3.5.4 访问用户应用程序内存
3.5.5 DMA
3.6 IRP处理
3.6.1 IRP参数
3.6.2 在驱动程序栈中处理IRP
3.7 小结

第4章  WDM驱动程序环境

4.1 系统设置
4.1.1 DDK
4.1.2 本书配套光盘软件的安装
4.1.3 快捷方式
4.2 实用程序
4.2.1 DOS框
4.2.2 计算机管理控制台
4.2.3 NT Devices小程序
4.2.4 硬件向导
4.2.5 注册表编辑器
4.2.6 INF编辑器
4.2.7 WBEM
4.2.8 调试程序
4.2.9 NT和Windows 2000实用程序
4.2.10 本书配套光盘上的工具
4.3 驱动程序目标
4.4 驱动程序语言和库
4.5 好的代码
4.6 build实用程序
4.6.1 makefile
4.6.2 SOURCES
4.6.3 makefile文件
4.6.4 build目录
4.6.5 其他build步骤
4.6.6 DIRS文件
4.7 VC++项目
4.7.1 Makefile构造环境
4.7.2 M8kCDfVf
4.7.3 目录
4.7.4 常见任务
4.8 Wdml驱动程序代码
4.8.1 编译器选项
4.8.2 头文件
4.8.3 驱动程序进入模块
4.8.4 版本资源
4.8.5 访问注册表
4.8.6 UNICODESTRING结构
4.9 安装Wdml
4.10 安装详细信息
4.10.1 INF文件
4.10.2 注册表
4.10.3 Windows 2000对象
4.11 设备和驱动程序的管理
4.11.1 添加另一个设备
4.11.2 删除设备
4.11.3 更新驱动程序
4.11.4 NT式驱动程序
4.12 小结

第5章  设备接口

5.1 设备
5.1.1 设备访问
5.1.2 后续的1/O
5.2 设备对象和设备扩展
5.3 设备对象的创建和删除
5.3.1 创建设备
5.3.2 删除设备
5.4 设备名
5.5 设备接口
5.6 Win32设备接回访问
5.6.1 得到设备的接口名
5.6.2 运行WdmlTest
5.7 小结

第6章  测试与调试

6.1 测试、测试、再测试
6.2 驱动程序测试
6.2.1 测试所有的函数是否都工作
6.2.2 Windows 2000t0Windows 98
6.2.3 多处理器
6.2.4 取消1/O
6.3 调试
6.4 调试技术
6.4.1 递增式的开发
6.4.2 检查版本
6.4.3 Windows 2000还是Windows 98
6.5 调试工具
6.5.1 Windows 2000事件
6.5.2 跟踪工具
6.5.3 驱动程序验证程序
6.5.4 调试程序
6.6 DebugPrint
6.6.1 使用 DebugPrlnt
6.6.2 使用DebugPrlnt Monitor
6.6.3 在驱动程序中使用DebugPrint
6.7 关于调试的说明
6.7.1 更新驱动程序
6.7.2 驱动程序在引导时失败
6.7.3 驱动程序依赖性
6.7.4 未取消的IRP
6.8 错误检查代码
6.9 小结

第7章  分发例程

7.1 分发例程IRP
7.2 I/O请求包
7.2.1 分发例程处理
7.2.2 可重人性
7.2.3 IRP处理
7.2.4 IRP完成
7.3 IRP结构
7.4 常用的IRP参数
7.4.1 “仓IJ建”IRP,IRO_MJ_CREATE
7.4.2 “关闭”IRp,IRP_MJ_CLOSE
7.4.3 “读” IRP,IRP_MJ_READ
7.4.4 “写” IRP,IRP_MJ_WRITE
7.4.5 IOCTL IRp,IRP_MJ_IOCTL
7.5 用户缓冲区
7.5.1 缓冲 I/O
7.5.2 直接IIO
7.5.3 其他IIO方式
7.5.4 DeviceloControl缓冲区
7.6 Wdml分发例程
7.6.1 创建和关闭
7.6.2 写
7.6.3 读
7.6.4 IOCTL
7.6.5 系统控制
7.7 小结

第8章  即插即用与设备栈

8.1 设计概述
8.1.1 设计目标
8.1.2 即插即用系统
8.2 即插即用消息
8.3 设备枚举
8.3.1 固定的和可配置的设备
8.3.2 校举
8.3.3 设备树
8.4 设备栈
8.4.1 PnP支持与设备栈
8.4.2 设备对象
8.5 上沿
8.5.1 USB键盘例子
8.5.2 功能设备对象和物理设备对象
8.5.3 上沿定义
8.6 小结

第9章  即插即用的实现


9.1 实现即插即用
9.1.1 添加和删除设备
9.1.2 基本的PnP处理程序
9.1.3 沿设备栈向下传递不支持的IRP
9.1.4 PnP状态和消息
9.1.5 状态标志
9.1.6 保持IRP
9.1.7 打开的句柄
9.1.8 处理PnP IRP的时间
9.1.9 实现资源分配
9.2 测试Wdrm2
9.3 其他PnP IRP
9.3.1 IRH_MN_DEVICE_USAGE NOTIFICATION
9.3.2 IRP_MN_FILTER_RESOURCEREQUIREMENTS
9.3.3 IRP_MN_QUERY BUS INFORMATION
9.3.4 IRP_MN_QUERYCAPABILITIES
9.3.5 IRP_MN_QUERY_DEVICE RELATIONS
9.3.6 IRP_MN_QUERY_DEVICE TEXT
9.3.7 IRP_MN_QUERY_ID
9.3.8 IRP_MN_QUERY INTERFACE
9.3.9 IRP_MN_QUERY_PNP DEVICE STATE
9.3.10 IRP_MN_QUERY_RESOURCE REQUIREMENTS
9.3.11 IRP_MN_QUERY RESOURCES
9.3.12 IRP_MN_READ CONFIG
9.3.13 IRHMNSETLOCK
9.3.14 IRP_MN_WRITE CONFIG
9.4 PnP通知
9.4.1 Win32 PnP通知
9.4.2 设备驱动程序PnP通知
9.4.3 通知请求驱动程序交互
9.5 高级的即插即用
9.5.1 总线驱动程序
9.5.2 发送PnP IRP
9.5.3 设备属性
9.6 小结

第10章  电源管理

10.1 电源概述
10.1.1 ACPI
10.1.2 Win32电源管理
10.1.3 Wdln2Power应用程序
10.1.4 电池小类驱动程序
10.2 系统电源策略’
10.3 电源IRP
10.4 处理电源IRP
10.4.1 处理设备电源IRP
10.4.2 处理系统电源IRP
10.4.3 不处理电源 IRP
10.5 设备电源策略主
10.6 处理“设置电源” IRP
10.6.1 设置系统电源状态
10.6.2 设置设备电源状态
10.6.3 SetPowerstate
10.7 分发例程的电源处理
10.8 测试Wdm2电源功能
10.9 设备功能
10.10 高级电源管理
10.10.1 唤醒
10.10.2 电源顺序
10.10.3 停止系统关闭事件
10.10.4 电源通知
10.10.5 检测系统电源状态变化
10.10.6 WMI支持
10.11 小结

第11章  安装

11.1 WDM驱动程序的安装过程
11.2 INF文件
11.3 标准节
11.4 INF文件的节层次结构
11.4.1 Wdffil FreeINF
11.4.2 Inffidit
11.5 跨平台和WDM INF文件
11.5.1 在Windows 2000中安装Wdml
11.5.2 Windows 2000IR务注册表项
11.6 查找驱动程序
11.6.1 硬件ID
11.6.2 兼容ID
11.6.3 重复校举
11.7 NT式驱动程序的安装
11.7.1 安装过程
11.7.2 驱动程序的装人顺序
11.7.3 NT 4控制面板Devices小程序
11.7.4 Windows 2000设备管理
11.7.5 Windows 98设备管理
11.7.6 REG文件
11.8 在Windows 98中安装NT式驱动程序
11.9 小结

第12章  WMI

12.1 概述
12.1.1 WBEM模型
12.1.2 WDM提供者
12.2 一个WMI驱动程序
12.2.1 WMI构造环境
12.2.2 注册为WMI数据提供者
12.2.3 处理系统控制IRP
12.2.4 QuefywmiReglnfo处理程序
12,2.5 QuerywmiDataBlock处理程序
12.2.6 SetwmiDataBlock处理程序
12.2.7 SetwmiDataltem处理程序
12.2.8 ExecutewmiMethod处理程序
12.2.9 触发WMI事件
12.3 WMI运行
12.4 小结

第13章  事件的报告

13.1 概述
13.2 消息文件
13.3 注册为事件源
13.4 事件的产生
13.5 Wdm3事件的测试
13.6 小结

第14章  DebugPrint


14.1 设计规范
14.2 设计实现
14.3 测试驱动程序代码
14.3.1 系统线程
14.3.2 事件
14.3.3 同步
14.3.4 产生跟踪事件
14.3.5 链表
14.3.6 最后的代码
14.4 DebugPrint驱动程序
14.4.1 设计
14.4.2 DebugPrint设备
14.4.3 读队列
14.4.4 取消IRP
14.4.5 写算法
14.4.6 读算法
14.5 DebugPrlnt Monitor
14.5.1 设计
14.5.2 Win32工作者线程
14.5.3 DebugPrintEvent类
14.5.4 Win32重叠1/O
14.6 小结

第15章  Wdmlo和 PHDIo驱动程序

15.1 Win32接口
15.1.1 IOCTL
15.1.2 命令
15.2 LPT打印机驱动程序的应用程序
15.2.1 并行端口
15.2.2 WdmoloTest
15.2.3 PHDIoTes卜
15.2.4 发出命令
15.2.5 使用中断驱动的1/O写数据
15.2.6 使用中断驱动的I/O读数据
15.3 测试Wdmlo
15.3.1 安装Wdmlo
15.3.2 LogConfig节
15.3.3 运行WdmloTest
15.4 测试PHDIO
15.4.1 安装PHDIO
15.4.2 运行PHDIOTest
15.5 Wdmlo和PHDIo的分析
15.5.1 使用哪一个
15.5.2 缺陷
15.6 小结

第16章  硬件1/O IRP的排队

16.1 硬件访问
16.2 IRP队列
16.2.1 设备队列
16.2.2 Startlo例程
16.3 命令的处理
16.4 取消排队的IRP
16.4.1 排队IRP的取消
16.4.2 Wdmlo IRP取消策略
16.4.3 另一种取消策略
16.5 “精理” IRP的处理
16.6 测试、取消和清理
16.7 补充设备队列
16.8 小结

第17章  中断驱动的I/O

17.1 中断处理
17.1.1 中断的性质
17.1.2 连接到中断
17.2 Wdmlo读与写
17.3 中断处理程序
17.4 延迟过程调用
17.4.1 使用基本的DPC
17.4.2 自定义DPC
17.5 定时器
17.5.1 1秒间隔定时器
17.5.2 Wdmlo超时
17.5.3 自定义定时器
17.6小结

第18章  NT硬件

18.1 NT式驱动程序的构造
18.1.1 DDK问题
18.1.2 编译环境
18.1.3 NT式驱动程序结构
18.2 设备的创建与删除
18.3 资源分配
18.4 资源转换
18.5 资源的查找
18.5.1 自动检测的硬件
18.5.2 查询可配置总线
18.5.3 最后的资源查找技术
18.6 小结

第19章  WDM系统驱动程序

19.1 客户驱动程序的编写
19.2 过滤驱动程序
19.3 NT层次
19.4 小结

第20章  通用串行总线

20.1 设备类
20.2 概述
20.2.1 Windows USB驱动程序接口
20.2.2 传输类型
20.3 USB低级结构
20.3.1 USB设备
20.3.2 USB信号
20.3.3 总线信号
20.3.4 低层协议
20.3.5 电源
20.4 USB设备框架
20.4.1 总线枚举
20.4.2 标准控制事务
20.4.3 描述符
20.4.4 驱动程序安装
20.4.5 USB类
20.4.6 新增功能
20.5 客户驱动程序设计
20.5.1 端点类型选择
20.5.2 等时设备
20.6 小结

第21章  USB驱动程序接口

21I USB客户驱动程序设计
21.1.1 UsbKbd的使用
21.1.2 USbKbd安装
21.1.3 头文件和库
ZI.2 USBDI的IOCTL
21.2IURB
21.2.2 USBDI的调用
21.2.3 多个USBDI调用
21.3 访问USB
21.3.1 初始化USB设备
21.3.2 发出 URB
21.3.3 选择接口
21.3.4 其他初始化
21.3.5 取消配置的选择
21.3.6 中断传输
21.3.7 控制传输
21.3.8 其他问题
21.4 UsbKbd的测试
21.5 USBDI结构参考
21.6 USBDI URB参考
21.6.1 URB设置功能
21.6.2 URB传输功能
21.6.3 URB缺省管道功能
21.6.4 URB等时帧功能
21.7 小结

第22章  人工输入设备模型

22.1 HID概述
22.2 HID模型
22.2.1 报告
22.2.2 用法
22.2.3 获取HID功能
22.3 HID模型表示
22.3.1 HID描述符
22.3.2 设备属性
22.3.3 报告描述符
22.6 小结

第23章  HID客户

23.1 HID类驱动程序
23.1.1 HID类驱动程序特征
23.1.2 Windows HID客户程序
23.1.3 头文件
23.1.4 HID USB小驱动程序
23.1.5 USB启动设备
23.2 用户态HID客户程序
23.2.1 查找HID设备
23.2.2 读取HID功能
23.2.3 读取输入报告
23.2.4 发送输出报告
23.2.5 其他用户态HID客户函数
23.2.6 运行HidKbdUser
23.3 内核态HID客户程序
23.3.1 客户程序类型
23.3.2 PnP通知
23.3.3 HidKbd设备
23.3.4 读取HID功能
23.3.5 HidKbd设备的打开和关闭
23.3.6 数据的读写
23.3.7 其他HID类IOCTL
23.4 小结

附录A 信息资源
附录B PC99
附录C 直接存储器访问
附录D 词汇表
下载地址