【59】Windows文件系统过滤驱动开发教程(第二版) PDF 电子版
目 录
基 础 篇
第1章 内核上机指导 2
1.1下载和使用WDK 2
1.1.1下载并安装WDK 2
1.1.2编写第一个C文件 4
1.1.3编译一个工程 5
1.2安装与运行 6
1.2.1下载一个安装工具 6
1.2.2运行与查看输出信息 7
1.2.3在虚拟机中运行 8
1.3调试内核模块 9
1.3.1下载和安装WinDbg 9
1.3.2设置Windows XP调试执行 9
1.3.3设置Vista调试执行 10
1.3.4设置VMware的管道虚拟串口 11
1.3.5设置Windows内核符号表 12
1.3.6实战调试first 13
第2章 内核编程环境及其特殊性 16
2.1内核编程的环境 16
2.1.1隔离的应用程序 16
2.1.2共享的内核空间 17
2.1.3无处不在的内核模块 18
2.2数据类型 19
2.2.1基本数据类型 19
2.2.2返回状态 19
2.2.3字符串 20
2.3重要的数据结构 21
2.3.1驱动对象 21
2.3.2设备对象 22
2.3.3请求 24
2.4函数调用 25
2.4.1查阅帮助 25
2.4.2帮助中有的几类函数 26
2.4.3帮助中没有的函数 28
2.5Windows的驱动开发模型 29
2.6WDK编程中的特殊点 30
2.6.1内核编程的主要调用源 30
2.6.2函数的多线程安全性 30
2.6.3代码的中断级 32
2.6.4WDK中出现的特殊代码 32
第3章 字符串与链表 35
3.1字符串操作 35
3.1.1使用字符串结构 35
3.1.2字符串的初始化 36
3.1.3字符串的拷贝 37
3.1.4字符串的连接 38
3.1.5字符串的打印 38
3.2内存与链表 40
3.2.1内存的分配与释放 40
3.2.2使用LIST_ENTRY 41
3.2.3使用长长整型数据 43
3.3自旋锁 44
3.3.1使用自旋锁 44
3.3.2在双向链表中使用自旋锁 45
3.3.3使用队列自旋锁提高性能 46
第4章 文件、注册表、线程 47
4.1文件操作 47
4.1.1使用OBJECT_ATTRIBUTES 47
4.1.2打开和关闭文件 48
4.1.3文件读/写操作 51
4.2注册表操作 53
4.2.1注册表键的打开 53
4.2.2注册表键值的读 55
4.2.3 注册表键值的写 57
4.3时间与定时器 58
4.3.1获得当前“滴答”数 58
4.3.2获得当前系统时间 58
4.3.3使用定时器 59
4.4线程与事件 62
4.4.1使用系统线程 62
4.4.2在线程中睡眠 63
4.4.3使用同步事件 64
第5章 应用与内核通信 67
5.1内核方面的编程 68
5.1.1生成控制设备 68
5.1.2控制设备的名字和符号链接 70
5.1.3控制设备的删除 71
5.1.4分发函数 72
5.1.5请求的处理 73
5.2应用方面的编程 74
5.2.1基本的功能需求 74
5.2.2在应用程序中打开与关闭设备 75
5.2.3设备控制请求 75
5.2.4内核中的对应处理 77
5.2.5结合测试的效果 79
5.3阻塞、等待与安全设计 80
5.3.1驱动主动通知应用 80
5.3.2通信接口的测试 81
5.3.3内核中的缓冲区链表结构 83
5.3.4输入:内核中的请求处理中的安全检查 84
5.3.5输出处理与卸载清理 85
第6章 64位和32位内核开发差异 88
6.164位系统新增机制 88
6.1.1WOW64子系统 88
6.1.2PatchGuard技术 91
6.1.364位驱动的编译、安装与运行 91
6.2编程差异 92
6.2.1汇编嵌入变化 92
6.2.2预处理与条件编译 93
6.2.3数据结构调整 93
开 发 篇
第7章 串口的过滤 96
7.1过滤的概念 96
7.1.1设备绑定的内核API之一 97
7.1.2设备绑定的内核API之二 98
7.1.3生成过滤设备并绑定 98
7.1.4从名字获得设备对象 100
7.1.5绑定所有串口 101
7.2获得实际数据 102
7.2.1请求的区分 102
7.2.2请求的结局 103
7.2.3写请求的数据 104
7.3完整的代码 105
7.3.1完整的分发函数 105
7.3.2如何动态卸载 106
7.3.3代码的编译与运行 107
第8章 键盘的过滤 109
8.1技术原理 110
8.1.1预备知识 110
8.1.2Windows中从击键到内核 110
8.1.3键盘硬件原理 112
8.2键盘过滤的框架 112
8.2.1找到所有的键盘设备 112
8.2.2应用设备扩展 115
8.2.3键盘过滤模块的DriverEntry 117
8.2.4键盘过滤模块的动态卸载 117
8.3键盘过滤的请求处理 119
8.3.1通常的处理 119
8.3.2PNP的处理 120
8.3.3读的处理 121
8.3.4读完成的处理 122
8.4从请求中打印出按键信息 123
8.4.1从缓冲区中获得KEYBOARD_INPUT_DATA 123
8.4.2从KEYBOARD_INPUT_DATA中得到键 124
8.4.3从MakeCode到实际字符 124
8.5Hook分发函数 126
8.5.1获得类驱动对象 126
8.5.2修改类驱动的分发函数指针 127
8.5.3类驱动之下的端口驱动 128
8.5.4端口驱动和类驱动之间的协作机制 129
8.5.5找到关键的回调函数的条件 129
8.5.6定义常数和数据结构 130
8.5.7打开两种键盘端口驱动寻找设备 131
8.5.8搜索在KbdClass类驱动中的地址 133
8.6Hook键盘中断反过滤 135
8.6.1中断:IRQ和INT 136
8.6.2如何修改IDT 136
8.6.3替换IDT中的跳转地址 137
8.6.4QQ的PS/2反过滤措施 139
8.7直接用端口操作键盘 139
8.7.1读取键盘数据和命令端口 139
8.7.2p2cUserFilter的最终实现 140
第9章 磁盘的虚拟 143
9.1虚拟的磁盘 143
9.2一个具体的例子 143
9.3入口函数 144
9.3.1入口函数的定义 144
9.3.2Ramdisk驱动的入口函数 145
9.4EvtDriverDeviceAdd函数 146
9.4.1EvtDriverDeviceAdd的定义 146
9.4.2局部变量的声明 146
9.4.3磁盘设备的创建 147
9.4.4如何处理发往设备的请求 148
9.4.5用户配置的初始化 149
9.4.6链接给应用程序 151
9.4.7小结 152
9.5FAT12/16磁盘卷初始化 152
9.5.1磁盘卷结构简介 152
9.5.2Ramdisk对磁盘的初始化 154
9.6驱动中的请求处理 160
9.6.1请求的处理 160
9.6.2读/写请求 160
9.6.3DeviceIoControl请求 162
9.7Ramdisk的编译和安装 164
9.7.1编译 164
9.7.2安装 164
9.7.3对安装的深入探究 165
第10章 磁盘的过滤 167
10.1磁盘过滤驱动的概念 167
10.1.1设备过滤和类过滤 167
10.1.2磁盘设备和磁盘卷设备过滤驱动 167
10.1.3注册表和磁盘卷设备过滤驱动 168
10.2具有还原功能的磁盘卷过滤驱动 168
10.2.1简介 168
10.2.2基本思想 169
10.3驱动分析 169
10.3.1DriverEntry函数 169
10.3.2AddDevice函数 170
10.3.3PnP请求的处理 174
10.3.4Power请求的处理 178
10.3.5DeviceIoControl请求的处理 178
10.3.6bitmap的作用和分析 182
10.3.7boot驱动完成回调函数和稀疏文件 187
10.3.8读/写请求的处理 190
第11章 文件系统的过滤与监控 199
11.1文件系统的设备对象 200
11.1.1控制设备与卷设备 200
11.1.2生成自己的一个控制设备 201
11.2文件系统的分发函数 202
11.2.1普通的分发函数 202
11.2.2文件过滤的快速IO分发函数 203
11.2.3快速IO分发函数的一个实现 205
11.2.4快速IO分发函数逐个简介 206
11.3设备的绑定前期工作 207
11.3.1动态地选择绑定函数 207
11.3.2注册文件系统变动回调 208
11.3.3文件系统变动回调的一个实现 209
11.3.4文件系统识别器 211
11.4文件系统控制设备的绑定 2
下载地址(回复可见):
**** Hidden Message *****
indows文件系统过滤驱动开发教程(第二版) PDF 电子版 谢谢分享
好几本书都失效了楼主!! 读书增长见识谢谢楼主 好东西谢谢分享 66666666666 Windows文件系统过滤驱动开发教程 Windows文件系统过滤驱动开发教程 Windows文件系统过滤驱动开发教程