专题三.驱动程序设计基础

请注意一下顺序:

一、三个专题驱动整个入门流程   
内容列表
流程一.配置VC++、不同操作系统对应的DDK、虚拟机VMWare,安装调试器Softice or WinDbg;
流程二.编译第一个最简单的Hello程序(DDK环境、VC+DDK环境都可),并用监视器观察输出结果..
流程三.编写*.inf 文件,进行手工安装到电脑上,并设备管理器进行观察.[单独出来专题,可使用流程六]
流程四.编写一个自动加载驱动程序、卸载驱动程序的应用程序。[单独出来专题,可使用流程六]
流程五.设置好调试器,特别是WinDbg双机调试通过com1端口。下载好符号表,转换格式,进行源码调试。
       Softice调试器,如果是XP系统,请下载补丁.
流程六.提供一个快捷方式解决流程三.四途径,不够建议多多使用上面,多多了解计算机。
装一个DirverStudio3.2,只是用里面的快捷工具,如EzDriverIntaller、DriverMonitor。

任务:通过流程一、二、六、五可以直接完成任务。但是如果你想知道更多就按照流程一、二、三、四、五、六.来完成。

总成果:心中有整个流程思想,编写第一个HelloWorld驱动程序,踏进驱动之门。

[课题3.1]驱动整个入门流程之流程一、二、六、五
课题要求:配置VC++、不同操作系统对应的DDK、虚拟机VMWare,安装调试器Softice or WinDbg;
成果3.1:编写得到第一个HelloWorld驱动程序
相关解决方案:
驱动开发和调试环境的设置(由qqeleven完成)
http://bbs.pediy.com/showthread.php?t=48220
真正的驱动入门()[附小程序代码](由ccdeath完成)
http://bbs.pediy.com/showthread.php?t=56192

[课题3.2]驱动整个入门流程之流程三
课题要求:相信你3.1课题没问题吧,编译好驱动为*.sys。安装*.inf,接着用设备管理器进行观察。介绍*inf格式及如何编写
成果3.2:编写得到一个简单HelloWorld的*.inf
相关解决方案:
inf文件的编写(由sislcb完成)
http://bbs.pediy.com/showthread.php?t=57571

[课题3.3]驱动整个入门流程之流程四
课题要求:相信你3.1课题没问题吧,这个应用程序可以是控制台 或者 是Win32程序,
打开服务管理之类,创建服务。能够把编译好的驱动程序,加载、卸载测试一下,在监视器进行观察.
成果3.3: 编写得到一个快捷加载、卸载驱动程序的应用程序
相关解决方案:
驱动整个入门流程之流程四--驱动动态加载(由sislcb完成)
http://bbs.pediy.com/showthread.php?t=57265

二.三个专题WDM驱动程序与应用程序之间的通信
通信一.理解驱动程序基本框架,特别同步、IRP请求包这部分.
通信二.应用程序可以分为:古老控制台main()、win32 SDK 程序、win32MFC框架,只需完成其中一个即可。
通信三.驱动程序获取数据缓冲区三种方式:METHOD_BUFFERED,METHOD_IN(OUT)_DIRECT,METHOD_NEITHER;
通信四.通信方式DeviceIoControl、事件通知(针对win32)等.
通信五.调试、运行、观察结果

任务:这个是在驱动整个入门流程基础上进行深化。

总成果:从一到二是一个跨越式进步,通信实例程序。Fight!

[课题3.4] WDM驱动程序与应用程序之间的通信二
课题要求:会使用DeviceIoControl访问,解决CreateFile问题,寻找桥梁-设备接口GUID。古老控制台main()、win32 SDK 程序、win32MFC框架,只需完成其中一个即可。
成果3.4:编写得到一个测试程序框架,main()、win32 SDK 、win32MFC
相关解决方案:
WDM驱动中使用DeviceIoControl,CreateFile(由火影完成)
http://bbs.pediy.com/showthread.php?t=57948


[课题3.5] WDM驱动程序与应用程序之间的通信三
课题要求:对控制命令,还有文件包含路径不要出错。驱动程序获取数据缓冲区三种方式:METHOD_BUFFERED,METHOD_IN(OUT)_DIRECT,METHOD_NEITHER;
成果3.5:编写得到一个驱动程序,能够分别把这三中获取数据方法。
相关解决方案:
WDM驱动程序使用Buffer I/O,Direct,Neither模式传递数据(由火影完成)
http://bbs.pediy.com/showthread.php?t=58251

[课题3.6] WDM驱动程序与应用程序之间的通信四
课题要求:通信方式DeviceIoControl异步、事件通知(针对win32)等,有可能还需要用到自旋锁.
成果3.6:编写得到一个驱动程序,能够满足其中一种方式就可以了。
相关解决方案:
驱动和应用层的异步通信(由sislcb完成)
http://bbs.pediy.com/showthread.php?t=59015 
真正的驱动入门(二)[附2个源代码](由CCDeath完成)
http://bbs.pediy.com/showthread.php?t=56313

三.filedisk源码分析
[课题3.7]filedisk源码分析
课题要求:分析出应用层和核心层的整体框架思路
成果3.7:filedisk源码分析
相关解决方案:
filedisk源码分析(由ccdeath完成)
http://bbs.pediy.com/showthread.php?t=57129 

四.Ring0级监控程序
[课题3.8]Ring0监控程序PRMonitor源代码(ddk+sdk)
课题要求:通过ssdt hook实现 对进程创建,注册表修改和内核模块加载的监控
相关解决方案:
偶写的Ring0监控程序PRMonitor源代码(ddk+sdk)( 由xhackx完成)
http://bbs.pediy.com/showthread.php?t=55092

五.学习驱动碰到难题解决经验与学习笔记分享
[课题3.*] 总结  
课题要求:亲身感受
相关解决方案:
驱动程序中几个常见例程[读书笔记](由vbcs完成)
http://bbs.pediy.com/showthread.php?t=57881 
过滤驱动中创建IRP时IO堆栈单元的细节处理(由猪头三完成)
http://bbs.pediy.com/showthread.php?t=60278 
六.经典驱动代码发布区
课题要求:注明版权信息,还有链接信息
相关解决方案:
一份虚拟光驱的源码(由vbcs提供)
http://bbs.pediy.com/showthread.php?t=57486

七.驱动资源发布区

codeproject驱动教程
谢谢jingru提供
http://bbs.pediy.com/showthread.php?t=63331

待续...可以涉及网络驱动、文件系统过滤驱动、**驱动等领域

是不是越来越有趣了….
注:大家可以一起把上面的专题完成,挑自己感兴趣课题来完成,看看有
什么不同的解决方案,即使出现相同的解决方案,也可以贴出你自己的想法...
让看雪见证我们一起进步....祝大家新春快乐,好运连连...


                                     2008.03.01