- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
驱动开发历程(内部) - 看雪学院.doc
目录
热身阶段 3
问1:什么是过滤驱动?(2009-4-15) 3
问2:什么是IRP?(2009-4-15) 4
问3:驱动栈,设备栈?(2009-4-15) 7
问4:文件系统过滤驱动(FSFD)为什么能过滤文件系统(FSD)?(2009-4-16) 9
问5:怎么用好DDK(或WDK,现在起本书只说WDK)?(2009-4-16) 12
Legacy驱动阶段 13
问6:DriverEntry和DriverUnload是干嘛的?(2009-04-20) 13
问7:SfCreate(2009-04-20) 13
问8:SfDisplayCreateFileName(2009-04-23) 15
问9:fastio系列例程(2009-04-28) 16
问10:总结sfilter(2009-04-28) 26
问11:fspyKern.h、fspydef.h和filespy.h(2009-04-28) 27
问12:fspyHash.c(2009-04-28) 28
问13:上下文(2009-04-30) 35
问14:fspyCtx.c(2009-04-28) 40
问15:FspyLib.c(2009-04-28) 50
问16:总结filespy(2009-04-30) 65
问17:legacy驱动透明加解密设计开发示例(2009-04-30) 65
概要设计 65
定位机制设计 67
跟踪机制设计 67
加解密模块设计 68
其他设计 69
问18:总结legacy驱动(2009-05-04) 70
Mini驱动阶段 71
问19:passThrough(2009-05-04) 71
问20:ctx(2009-05-04) 72
问21:scanner(2009-05-05) 76
问22:swapBuffers(2009-05-05) 78
问23:总结mini驱动(2009-05-05) 79
问24:fastfat(2009-05-05) 79
后记 80
热身阶段
问1:什么是过滤驱动?(2009-4-15)
经历过驱动开发之后,给我最大的一个认识就是:这里所谓的驱动和没有接触它之前所臆想的驱动有很大的不同。我们最早入手的资料是楚狂人的《Windows 文件系统过滤驱动开发教程(第二版)Windows 文件系统过滤驱动开发教程(第二版)DriverObject-MajorFunction[IRP_MJ_CREATE] = SfCreate;这样只要驱动接收到IRP_MJ_CREATE类型的IRP就会把它交给SfCreate例程处理。断言的用法与用户模式对应,不再赘述。这里可以形象地认为邮局(驱动)收到邮件(IRP),邮局根据邮件上收信人的邮编和地址(MajorFunction和MinorFunction),把邮件交给收信人(SfCreate)做处理。这里只是比喻,IRP最终的“收件人”并不一定是当前这个过滤驱动的分发例程。
Fastio是cache调用引发的,且没有IRP。你可以认为fastio操作的数据一定是在缓存中。也就是说,用户模式下各种IO到内核模式下只走两天路线:IRP和fastio。假如你只关心磁盘里的数据,那fastio就没什么意义。关于其中出现的内存申请方面的技巧后面会详述。提到的两种锁在后来对某些数据结构的操作中会经常碰到。初期只需要知道。
后面几章操作和编程方面,就示范目的而言讲解地比较详细,其中出现的很多概念和方法还需专门开问讨论,也不推荐过早考虑实际开发。暂时要接受和理解这本书中提到的基本理论已经不容易了。
关于sfilter等源码需要另开题目讨论。
总结:
一个驱动(以sfilter为例,这里要解释以sfilter为例的原因:它的数据结构和功能都相对简单,可参考的资料相对较多)主要组成部分有:数据结构、DriverEntry例程及其他各种例程。它可以对自己所绑定的卷上的IO进行相应处理。这就是实际编程中你看到的驱动。
NTFSI中过滤驱动的定义为:一个拦截到一些已有软件模块的请求的中间层驱动。依靠在请求到达目标前截获请求,过滤驱动就有机会扩展或修改请求的原始接收者所提供的功能或服务。比照上一段来理解,驱动这个概念就没有那么空了。这里只是帮助你尽量块地融入到驱动的开发环境中。不要只看某一份资料,偏执一处只会令你由无知变为“误知”。
文件系统过滤驱动为什么能起到过滤文件系统的作用就需要有一定的知识基础才好理解了。暂时略。
问2:什么是IRP?(2009-4-15)
问1和许多资料及网页都不断地提及IRP这个名词,对于刚接触驱动的人来说这玩意儿是陌生的,但在将来的学习和开发过程中它是一个关键性的基本概念之一。MS在DDK中解释了IRP及其结构,但有
文档评论(0)