| 摘要 | 第1-4页 |
| Abstract | 第4-10页 |
| 第1章 引言 | 第10-19页 |
| ·本章引论 | 第10页 |
| ·研究背景 | 第10-12页 |
| ·“软件即产品”模式 | 第10-11页 |
| ·“软件即服务”模式 | 第11-12页 |
| ·研究目的和对象 | 第12-16页 |
| ·个人按需软件服务系统的提出 | 第12-14页 |
| ·系统的可行性分析与相关研究 | 第14-16页 |
| ·本文的主要贡献和结构安排 | 第16-18页 |
| ·本文的主要贡献 | 第16-17页 |
| ·本文的结构安排 | 第17-18页 |
| ·本章小结 | 第18-19页 |
| 第2章 文件系统过滤驱动的原理 | 第19-37页 |
| ·本章引论 | 第19页 |
| ·Windows 文件系统 | 第19-23页 |
| ·用户态与内核态 | 第19-21页 |
| ·驱动对象与设备对象 | 第21页 |
| ·设备驱动的类别 | 第21-23页 |
| ·文件系统过滤驱动模型 | 第23-36页 |
| ·文件过滤驱动的功能 | 第23-24页 |
| ·开发工具DDK(Device Development Kit) | 第24-25页 |
| ·IRP 及其各个域的介绍 | 第25-28页 |
| ·I/O 栈 | 第28-30页 |
| ·完成例程 | 第30-32页 |
| ·IRQL 介绍 | 第32-33页 |
| ·驱动入口函数和分派函数 | 第33页 |
| ·驱动对IRP 的一般处理过程 | 第33-34页 |
| ·自行完成IRP 的几种典型方法 | 第34-35页 |
| ·FastIO 接口 | 第35页 |
| ·驱动开发中的常用函数 | 第35-36页 |
| ·本章小结 | 第36-37页 |
| 第3章 开发平台的搭建 | 第37-46页 |
| ·本章引论 | 第37页 |
| ·相关开发/调试软件 | 第37-38页 |
| ·winDbg 软件介绍 | 第37页 |
| ·SoftICE 软件介绍 | 第37-38页 |
| ·开发平台的选择 | 第38-44页 |
| ·开发工具的选择 | 第39-40页 |
| ·开发/调试模式的选择 | 第40-44页 |
| ·调试环境的使用 | 第44-45页 |
| ·编译驱动程序 | 第44-45页 |
| ·安装驱动程序 | 第45页 |
| ·本章小结 | 第45-46页 |
| 第4章 文件系统过滤驱动部分 | 第46-76页 |
| ·本章引论 | 第46页 |
| ·原理概述 | 第46-47页 |
| ·框架流程 | 第47-64页 |
| ·入口函数DriverEntry | 第47-50页 |
| ·Device Control IRP 的分派函数 | 第50-57页 |
| ·Create IRP 的分派函数 | 第57-59页 |
| ·Cleanup/Close IRP 的分派函数 | 第59-60页 |
| ·Directory Control IRP 的分派函数 | 第60-61页 |
| ·Query Info IRP 的分派函数 | 第61-62页 |
| ·Read IRP 的分派函数 | 第62-63页 |
| ·其它相关分派函数 | 第63-64页 |
| ·技术要点与难点 | 第64-69页 |
| ·驱动与应用程序互传数据 | 第64页 |
| ·设备名与盘符的转换 | 第64-65页 |
| ·文件全路径过滤 | 第65页 |
| ·读请求的完成 | 第65-68页 |
| ·防止遗漏处理读请求的措施 | 第68页 |
| ·能判断文件结尾的文件读操作 | 第68页 |
| ·FastIO IRP 的处理 | 第68-69页 |
| ·全局变量的互斥访问权控制 | 第69页 |
| ·设计优化方法 | 第69-75页 |
| ·用数组替代哈希表 | 第69-71页 |
| ·用FsContext 地址代替文件对象地址 | 第71-72页 |
| ·查询数据的缓存 | 第72页 |
| ·读数据的缓存 | 第72-73页 |
| ·进一步导出实现更完全的过滤 | 第73页 |
| ·Write IRP 和Set Info IRP 的导出 | 第73-75页 |
| ·多维的待处理IRP 队列 | 第75页 |
| ·本章小结 | 第75-76页 |
| 第5章 客户端应用程序部分 | 第76-87页 |
| ·本章引论 | 第76页 |
| ·原理概述 | 第76-77页 |
| ·框架流程 | 第77-85页 |
| ·用户配置文件的读入和分析 | 第79页 |
| ·获取目标文件的信息 | 第79-80页 |
| ·构造目标目录的文件入口链 | 第80-81页 |
| ·动态创建、删除目录 | 第81-82页 |
| ·加载驱动 | 第82页 |
| ·向驱动发送用户初始化信息 | 第82-83页 |
| ·向驱动发送若干用户Device Control IRP | 第83页 |
| ·辅助线程Service Thread 的创建和作用 | 第83-84页 |
| ·等待—处理的无限循环 | 第84页 |
| ·主线程的退出 | 第84页 |
| ·驱动程序与应用程序之间互传的数据 | 第84-85页 |
| ·设计优化方法 | 第85-86页 |
| ·异步处理请求 | 第85页 |
| ·多线程处理请求 | 第85-86页 |
| ·本章小结 | 第86-87页 |
| 第6章 综合评测方案 | 第87-96页 |
| ·本章引论 | 第87页 |
| ·功能评测方案和结果 | 第87-90页 |
| ·不同大小的可执行文件 | 第87-88页 |
| ·各种读取文件的方式 | 第88页 |
| ·可执行文件读写日志文件 | 第88页 |
| ·从虚拟机移植到真实系统 | 第88-90页 |
| ·功能评测的结果 | 第90页 |
| ·性能评测方案和结果 | 第90-92页 |
| ·性能测试方案 | 第90-91页 |
| ·性能测试的数据及分析 | 第91-92页 |
| ·典型的错误总结及原因分析 | 第92-95页 |
| ·上下文的IRQL 达不到函数运行的要求 | 第93页 |
| ·获取磁盘设备名时蓝屏 | 第93-94页 |
| ·返回除成功状态外的其他状态 | 第94页 |
| ·多个文件进程滞留内存 | 第94页 |
| ·驱动卸载的错误 | 第94-95页 |
| ·调用ObQueryNameString 出错 | 第95页 |
| ·IoCompleteIRP 的错误调用 | 第95页 |
| ·本章小结 | 第95-96页 |
| 第7章 结论 | 第96-98页 |
| 参考文献 | 第98-101页 |
| 致谢 | 第101-102页 |
| 个人简历、在学期间发表的学术论文与研究成果 | 第102页 |