Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1296806
  • 博文数量: 436
  • 博客积分: 7854
  • 博客等级: 少将
  • 技术积分: 3225
  • 用 户 组: 普通用户
  • 注册时间: 2007-12-18 16:30
文章分类

全部博文(436)

文章存档

2013年(2)

2012年(56)

2011年(70)

2010年(308)

分类:

2010-06-04 14:51:07

WDF是Windows驱动编程模型的发展趋势,但是传统的NT式驱动、WDM模型依然是理解驱动开发的基础。目前,完全抛弃传统是不可能的。一方面,传统的模型编写的驱动程序依然有效,而且有大量现成的例子可以参考;另一方面,WDF虽然已经出来很久了,但是有许多的基础例子找不到WDF的范本。很多无处不用的驱动程序是人类经过多久都不愿意去重新开发的,虽然微软把大部分旧的驱动程序的例子改为了WDF模型,并在WDK中和旧例子一起提供给开发者参考,全面取代WDM的时代依然没有到来。这个过程还有赖于WDF自身的进一步完善。ITPUB个人空间-n3{E\3Oo
如何区分驱动模型?下面是本书第2章中的一段:ITPUB个人空间/{ L/r@*yqR
        “Windows的模型概念,本来是就驱动程序的行为而言的。比如WDM驱动,必须要满足提供n种被要求的特性(如电源管理、即插即用)才被称为WDM驱动。但是如果不提供这些功能,那么统一称为NT式驱动。
1s.W-t#f ?)T(i3ye U:A l0        本书采用简单的区分方法。将一切在Windows 2000~Windows Vista下能正常运作且未调用WDF相关的内核API函数的驱动都称为传统型驱动(包括NT式和WDM)。如果调用了WDF相关的内核API则称为WDF驱动。ITPUB个人空间Y |m%AjS
        从目前笔者的理解来看,WDF的编程方式是对已有的在WDM中广泛使用的内核API函数的一次封装,尤其是对以Io开头的系列函数,包括驱动对象(Driver Object)、设备对象(Device Object)、和请求(IRP)相关的API进行了封装,而且旧的API完全可以调用。已经有太多的内核程序依赖于旧的接口,微软在很长一段时间内都不可能要求只能使用WDF编程。
:g,\NEgQ0OpG0        因此本书采用二者并重的方式。大部分例子用传统型驱动方式编码,另一些例子则使用WDF的方式编码(虚拟磁盘与虚拟网卡)。读者会发现这二者之间一脉相承,只要熟练掌握传统型的编程方法,了解WDF会是非常轻松和愉快的过程。
 
---------------------------
编写Windows内核程序,就意味着这个程序可以执行任意指令,可以访问计算机所有的软件、硬件资源。因此,稍有不慎就有可能将系统变得不稳定。Windows的设计者设计了各种驱动模型或者框架,如NT式内核驱动模型、WDM框架和新推出的WDF框架。在这些模型框架下编程,就使内核编程变得简单,同样也降低了内核程序崩溃的机会。其实,Windows驱动程序员和黑客都在写内核程序,唯一不同的是驱动程序员按照微软设计的模型写程序,而黑客可以不按照这些框架写。Windows设计的这些框架,可以将操作系统的原理隐藏起来,只暴露一些接口,驱动程序员只要把这些接口写好就可以了。从这个角度看,驱动开发并不难,尤其是读完本书后,更会觉得不难了。但是想完成一些特殊的功能,如内核级隐藏进程等,Windows的这些框架就没什么用处了,程序员就需要对Windows内核有全面的了解,通过直接修改Windows内核来实现这些目的。往往黑客对这种技术乐此不疲,通过修改Windows内核,你会发现你的程序几乎无所不能。
阅读(331) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~