第1章 基础知识 1
1.1Windows 的虚拟世界 1
1.1.1什么是虚拟机 1
1.1.2处理器模式 2
1.1.3Windows 的执行环境 3
1.1.4如何实现虚拟环境 3
1.2 VxD简介 5
1.2.1 VxD的安装 6
1.2.2 VxD的基本结构 6
1.2.3设备描述器部件 7
1.2.4事件通知 8
1.2.5 VxD数据结构 11
1.2.6 VxD开发工具 13
第2章 QuickVxD的使用介绍 15
2.1 VxD设备参数 15
2.2应用程序调用接口 17
2.3 VxD的控制消息 18
2.4 VxD服务函数 19
2.6输出文件 20
2.5 VxD 的类 20
第3章VxD程序介绍 22
3.1 VxD程序结构 22
3.1.1 VDevice类 22
3.1.2 VVirtualMachine类 25
3.1.3 VThread类 27
3.1.4 一个简单的“Hello” VxD程序 28
3.1.5 VVirtualMachine类的VxD实例 32
3.2.1使用QuickVxD创建Vmbeep的工程文件 34
3.2 VxD的创建 34
3.2.2修改Vmbeep的工程文件Vmbeep.h和Vmbeep.cpp 35
3.3 VxD的生成 36
第4章VxD和Win32应用程序之间的通信 40
4.1Win32应用程序对VxD的通信 40
4.1.1Win32应用程序的编程 40
4.1.2 VxD的编程 41
4.1.3Win32应用程序对VxD通信的实例 42
4.1.4 OnW32DeviceloControl与OnSysDynamicDeviceInit、OnSysDynamicDeviceExit 46
4.2 VxD对Win32应用程序的通信 47
4.2.1导步过程调用 48
4.2.2Win32事件 51
4.2.3发送消息 57
第5章VxD访问硬件设备 72
5.1访问I/O端口映射硬件 72
5.2访问内存映射硬件 72
5.2.1访问静态配置内存映射设备 73
5.2.2访问动态配置内存映射设备 73
5.2.3访问内存映射硬件的实例 75
6.1中断和VMM 81
第6章VxD处理硬件中断 81
6.2 VPICD简介 82
6.3硬件中断编程 83
6.3.1 VHardwareInt类 83
6.3.2 VSharedHardwareInt类 89
第7章VxD实现DMA操作 91
7.1系统DMA 91
7.1.1系统DMA对数据缓冲区的要求 91
7.1.2虚拟DMA设备驱动程序简介 93
7.2 VtoolsD对系统DAM操作的编程支持类 93
7.2.1 VDMABuffer类 94
7.2.2 DMAChannel类 96
7.2.3利用VxD实现系统DMA操作实例 99
7.3总线主控DMA 104
第8章VxD完成即插即用功能 105
8.1即插即用体系简介 105
8.1.1即插即用体系结构元件 106
8.1.2即插即用元件的相互作用 106
8.1.3配置管理器 107
8.2 INF文件及其格式 108
8.1.4硬件树、设备节点和设备标识符 108
8.2.1标准节 109
8.2.2 INF文件的节层次结构 111
8.3即插即用的启动和配置过程 112
8.3.1驱动程序VxD的安装顺序 112
8.3.2设备节点创建过程 112
8.3.3设备配置资源服务过程 113
8.3.4其他的即插即用配置方案 115
8.4即插即用演示实例 116
9.1.1 VisualC++线程的创建和运行 121
9.1 VxD与VisualC++开发的Windows 多线程MFC应用程序的通信 121
第9章VxD与Windows 多线程应用程序通信编程 121
9.1.2 VisualC++线程之间的通信 122
9.1.3 VisualC++多线程MFC应用程序与VxD通信实例 122
9.2 VxD与C++Builder开发的Windows 多线程应用程序的通信 128
9.2.1 C++Builder线程的创建与运行 128
9.2.2 C++Builder线程之间的通信 130
9.2.3 C++Builder多线程应用程序与VxD通信实例 131
10.1.1类VIOPort的成员函数 136
10.1 VIOPort类 136
第10章 其他类的编程 136
10.1.2使用类VIOPort 137
10.1.3使用类VIOPort的实例 137
10.2 Event类 141
10.2.1类VEvent 142
10.2.2类VGlobalEvent 142
10.2.3使用类VGlobalEvent 143
10.2.4使用类VGlobalEvent的实例 143
10.3.1类VTimeOut 149
10.3 TimeOut类 149
10.3.2类VGlobalTimeOut 150
10.3.3类VAsyncTimeOut 150
10.3.4类VThreadTimeOut 151
10.3.5类VVMTimeOut 151
10.3.6使用类TimeOut 151
10.3.7使用类VGlobalTimeOut的实例 152
10.4 VAppyTimeEvent类 153
10.4.1类VAppyTimeEvent的成员函数 153
10.4.3使用类VAppyTimeEvent的VxD实例 156
10.4.2使用类VAppyTimeEvent 156
10.5内存管理类 157
10.5.1类VpageObject 159
10.5.2类VLockedPageObject 160
10.5.3类VGlobalV86Area 160
第11章 基于PCI接口的设备驱动程序开发 161
11.1 S5933控制芯片的功能 161
11.1.1 S5933的内部结构 161
11.1.2 S5933引脚图 162
11.1.3三种数据传输方式的特点 162
11.2 S5933的配置和初始化 163
11.2.1 S5933的配置空间 164
11.2.2 S5933的初始化 165
11.3 S5933的操作寄存器 166
11.4 S5933的邮箱操作 167
11.4.1邮箱空/满状态 167
11.4.2邮箱中断 168
11.5 S5933的DMA操作 169
11.5.1 S5933的DMA传输配置 170
11.6 PCI设备的INF文件 173
11.5.2 PCI发起的DMA传输控制 173
11.7 PCI设备驱动程序VxD的设计 175
第12章 WDM程序介绍 183
12.1 WDM设备驱动程序结构 183
12.1.1驱动程序入口点和回调例程 184
12.1.2创建设备 184
12.1.3中断级 186
12.1.4 IRP处理 188
12.1.5即插即用 197
12.2 WDM程序范例HelloWdm 199
12.1.8 WMI 199
12.1.7电源管理 199
12.1.6调用其他驱动程序 199
第13章 WDM程序入门 220
13.1 WDM的创建 220
13.2 WDM的生成 231
13.3 WDM的安装 231
13.4应用程序的运行 234
第14章WDM编程 238
14.1应用程序对WDM的通信 238
14.2 WDM对Win 32应用程序的通信 241
14.3如何访问寄存器 242
14.3.1如何访问I/O地址寄存器 242
14.3.2如何访问内存映射地址寄存器 243
14.4硬件中断处理 243
14.5内存的管理 245
附录A Debug Monitor的使用介绍 247
附录B INF Editor的使用介绍 250
附录C Soft ICE的使用介绍 259
附录D Soft ICE for Windows 9x(4.0)命令详解 271