VXD技术漫谈(2)

VXD技术漫谈(2)
   VxD的明天依然美好吗?

  1996年的Windows Hardware Engineering Conference(WinHEC)会议上,Microsoft宣布了一种新的Windows设备驱动程序模型——Win32 Driver Model(WDM)。这种新的设备驱动程序模型将成为Windows 2000(即Windows NT 5.0)的核心。

  这个消息令从事Windows设备驱动程序(VxD)开发的人感到沮丧(虽然大家早已预料到Windows系列与Windows NT系列最终将走到一起)。WDM的浮出水面把一个吃尽苦头的VxD开发者又推到了一个新的起跑线上。如果你曾去DDK的汇编代码里观光过,你一定可以体会这个消息对VxD开发者是个沉重的打击,而对于Windows NT设备驱动程序(Kernel Mode Driver)者来说,却是另一番心情——因为WDM基本等于Kernel Mode Driver+Plug and Play。

  VxD将让位于WDM,现在令我们欣慰的是Microsoft宣布Windows 98(Windows 98支持VxD)可能会坚持到200X年,Windows 2000的诞生也许在2000年之后。在这期间,掌握VxD技术的你还是可以主动要求老板给你加薪的。即使到了WDM一统天下之时,也不用灰心,因为无论是VxD还是WDM,都要求开发人员对计算机硬件有着全面而细致的了解。通过VxD的锻炼,你至少熟悉了计算机的硬件资源并对保护模式有了比较深刻的认识,这些东西都是将来从事WDM开发的硬功夫。

  好了,该说说Windows NT了。在Windows NT中,80386保护模式的“保护”比Windows 95中更坚固,这个“镀金的笼子”更加结实,更加难以打破。在Windows 95中,至少应用程序I/O操作是不受限制的,而在Windows NT中,我们的应用程序连这点权限都被剥夺了。

  Windows NT的驱动程序模型与Windows 3.1、Windows 95是截然不同的。所以说,如果有人告诉你,他的运行Windows NT的机器被CIH破坏了,你可以充一回专家,教训教训他:“这是不可能的,记住,CIH利用的是VxD技术,而VxD在Windows NT中是跑不动的”。

  在Windows NT中,存在三种Device Driver:

  1.“Virtual device Driver” (VDD)。通过VDD,16位应用程序,如DOS 和Win16应用程序可以访问特定的I/O端口(注意,不是直接访问,而是要通过VDD来实现访问)。

  2.“GDI Driver”,提供显示和打印所需的GDI函数。

  3.“Kernel Mode Driver”,实现对特定硬件的操作,比如说CreateFile, CloseHandle (对于文件对象而言), ReadFile, WriteFile, DeviceIoControl 等操作。“Kernel Mode Driver”还是Windows NT中唯一可以对硬件中断和DMA进行操作的Driver。SCSI miniport Driver和 网卡NDIS Driver都是Kernel Mode Driver的一种特殊形式。

好了,就说到这里吧,对于Kernel Mode Driver我也知之甚少。

  如果你对Windows设备驱动程序开发有兴趣的话,建议你去如下的Web站点去逛逛。

  http://hejiasheng.363.net/tppmsgs/msgs0.htm#6

   Vireo Software (VtoolsD) home page

  http://hejiasheng.363.net/tppmsgs/msgs0.htm#7

   Dan Norton"s DDK resource page

  http://hejiasheng.363.net/tppmsgs/msgs0.htm#8

   Microsoft home page

  http://hejiasheng.363.net/tppmsgs/msgs0.htm#9

   O"Reilly Associates home page

  http://hejiasheng.363.net/tppmsgs/msgs0.htm#10

   Nu-Mega Technologies (Soft-ICE) home page

  http://hejiasheng.363.net/tppmsgs/msgs0.htm#11

   Windows Hardware Technical Information for IHVs and OEMs

  http://hejiasheng.363.net/tppmsgs/msgs0.htm#12

   Blue Water Systems (WinRT) home page

  http://hejiasheng.363.net/tppmsgs/msgs0.htm#13

   Universal Serial Bus Home Page

  http://hejiasheng.363.net/tppmsgs/msgs0.htm#14

   DDK annotations
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Windows95是一个运行在最高级特权,第0层级别的多线程操作系统。所有的应用程序都运行在最低级特权,第3层级别上。这样就限制了 应用程序对系统的操作。它们不能使用cpu特权指令,不能直接访问I/O端口,等等。你对gdi32,kernal32和user32这三个大的系统组件一 定很熟悉。你肯定会认为这样重要的代码段一定是在第0层级别下运行的。但是实际上,它们和其他的应用程序一样,是在第三层级别下运行的。这就是说它们并不比Windows计算器,或者扫雷游戏有更多的权限。系统的控制实权掌握在虚拟级管理器(VMM) 和虚拟设备驱动程序(VxD)手中。 这一切都是由dos引起的。在Window 3.x的时代,在市场上有很多成功的dos软件。Windows 3.x必须同时运行普通的Windows程序和dos程序,否则,它就会失去市场。 这个局面是很难处理的,因为dos程序和Windows程序有本质的不同。dos程序认为它们拥有系统的一切:键盘,cpu,内存,硬盘等等。dos程序不知道怎样和其他程序合作,而Windows程序(从那时候起)是可靠的多任务合作系统。也就是每个Windows程序都必须通过GetMessage或PeekMessage来和其他程序进行交流。 解决办法就是,在一个8086虚拟机上运行所有的dos程序,而在另一个叫做系统虚拟机的虚拟机上运行其他所有的Windows程序。Windows负责把cpu运算时间轮流的分给每个虚拟机。这样,在Windows 3.x里。Windows程序之间用的是合作多任务,而虚拟机之间用的是优先级多任务。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值