欢迎您来到懒之才-站长的分享平台!   学会偷懒,并懒出境界是提高工作效率最有效的方法!
首页 > 教程文档 > 其他教程 > WindowsWDM设备驱动程序开发指南[PDF][12.04MB]

WindowsWDM设备驱动程序开发指南[PDF][12.04MB]

2019-05-24 647 收藏 0 赞一个 0 真差劲 1 去评论 去下载

内容简介

本书主要介绍Windows98和Windows2000新的驱动程序模型(WDM)。描述了WDM设备驱动程序的结构、功能和开发方法;通过实际的设备驱动程序例子,说明WDM设备驱动程序的实现技术、测试和调试方法;介绍了本书提供的一个调试软件DebugPrint;说明如何在客户驱动程序中使用USB驱动程序接口(USBDI)访问USB设备,以及如何利用HID类驱动程序以标准方法访问多种输入设备。

目录

前言

第1章 引言

1.1Windows驱动程序模型

1.1.1WDM与NT式驱动程序

1.1.2可用的驱动程序

1.1.3本书配套光盘

1.1.4设备驱动程序软件工具

1.1.5未讨论的驱动程序类型

1.2新的思维方式

1.2.1设备驱动程序环境

1.2.2术语与资源

1.3Win32程序接口

1.3.1基本I/O

1.3.2重叠的异步请求

1.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.10WMI

2.1.11NT事件报告

2.1.12系统线程

2.2设备驱动程序的类型

2.2.1Windows概述

2.2.2I/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.4WDM的合理性

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.5DMA

3.6IRP处理

3.6.1IRP参数

3.6.2在驱动程序栈中处理IRP

3.7小结

第4章 WDM驱动程序环境

4.1系统设置

4.1.1DDK

4.1.2本书配套光盘软件的安装

4.1.3快捷方式

4.2实用程序

4.2.1DOS框

4.2.2计算机管理控制台

4.2.3NTDevices小程序

4.2.4硬件向导

4.2.5注册表编辑器

4.2.6INF编辑器

4.2.7WBEM

4.2.8调试程序

4.2.9NT和Windows20凹实用程序

4.2.10本书配套光盘上的工具

4.3驱动程序目标

4.4驱动程序语言和库

4.5好的代码

4.6build实用程序

4.6.1makefile

4.6.2SOURCES

4.6.3makefile文件

4.6.4build目录

4.6.5其他build步骤

4.6.6DIRS文件

4.7VC++项目

4.7.1Makefile构造环境

4.7.2MakeDrvr

4.7.3目录

4.7.4常见任务

4.8Wdm1驱动程序代码

4.8.1编译器选项

4.8.2头文件

4.8.3驱动程序进入模块

4.8.4版本资源

4.8.5访问注册表

4.8.6UNICODE_STRING结构

4.9安装Wdml

4.10安装详细信息

4.10.1INF文件

4.10.2注册表

4.10.3Windows2000对象

4.11设备和驱动程序的管理

4.11.1添加另一个设备

4.11.2删除设备

4.11.3更新驱动程序

4.11.4NT式驱动程序

4.12小结

第5章 设备接口

5.1设备

5.1.1设备访问

5.1.2后续的I/O

5.2设备对象和设备扩展

5.3设备对象的创建和删除

5.3.1创建设备

5.3.2删除设备

5.4设备名

5.5设备接口

5.6Win32设备接口访问

5.6.1得到设备的接口名

5.6.2运行WdmlTest

5.7小结

第6章 测试与调试

6.1测试、测试、再测试

6.2驱动程序测试

6.2.1测试所有的函数是否都工作

6.2.2Windows2000和Windows98

6.2.3多处理器

6.2.4取消I/O

6.3调试

6.4调试技术

6.4.1递增式的开发

6.4.2检查版本

6.4.3Windows2000还是Windows98

6.5调试工具

6.5.1Windows2000事件

6.5.2跟踪工具

6.5.3驱动程序验证程序

6.5.4调试程序

6.6DebugPrint

6.6.1使用DebugPrint

6.6.2使用DebugPrintMonitor

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.2I/O请求包

7.2.1分发例程处理

7.2.2可重入性

7.2.3IRP处理

7.2.4IRP完成

7.3IRP结构

7.4常用的IRP参数

7.4.1"创建"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.5IOCTLIRP,IRP_MJ_IOCTL

