浅谈VxD驱动开发

本文深入探讨了VxD驱动在Windows 3.x和9x系统中的作用,它能直接访问硬件,为应用程序提供接口。VxD通过虚拟机管理器(VMM)在多应用程序环境中创建独立的虚拟机,确保程序间硬件资源的隔离。文章还介绍了使用VtoolsD开发VxD驱动的基本流程,包括设置设备参数、API、控制消息和服务,以及如何在Visual C++中生成和设置VxD驱动程序。最后,简述了VxD驱动的安装过程,强调了inf文件在PnP设备安装中的关键作用。
摘要由CSDN通过智能技术生成

1、VxD和VM

 

        VxD 是用于 Windows/386 (包括 Windows 3.x Windows 9x )上的驱动模型。 VxD 的全称是指 Virtual xxx Device ,在 Windows 9.x 下其扩展名为 .vxd ,这里的 xxx 是指代某种类型的硬件设备。 VxD 可以直接访问硬件设备,为应用程序提供访问硬件设备的接口(包括访问内存空间,读写 IO 端口,中断处理等)。

    

    

        Windows 9.x 中运行这多种应用程序(超级程序, DOS 应用程序, WIN16 应用程序, WIN32 应用程序),如下表所示,在 Windows 9.x 中由 VMM Virtual Machine Management )负责管理的 VM Virtual Machine ,虚拟机)系统为每一个应用程序创建了一个独立执行的环境,仿真了应用程序需要访问的硬件资源,使应用程序总认为自己使系统中唯一运行的程序。这样子就可以为不同的应用程序创建不同的虚拟机环境,实现不同程序在一个平台上的运行。 WIN16 WIN32 运行在同一个虚拟机下面,每一个 DOS 应用程序运行在独立的 VM 内。 VM 的初衷是为了运行 DOS 应用程序, DOS 操作系统是单任务的,所以 DOS 应用程序相当“霸道”,总是认为自己是惟一运行着的应用程序。

 

程序类型

工作模式

特权级

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、付费专栏及课程。

余额充值