本书是讲述VxD和设备驱动程序的权威指南。主要分为两部分。第一部分(第2到第12章)讲述Windows执行环境和VxD。第二部分(第13到第19章)讲述基于DLL的驱动程序。本书几乎涵盖了设备驱动程序开发的各个层面,内容全面翔实,可读性较高。\r\n 本书适合程序员及大专院校师生阅读。\r\n
译者序\r\n原书序\r\n\r\n第1章 入门\r\n\r\n什么是驱动程序\r\n基于优先权的区分\r\n驱动程序接口\r\n需要编写哪种驱动程序\r\n哪一类设备\r\n哪种硬件接口\r\n什么是性能需求\r\n总结\r\n\r\n第一部分 Windows执行环境和VxD\r\n\r\n第2章 Windows的虚拟世界\r\n\r\n什么是虚拟机\r\n多任务模式\r\n基于页面请求的虚拟内存\r\n处理器的模式\r\n保护模式\r\nV86模式\r\nWindows执行环境\r\n总结\r\n\r\n第3章 Windows实现虚拟环境的方法\r\n\r\n捕获I/O端口的访问\r\n捕获内存映射设备\r\n捕获中断和异常\r\n处理器寄存器\r\n进一步分析线性地址和页面映射\r\nWin32、Win16和DOS应用程序的地址\r\nWin32地址\r\nWin16地址\r\nDOS地址\r\nWindws 3.x如何满足Win16和DOS应用程序的地址需要\r\nWindows 9x如何满足Win32、Win16和DOS应用程序的地址需要\r\n总结\r\n\r\n第4章 初识VxD\r\n\r\nVxD的加载\r\nVxD的基本结构\r\n设备描述块\r\n相关数据结构\r\n事件通知\r\n静态加载的VxD的初始化和终止消息\r\n动态加载的VxD初始化和结束时的消息\r\nVM的状态变化消息\r\n线程消息\r\nWindows 3.x的不同之处\r\n总结\r\n\r\n第5章 最基本的VxD构架\r\n\r\n开发VxD所需的工具\r\n“DDK”版本的源程序\r\nDDB和设备控制入口函数:SKELCTRL.ASM\r\nVtoolsD版本的SKELETON.VXD\r\nWindows 3.x版本的SKELETON\r\n总结\r\n\r\n第6章 VxD与硬件交互\r\n\r\nI/O映射与内存映射\r\n与I/O映射的设备交互\r\n与内存映射的设备交互\r\n静态配置的内存映射设备\r\n动态配置的内存映射设备\r\n另一种数据传输的方式:DMA\r\n使用系统DMA\r\n系统DMA缓冲区的条件\r\n分配系统DMA缓冲区的函数\r\nVDMAD服务一览\r\nVDMAD服务的细节\r\n使用总线DMA\r\n使用VDMAD_Scatter_Lock的正确方法\r\n在总线DMA传输中使用事件\r\nWindows 3.x的不同之处\r\n总结\r\n\r\n第7章 在VxD中处理硬件中断\r\n\r\n中断和VMM\r\n使用VPICD服务\r\n详解VPICD服务函数:VxDIRQ.C\r\n汇编转换层和C处理函数\r\nHwIntProc回调函数:DDBISR.ASM和VXDISR.C\r\nVXDISR的事件处理\r\nWindows 3.x的不同之处\r\n总结\r\n\r\n第8章 虚拟世界中的VxD\r\n\r\nVMM和处理器异常\r\n设备所有权\r\n虚拟I/O映射设备:PORTTRAP的例子\r\n初始化函数:OnDeviceInit\r\n处理不同的I/O端口类型:PortTrapThunk\r\n检查所有权:PortTrapHandler\r\n处理VM_TERMINATE\r\n使用PORTTRAP\r\n虚拟内存映射设备:PAGETRAP的例子\r\n初始化过程\r\n异常处理函数\r\n处理VM_Terminate消息\r\n使用PAGETRAP\r\n虚拟硬件中断\r\n哪个VM\r\n负责硬件中断反射的VxD\r\n回调函数:MaskChangeHandler\r\n回调函数:HwIntHandler\r\n回调函数:EOIHandler\r\n回调函数:VirtIntHandler和IRETHandler\r\n总结\r\n\r\n第9章 即插即用:概况\r\n\r\nPnP组件\r\n在Windows 9x安装过程中的PnP组件\r\n设备安装过程中的PnP组件\r\n启动时的PnP组件\r\n总结\r\n\r\n第10章 即插即用的设备驱动程序VxD\r\n\r\nPnP VxD的安装\r\n关于INF文件\r\nPnP的启动过程\r\n其他的PnP配置情况\r\n关闭系统\r\n新的配置\r\n删除设备\r\n一个PnP驱动程序VxD的例子:TRICORD.VxD\r\nRICORD.INF的细节\r\n代码详解\r\n总结\r\n\r\n第11章 从应用程序到VxD通信\r\n\r\nWin16应用程序到VxD:VxD方面\r\n从Win16应用程序到VxD:应用程序方面\r\nWin16应用程序到VxD:实例代码\r\n从Win32应用程序到VxD:VxD方面\r\n从Win32应用程序到VxD:应用程序方面\r\nWin32到VxD:实例代码\r\n总结\r\n\r\n第12章 从VxD到应用程序的通信\r\n\r\n从VxD到Win16应用程序调用的困难\r\n在Windows 3.x下的VxD PostMessage\r\n使用嵌套执行服务\r\n在Windows 9x下的VxD PostMessage\r\n在Windows 9x下从VxD到Win16应用程序:Appy Time\r\n与Win32相关的技巧:异步过程调用\r\nAPCVXD例子\r\n与Win32相关的技巧:Win32事件\r\nVxD和Win32事件\r\n总结\r\n\r\n第二部分 DLL驱动程序\r\n\r\n第13章 关于16位的DLL驱动程序\r\n\r\n为什么DLL驱动程序都是16位的\r\n32位应用程序与16位DLL交互需要转换层\r\n静态和动态库\r\n为什么要把驱动程序做成DLL的形式\r\n应用程序与DLL\r\nDLL和堆栈段\r\nDLL和数据段\r\nDLL与动态分配的内存之间的关系\r\nDLL初始化和结束\r\nDLL函数的要求\r\n基本的DLL驱动程序\r\n创建基本的DLL驱动程序\r\nDLL也需要借助于应用程序\r\nDLL驱动程序的调试工具\r\n总结\r\n\r\n第14章 DLL驱动程序:与硬件设备交互\r\n\r\nDLL和端口访问\r\n端口映射的例子\r\n驱动程序设计中的常规\r\nDLL驱动程序\r\n访问内存映射的硬件设备\r\n内存映射DLL驱动程序的版本\r\n关于内存访问的一些高级话题\r\n总结\r\n\r\n第15章 DLL驱动程序:中断处理\r\n\r\nWindows内存管理策略\r\n驱动程序的内存要求\r\n可在中断处理时访问的静态代码和数据:简单的方法\r\nWindows 3.x下的正确方法\r\n动态分配中断期间安全访问的缓冲区:简单的方法\r\n动态分配中断期间安全访问的缓冲区:正确的方法\r\n安装中断处理函数\r\n全新的驱动程序:概述\r\n全新的驱动程序:代码\r\n总结\r\n\r\n第16章 DLL驱动程序:使用DMA\r\n\r\n操作DMA缓冲区的必要条件\r\n如何分配DMA缓冲区\r\nWindows下的DMA DOS应用程序\r\n与Windows DMA应用程序相关的知识\r\n使用VDMAD服务函数是更好的实现方法\r\n总结\r\n\r\n第17章 DLL驱动程序:使用实模式服务函数\r\n\r\n与DOS驱动程序交互\r\nIOCTL的特殊处理\r\n与TSR交互\r\n总结\r\n\r\n第18章 转换层:在32位中调用16位\r\n\r\n什么是Flat Thunk\r\n转换层的任务\r\n转换层的魔术\r\n逐步生成转换层\r\n逐步构造转换层\r\n总结\r\n\r\n第19章 DLL驱动程序:使用时钟\r\n\r\n用于周期性通知的时钟\r\n使用SetTimer函数\r\n挂接INT 1Ch和INT 8h\r\n不要依赖18.2的频率\r\n使用timeSetEvent:Pros和Cons\r\n如果上述的方法都不管用,那就求助于VxD\r\n计算消耗的时间\r\nGetTickCount、timeGetTime和QueryPerformanceCounter\r\n总结\r\n\r\n附录A Intel体系结构\r\n\r\n8086/8088和实模式\r\n80286和保护模式\r\n选择器和描述符\r\n中断和异常\r\n保护模式的机制\r\n优先级\r\n80386和虚拟8086模式\r\n虚拟8086模式\r\n\r\n附录B 为C语言的VxD调用汇编语言\r\n\r\n声明DDB\r\n为VMM/VxD的回调函数增加转换层\r\n介绍封装库\r\nWRAPPERS.H\r\n关于WRAPPERS.ASM\r\n建立函数封装库\r\n总结\r\n\r\n
无封面