7.5用户缓冲区

7.5.1缓冲I/O

7.5.2直接I/O

7.5.3其他I/O方式

7.5.4DeviceIoControl缓冲区

7.6Wdm1分发例程

7.6.1创建和关闭

7.6.2写

7.6.3读

7.6.4IOCTL

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.1PnP支持与设备栈

8.4.2设备对象

8.5上沿

8.5.1USB键盘例子

8.5.2功能设备对象和物理设备对象

8.5.3上沿定义

8.6小结

第9章 即插即用的实现

9.1实现即插即用

9.1.1添加和删除设备

9.1.2基本的PnP处理程序

9.1.3沿设备栈向下传递不支持

的IRP

9.1.4PnP状态和消息

9.1.5状态标志

9.1.6保持IRP

9.1.7打开的句柄

9.1.8处理PnPIRP的时间

9.1.9实现资源分配

9.2测试Wdm2

9.3其他PnPIRP

9.3.1IRP_MN_DEVICE_USAGE_

NOTIFICATION

9.3.2IRP_MN_FILTER_RESOUR CE_

REQUIREMENTS

9.3.3IRP_MN_QUERY_BUS_

INFORMATION

9.3.4IRP_MN_QUERY_

CAPABILITIES

9.3.5IRP_MN_QUEPY_DEVICE_

RELATIONS

9.3.61RP_MN_QUERY_DEVICE_

TEXT

9.3.7IRP_MN_QUERY_ID

9.3.8IRP_MN_QUERY_

INTERFACE

9.3.9IRP_MN_QUERY_PNP_DEVICI

STATE

9.3.101RP_MN_QUERY_RESOURCE

REQUIREMENTS

9.3.11IRP_ MN_QU ERY_

RESOURCES

9.3.12IRP_MN_READ_CONFIG

9.3.131RP_MN_SET_L OC K

9.3.14IRP_MN_WRITE_CONFIG

9.4PnP通知

9.4.1Win32PnP通知

9.4.2设备驱动程序PnP通知

9.4.3通知请求驱动程序交互

9.5高级的即插即用

9.5.1总线驱动程序

9.5.2发送PnPIRP

9.5.3设备属性

9.6小结

第10章 电源管理

10.1电源概述

10.1.1ACPI

10.1.2Win32电源管理

10.1.3Wdm2Power应用程序

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.3SetPowerState

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.1WDM驱动程序的安装过程

11.2INF文件

11.3标准节

11.4 INF文件的节层次结构

11.4.1Wdm1Free.INF

11.4.2InfEdit

11.5跨平台和WDMINF文件

11.5.1在Windows2000中安装Wdm1

11.5.2Windows2000服务注册表项

11.6查找驱动程序

11.6.1硬件ID

11.6.2兼容ID

11.6.3重复枚举

11.7NT式驱动程序的安装

11.7.1安装过程

11.7.2驱动程序的装入顺序

11.7.3NT4控制面板Devices小程序

11.7.4Windows2000 设备管理

11.7.5Windows98设备管理

11.7.6REG文件

11.8在Windows98中安装NT式驱动

程序

11.9小结

第12章 WMI

12.1概述

12.1.1 WBEM模型

12.1.2WDM提供者

12.2一个WMI驱动程序

12.2.1WMI构造环境

12.2.2注册为WMI数据提供者

12.2.3处理系统控制IRP

12.2.4QueryWmiRegInfo处理程序

12.2.5QueryWmiDataBlock处理

程序

12.2.6SetWmiDataBlock处理程序

12.2.7SetWmiDataItem处理程序

12.2.8ExecuteWmiMethod处理程序

12.2.9触发WMI事件

12.3WMI运行

12.4小结

第13章 事件的报告

13.1概述

13.2消息文件

13.3注册为事件源

13.4 事件的产生

13.5Wdm3事件的测试

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.4DebugPrint驱动程序

14.4.1设计

14.4.2DebugPrint设备

14.4.3读队列

14.4.4取消IRP

14.4.5写算法

14.4.6读算法

14.5DebugPrintMonitor

14.5.1设计

14.5.2Win32工作者线程

14.5.3DebugPrint_Event类

14.5.4Win32重叠I/O

14.6小结

第15章 WdmIo和PHDIo驱动程序

15.1Win32接口

15.1.1IOCTL

15.1.2命令

15.2LPT打印机驱动程序的应用程序

