第1章 QuickVxD的使用介绍 1
1.1 QuickVxD具体操作方法 1
1.1.1 VxD设备参数(Device Parameters) 1
前言 1
1.1.2 应用程序调用接口(Application Interfaces) 3
1.1.3 VxD服务(VxD Services) 4
1.1.4 VxD的控制消息(Control Messages) 4
1.1.5 VxD的主要类(Classes) 5
1.1.6 输出文件(Output Files) 5
2.1.1 VDevice类的基本编程方法 7
2.1.2 VDevice类的主要成员函数 7
第2章 框架类(Framework Classes) 7
2.1 VDevice类 7
2.2 VVirtual Machine类 10
2.2.1 类VVirtual Machine针对控制消息的主要成员函数 10
2.2.2 类VVirtual Machine其它成员函数 11
2.3 VThread类 12
2.4 创建一个“hello”VxD 13
2.5 在MSVC集成环境中创建VxD 14
3.1 类VIOPort的成员函数介绍 16
第3章 I/O设备驱动程序的编写 16
3.2 使用类VIOPort 17
3.3 注意事项 18
3.4 创建一个使用VIOPort的VxD 19
第4章 中断VxD的编程 23
4.1 硬件中断编程 23
4.1.1 VHardwareInt类 23
4.1.1.1 VPICD的介绍 23
4.1.1.2 类VHardwareInt主要成员函数 24
4.1.1.3 使用类VHardwareInt 26
4.1.1.4 COM2中断实例 28
4.1.2 VSharedHardwareInt类 30
4.1.2.1 VSharedHardwareInt类主要成员函数 30
4.1.2.2 使用类VSharedHardwareInt 30
4.2 软中断编程 30
4.2.1 类VPreChainV86Int 30
4.2.1.1 VPreChainV86Int类主要成员函数 30
4.2.1.2 使用类VPreChainV86Int 31
4.2.2 类VInChainInt 32
5.1.3 其它VxD对DMA通道的虚拟化 34
5.1.2 VDMAD简介 34
5.1 DMA的有关知识 34
5.1.1 DMA简介 34
第5章 DMA设备驱动程序的编程 34
5.1.4 DMA内存缓冲(buffer)和应用程序内存区(region) 35
5.2 与DMA有关的类 35
5.2.1 DMAChannel类 35
5.2.1.1 类VDMAChannel主要成员函数 35
5.2.1.2 使用类VDMAChannel 38
5.2.2 VDMABuffer类 39
5.2.2.1 类VDMABuffer主要成员函数 39
5.2.2.2 使用类VDMABuffer 40
第6章 热键VxD的编程 42
6.1 VHotKey类主要成员函数 42
6.2 使用类VHotKey 44
6.3 一个捕捉Ctl+C热键的VxD 45
第7章 TimeOut设备驱动程序的编写 47
7.1 类VTimeOut及其派生类 47
7.1.1 VTimeOut类主要成员函数 47
7.1.2 VGlobalTimeOut类新的成员函数 47
7.1.5 VThreadTimeOut类新的成员函数 48
7.1.4 VAsyneTimeOut类新的成员函数 48
7.1.3 VVMTimeOut类新的成员函数 48
7.2 使用类VTimeOut及其派生类 49
7.3 创建一个Beeper设备驱动程序 50
第8章 针对错误处理的设备驱动程序的编写 52
8.1 错误处理类介绍 52
8.1.1 VFault类 52
8.1.1.1 VFault类主要成员函数 52
8.1.2.1 类VNMIEvent新的成员函数 53
8.1.2.2 使用类VNMIEvent 53
8.1.2 VNMIEvent类 53
8.1.3 类VProtModeFault 54
8.1.3.1 类VProtModeFault新的成员函数 54
8.1.3.2 使用类VProtModeFault 54
8.1.4 类VVMMFault 54
8.1.4.1 类VVMMFault新的成员函数 54
8.1.4.2 使用类VVMMFault 54
8.1.5 类VV86ModeFault 54
8.1.5.1 类VV86ModeFault新的成员函数 54
8.1.6 类VInvalidPageFault 55
8.1.6.1 类VInvalidPageFault新的成员函数 55
8.1.5.2 使用类VV86ModeFault 55
8.2 使用错误处理类 56
第9章 事件处理类设备驱动程序的编写 58
9.1 事件处理类 58
9.2 类VDeviceAPI 58
9.2.1 类VDeviceAPI主要成员函数 58
9.2.2 使用类VDeviceAPI 59
10.1 类VEvent 61
10.1.1 类VEvent的主要成员函数 61
第10章 异步事件设备驱动程序的编写 61
10.2 类VGlobalEvent 62
10.2.1 类VGlobalEvent新的成员函数 62
10.2.2 使用类VGlobalEvent 63
10.2.3 一个IRQ8中断发声VxD的编写 64
10.3 类VVMEvent 67
10.3.1 类VVMEvent新的成员函数 67
10.3.2 使用类VVMEvent 67
10.4 类VAppyTimeEvent 68
10.4.1 类VAppyTimeEvent的主要成员函数 69
10.4.2 使用类VAppyTimeEvent 71
11.1 类VCallbackv 73
11.1.1 类VCallback主要成员函数 73
第11章 回调函数类 73
11.2 类VV86Callback 74
11.2.1 类VV86Callback新的成员函数 74
11.2.2 使用类VV86Callback 74
11.3 类VProtModeCallback 74
11.3.1 类VProtModeCallback新的成员函数 74
11.3.2 使用类VProtModeCallback 74
11.4.1.1 类VInChainInt的主要成员函数 75
11.4.2 类VInChainV86Int 75
11.4 中断处理中的回调函数 75
11.4.1 类VInChainInt 75
11.4.2.1 类VInChainV86Int新的成员函数 76
11.4.2.2 使用类VInChainV86Int 76
11.4.3 类VInChainPMInt 77
11.4.3.1 类VInChainPMInt新的成员函数 77
11.4.3.2 使用类VInChainPMInt 77
12.1.1 类VPageObject的主要成员函数 79
12.1.2 使用类VPageObject 79
第12章 内存管理类 79
12.1 类VPageObject 79
12.2 类VLockedPageObject 80
12.2.1 类VLockedPageObject的主要成员函数 80
12.2.2 使用类VLockedPageObject 80
12.2.3 类VLockedPageObject和类VPageObject的差别 81
12.3 更多的内存管理类 81
12.3.1 类VGlobalV86Area 81
12.3.2 类VPageBlock和VV86Pages 81
13.1.1 类VSemaphore主要成员函数 82
第13章 同步对象类 82
13.1 类VSemaphore 82
13.1.2 使用类VSemaphore 83
13.2 类VMutex 84
13.2.1 类VMutex主要成员函数 84
13.2.2 使用类VMutex 86
第14章 在VxD中使用注册表 88
14.1 类VRegistryKey主要成员函数 88
14.2 使用类VRegistryKey 91
15.1 类VPipe 92
15.1.1 类VPipe主要成员函数 92
第15章 管道类 92
15.1.2 使用类VPipe 93
15.2 类VDosToWinPipe 94
15.2.1 类VDosToWinPipe新的成员函数 94
15.2.2 使用类VDosToWinPipe 95
第16章 设备驱动程序的DPMI Vendor调用入口 97
16.1 类VV86DPMIEntry和类VPMDPMIEntry介绍 97
16.1.1 类VV86DPMIEntry 97
16.1.1.1 类VV86DPMIEntry成员函数 97
16.2 使用类VV86DPMIEntry和类VPMDPMIEntry 98
16.2.1 使用类VPMDPMIEntry和VV86DPMIEntry 98
16.1.2.1 类VPMDPMIEntry成员函数 98
16.1.2 类VPMDPMIEntry 98
16.3 例Classtut VxD 101
第17章 VxD调用细则 115
17.1 从其它VxD中调用VxD函数 115
17.2 从V86代码或Win16(保护模式)代码中调用VxD函数 118
17.3 Win32代码调用VxD函数 119
17.4 利用DPMI方式调用VxD函数 121
附录1 控制消息 123
附录2 VxD中的数据结构 125
参考文献 132