Windows设备驱动程序技术内幕一书,详细讲解了设备驱动程序的原理及实现方法,并例举了大量的程序实例,便于读者学习和掌握。\r\n 本书分为三个部分。第一部分主要讲怎样用DOS的方法写设备驱动程序,该部分的驱动程序被封装为DLL形式。第二部分讲怎样写Windows的虚拟设备驱动程序(VxD)。第三部分介绍Windows系统下标准模式设备驱动程序的编写方法。\r\n 本书是一本技术性较强的工具书,它主要针对有一定计算机基础的程序开发者和硬件设计者,同时也适应需要进一步了解计算机应用的读者。
第1章 概述\r\n\r\n1.1 本书的读者对象\r\n1.1.1 哪些人应该读这本书\r\n1.1.2 哪些人不能读这本书\r\n1.2 应用平台\r\n1.3 本书的结构\r\n1.4 学习的方法\r\n1.5 需要的工具\r\n\r\n第一部分 驱动程序善础\r\n\r\n第2章 基础知识\r\n\r\n2.1 驱动程序的定义\r\n2.2 特权封装\r\n2.3 非特权封装\r\n2.4 DLL与静态库的比较\r\n2.5 为什么要把驱动程序封装为 DLL\r\n2.6 应用程序与DLL比较\r\n2.6.1 DLL和栈段\r\n2.6.2 DLL和数据段\r\n2.6.3 DLL和动态分配内存的主权\r\n2.6.4 DLL的初始化和终止\r\n2.7 DLL的函数要求\r\n2.8 框架驱动程序\r\n2.9 建立框架驱动程序\r\n2.10 DLL需要应用程序\r\n2.11 驱动程序的调试工具\r\n2.12 总结\r\n\r\n第3章 与硬件相连接\r\n\r\n3.1 端口映射和内存映射的比较\r\n3.1.1 访问端口映射硬件\r\n3.1.2 访问内存映射硬件\r\n3.1.3 两步骤地址转换过程\r\n3.1.4 对IMB以下的设备映射使用预定义的选择器\r\n3.2 端口映射例子程序\r\n3.2.1 例子程序3.1\r\n3.2.2 例子程序3.2\r\n3.2.3 例子程序3.3\r\n3.2.4 例子程序3.4\r\n3.2.5 例子程序3.5\r\n3.3 驱动程序设计概述\r\n3.4 驱动程序例子\r\n3.5 内存映射的方案\r\n3.6 先进内存的问题\r\n3.7 设备映射大于IMB需要DPMI服务\r\n3.8 总结\r\n\r\n第4章 中断方式设备驱动程序\r\n\r\n4.1 Windows虚拟内存\r\n4.2 实现方法\r\n4.3 什么是可以丢弃的\r\n4.4 为什么整理内存\r\n4.5 安全中断驱动程序内存需求\r\n4.5.1 固定的原因\r\n4.5.2 不可丢弃的原因\r\n4.5.3 负面锁定的原因\r\n4.6 中断安全的代码和数据\r\n4.6.1 FIXED何时是真正固定的\r\n4.6.2 动态分配中断安全的缓冲区\r\n\r\n第二部分 虚拟驱动程序简介\r\n\r\n第5章 Windows的虚拟世界\r\n\r\n5.1 虚拟机是什么\r\n5.2 Windows的执行环境\r\n5.2.1 管理程序\r\n5.2.2 Windows应用程序\r\n5.2.3 DOS应用程序\r\n5.3 Windows地址空间\r\n5.3.1 线性地址空间\r\n5.3.2 线性地址空间和物理地址空间\r\n5.3.3 逻辑、线性和物理地址空间\r\n5.4 这意味着什么\r\n5.5 实现虚拟机\r\n5.5.1 捕获I/O操作\r\n5.5.2 捕获内存操作\r\n5.5.3 捕获中断和异常事件\r\n5.6 V86模式简介\r\n5.7 总结\r\n\r\n第6章 虚拟驱动程序简介\r\n\r\n6.1 VxD的基本结构\r\n6.2 设备描述器部件\r\n6.3 支持数据结构\r\n6.4 事件的标志信息\r\n6.5 保护模式初始化\r\n6.6 创建VxD的工具\r\n6.7 总结\r\n\r\n第7章 设备选优VxD\r\n\r\n7.1 VMM和处理器的异常事件\r\n7.2 端口所有权\r\n7.2.1 PORITRAP(喘口访问)程序例子\r\n7.2.2 仿真多字节I/O\r\n7.2.3 安装和使用 PORTTRAP\r\n7.3 例子PAGETRAP\r\n7.3.1 初始化例程\r\n7.3.2 错误处理器例程\r\n7.3.3 结束处理器\r\n7.3.4 测试PAGETRAP\r\n7.4 总结\r\n\r\n第8章 服务硬件中断的VXD\r\n\r\n8.1 中断和VMM\r\n8.1.1 中断反射的过程\r\n8.1.2 哪个VM获得中断\r\n8.1.3 扩展模式中的中断执行时间\r\n8.2 VxD通信\r\n8.2.1 传递参数\r\n8.2.2 从应用程序调用VxD的API\r\n8.2.3 硬件中断处理 VxD\r\n8.2.4 API调用服务\r\n8.3 硬件中断反射VxD\r\n8.3.1 回调Mast\r\n8.3.2 回调Hw Int\r\n8.3.3 回调EOI\r\n8.3.4 回调Virt Int和IRET\r\n8.4 总结\r\n\r\n第三部分 特殊技术\r\n\r\n第9章 第0层处理器缩短响应时间\r\n\r\n9.1 替换 VxD\r\n9.1.1 安装\r\n9.1.2 初始化 BIMODAL INT STRUC\r\n9.2 注册处理器\r\n9.2.1 VPICD初始化字段\r\n9.2.2 处理中断\r\n9.3 编写处理器程序\r\n9.3.1 为什么没有堆栈变量\r\n9.3.2 一种更糟的情况\r\n9.4 总结\r\n\r\n第10章 双模态驱动程序\r\n\r\n10.1 新的双模态驱动程序综述\r\n10.1.1 新的双模态驱动程序代码\r\n10.1.2 回调细节\r\n10.2 总结\r\n\r\n第11章 编写使用 DMA的驱动程序\r\n\r\n11.1 DMA缓冲区的要求\r\n11.1.1 物理上毗邻\r\n11.1.2 固定的和页面销定\r\n11.1.3 定位在64KB的边界上\r\n11.1.4 怎样分配DMA缓冲区\r\n11.2 Windows下 DMA的DOS应用程序\r\n11.3 DMA的Windows应用程序可使用这个知识\r\n11.3.1 使用VDS缓冲区更好\r\n11.3.2 最佳的解决方案——助手 VxD\r\n11.4 DMABUF的 API\r\n11.5 使用助手VxD——USEAPLC\r\n11.6 总结\r\n\r\n第12章 使用实模式服务\r\n\r\n12.1 关于DOS设备驱动程序\r\n12.1.1 对IOCTL的专门处理\r\n12.1.2 介绍DOS TSR\r\n12.1.3 通过缓冲区传递数据\r\n12.1.4 TSR调用Windows应用程序\r\n12.2 增强模式中的回调\r\n12.3 编程细节\r\n12.4 总结\r\n\r\n第13章 编写标准模式的驱动程序\r\n\r\n13.1 基本概念\r\n13.1.1 硬件的端口映射\r\n13.1.2 内存映射的硬件\r\n13.1.3 标准模式中的选择器\r\n13.2 标准模式中的中断\r\n13.3 从保护模式和实模式中获取中断\r\n13.4 分离实模式控制器和保护模式控制器\r\n13.5 总结\r\n\r\n第14章 定时器和软件中断\r\n\r\n14.1 定时器\r\n14.1.1 使用SetTimer()\r\n14.1.2调用INT 1CH和INT 8H\r\n14.1.3 不要依赖于每秒18.2次\r\n14.1.4 使用timesetEvent()\r\n14.1.5 使用VxD\r\n14.1.6 不要使用GetTickCount()\r\n14.1.7 使用 BIOS的周期计数或者是 timeGetTime()\r\n14.2 软件中断\r\n14.2.1 连接到软件中断\r\n14.2.1 用VxD捕获软件中断\r\n14.3 编程细节\r\n14.4 总结