15.2.1并行端口

15.2.2WdmoIoTest

15.2.3PHDIoTest

15.2.4发出命令

15.2.5使用中断驱动的I/O写数据

15.2.6使用中断驱动的I/O读数据

15.3测试WdmIo

15.3.1安装WdmIo

15.3.2LogConfig节

15.3.3运行WdmIoTest

15.4测试PHDIo

15.4.1安装PHDIo

15.4.2运行PHDIoTest

15.5WdmIo和PHDIo的分析

15.5.1使用哪一个

15.5.2缺陷

15.6小结

第16章 硬件I/OIRP的排队

16.1硬件访问

16.2IRP队列

16.2.1设备队列

16.2.2StartI0例程

16.3命令的处理

16.4取消排队的IRP

16.4.1排队IRP的取消

16.4.2WdmIoIRP取消策略

16.4.3另一种取消策略

16.5"清理"IRP的处理

16.6测试、取消和清理

16.7补充设备队列

16.8小结

第17章 中断驱动的I/O

17.1中断处理

17.1.1中断的性质

17.1.2连接到中断

17.2WdmIo读与写

17.3中断处理程序

17.4延迟过程调用

17.4.1使用基本的DPC

17.4.2自定义DPC

17.5定时器

17.5.11秒间隔定时器

17.5.2WdmIo超时

17.5.3自定义定时器

17.6小结

第18章 NT硬件

18.1NT式驱动程序的构造

18.1.1DDK问题

18.1.2编译环境

18.1.3NT式驱动程序结构

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.3NT层次

19.4小结

第20章 通用串行总线

20.1设备类

20.2概述

20.2.1WindowsUSB驱动程序接口

20.2.2传输类型

20.3USB低级结构

20.3.1USB设备

20.3.2USB信号

20.3.3总线信号

20.3.4低层协议

20.3.5电源

20.4USB设备框架

20.4.1总线枚举

20.4.2标准控制事务

20.4.3描述符

20.4.4驱动程序安装

20.4.5USB类

20.4.6新增功能

20.5客户驱动程序设计

20.5.1端点类型选择

20.5.2等时设备

20.6小结

第21章 USB驱动程序接口

21.1USB客户驱动程序设计

21.1.1UsbKbd的使用

21.1.2UsbKbd安装

21.1.3头文件和库

21.2USBDI的IOCTL

21.2.1URB

21.2.2USBDI的调用

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.4UsbKbd的测试

21.5USBDI结构参考

21.6USBDIURB参考

21.6.1URB设置功能

21.6.2URB传输功能

21.6.3URB缺省管道功能

21.6.4URB等时帧功能

21.7小结

第22章 人工输入设备模型

22.1HID概述

22.2HID模型

22.2.1报告

22.2.2用法

22.2.3获取HID功能

22.3HID模型表示

22.3.1HID描述符

22.3.2设备属性

22.3.3报告描述符

22.6小结

第23章 HID客户

23.1HID类驱动程序

23.1.1HID类驱动程序特征

23.1.2WindowsHID客户程序

23.1.3头文件

23.1.4HIDUSB小驱动程序

23.1.5USB启动设备

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.2PnP通知

23.3.3HidKbd设备

23.3.4读取HID功能

23.3.5HidKbd设备的打开和关闭

23.3.6数据的读写

23.3.7其他HID类IOCTL

23.4小结

附录A 信息资源

附录B PC99

附录C 直接存储器访问

附录D 词汇表

文档截图

QQ截图20190524121104.jpg

暂无界面图片

一、推荐使用迅雷或快车等多线程下载软件下载本站资源。

二、未登录会员无法下载,登录后可获得更多便利功能,若未注册,请先注册。

三、如果服务器暂不能下载请稍后重试!总是不能下载,请点我报错 ,谢谢合作!

四、本站大部分资源是网上搜集或私下交流学习之用,任何涉及商业盈利目的均不得使用,否则产生的一切后果将由您自己承担!本站将不对任何资源负法律责任.如果您发现本站有部分资源侵害了您的权益,请速与我们联系,我们将尽快处理.

五、如有其他问题,请加网站设计交流群(点击这里查看交流群 )进行交流。

六、如需转载本站资源,请注明转载来自并附带链接

七、本站部分资源为加密压缩文件,统一解压密码为:www.aizhanzhe.com

下载地址
大家评论