版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、文章编号:1009-671X (200109-0035-04Win 98下虚拟设备驱动程序的设计与实现王磊1,朱齐丹1,温强2(1.哈尔滨工程大学自动化学院,黑龙江哈尔滨150001;2.哈尔滨工程大学机电工程学院,黑龙江哈尔滨150001摘要:介绍了电话网络测试系统的组成和结构,Windows 98的内核管理机制和应用程序权限级别,简述了在Windows98下开发虚拟驱动程序的几种方法,并给出了在电话网络测试系统中应用虚拟设备驱动程序VxD 实例。关键词:虚拟设备驱动程序;VxD ;硬件中断;电话网络测试系统中图分类号:TP39.6文献标识码:ADesign and Actu alizati
2、on of Visu al Device Driver Program in Win 98WAN G Lei 1,ZHU Qi-dan 1,WEN Qiang 2(1.Automation College ,Harbin Engineering University ,Harbin 150001,China ;2.Mechanical and Electrical En gineering Col 2lege ,Harbin Engineering University ,Harbin 150001,China Abstract :The structure and buildup of th
3、e telephone net test system ,the kernel management of Windows 98and the right limit of the applied program were introduced.Several ways of developing visual device driver program in Win 98were depicted.A developing example of using VxD in the telephone net test sys 2tem was given.K ey w ords :visual
4、 device driver program ;VxD ;hardware interruption ;telephone net test system0引言从Windows 3.1开始,对于硬件设备的访问便采取了一种设备驱动程序的方法,客户通过设备驱动程序来获得硬件的参数或者设置,但是由于16位的操作系统基于原来的DOS ,所以客户程序仍然可以通过一些B IOS 或者DOS 的DPM I 中断调用来实现对硬件的操作。32位的操作系统如windows 95&N T 不再基于16位DOS ,所以用户如果需要实现对硬件中断、DMA ,I/O 或者是绝对存储访问,都不可避免地必须通过设备驱
5、动程序。Winodows 95操作系统能够实现多线程、多进程的应用,系统通过一个虚拟机管理器VMM32,VxD ,通过它和其他的设备驱动程序合作,来实现多个进程间的协调工作,防止一个进程的运行导致另一个进程的崩溃。本文结合开发工具V ToolsD 给出一个为电话网络测试系统的ISA 插卡拟设备驱动程序VxD 的设计实例。该套系统主要由三部分组成:微机数据处理人机交互界面,数据交换通讯ISA 插卡,数据测试部分。用户通过微机人机交互界面向系统下达测试命令,然后由数据交换通讯ISA 插卡中的单片机8032识别命令,通过电话传输线路把命令下发到每一个交换机节点,该系统在城市电话网络的每一个交换机节点
6、上都安装一个电话测试机盒,通过单片机8032控制电话测试部分的工作,完成系统测试要求。然后再通过电话传输线路,把测试结果上传到ISA 插卡,最后由计算机完成数据识别,数据处理,显示测试结果,打印测试结果等工作。1设备驱动程序VxD设备驱动程序是被用来管理系统资源(硬件或者软件的可执行2进制代码,通过设备驱动程序,多个进程可以同时使用这些资源,从而可以实现多进程并行运行。设备驱动程序一般是以收稿日期:2001-04-26作者简介:王磊(1977-,男,山东蓬莱人,哈尔滨工程大学自动化学院硕士研究生,主要研究方向:计算机控制。第28卷第9期应用科技Vol.28,.92001年9月Applied S
7、cience and Technology Sep.,2001“VxD ”为后缀名,其意思是虚拟化某些设备(Vir 2tual ”something ”Device .在一般概念上,设备驱动程序和虚拟设备是同义的,下面就将两者混用。386以上的微处理器有4个优先级别:0级、1级、2级、3级,一般操作系统运行于优先级0级上,而用户程序运行在3级上。VxD 运行于0级上,其在内存中的位置也是处在操作系统保护的空间之内的。Windows 95是继承Windows 3.X 而来,所以两者的设备驱动程序采取的是同一种模式,也就是说,一般为Windows 3.X 写的设备驱动程序,可以不加改动地运行于Wi
8、ndows 95下;但是也有一些区别:一般Windows 95下面的驱动程序是以“VxD ”为后缀名,Windows 3.X 是以“386”为后缀名;Windows 3.X 的设备驱动程序必须在Windows 启动时静态载入,而Windows 95的设备驱动程序可以在程序运行过程中动态载入。Windows N T 采用的一种完全不同的模式,所以Windows 95&3.X 下的设备驱动程序是不能和Windows N T 的设备驱动程序兼容的。1.1VxD 的文件和数据结构设备驱动程序的编写有一定规范,需要对于32位的汇编和C 语言比较熟悉。一般完全由汇编语言编写,但是也可以用C 与汇编
9、混合编写实现。首先需要有MicrosoftDD K (Driver K it ,一般工具是MASM6.11和VC2.0以上版本。通常虚拟设备驱动程序由5个段组成,它们分别是:VxD-CODE ,VxD-DA TA ,VxD-ICODE ,VxD-I 2DA TA 和VxD-REAL-IN IT.VxD-CODE 是保护模式下的代码段,一般这个包括设备驱动程序的控制程序、回收函数、服务程序和接口函数,这个段也命名为-L TEXT ;VxD-DA TA 是保护模式下的代码段,一般包括设备驱动程序的描述表,以及一些全局变量,这个段也命名为-LDA TA ;VxD-I 2CODE 是保护模式下的初始化
10、代码段,包括一些初始化时使用的服务程序,虚拟机管理器在初始化结束之后就将这个段取消,这个段也命名为-I 2TEXT ;VxD-IDA TA 是保护模式下的初始化数据段,包括一些初始化时使用的数据,虚拟机管理器(VMM 在初始化结束之后就将这个段取消,这个段也命名为DA TA ;VxD-REAL-IN IT 包括实模式下的初始化数据和代码段,虚拟机管理器最先就是装入这个代码段,在进程返回之后这个段取消,再装入其他代码段,这个段又命名为-R TEXT.需要注意的是,除了实模式下的初始化数据和代码段外,其他4个段都是32位保护模式下平板模式(flat model 的段。每个设备驱动程序必须首先声明一
11、个虚拟机的名字、版本号、初始化过程、虚拟机控制程序(相当于程序入口;有些设备驱动程序还可以声明设备标志号和接口函数(API .虚拟机一般用Declare-Virtual-Device 宏来声明。每个虚拟机需要一个虚拟机控制程序。虚拟机管理器通过这个程序来向该虚拟机传递控制信息,系统通过控制消息来控制虚拟机的执行,例如初始化虚拟机、虚拟机不像WindowsDLLs 一样提供出口函数(export functions ,虚拟机管理器通过0x20号中断来实现与虚拟机的连接,中断的句柄通过一个服务号来决定到底哪个虚拟机支持这个服务功能。一个虚拟机通过BeginProc 和Endproc 两个宏来定义它
12、的服务功能,很象汇编语言。VxD 可通随VMM 之间的紧密协作,才使得VxD 具有了应用程序所不具备的能力,诸如可以不受限制地访问硬件设备、任意查看操作系统数据结构(如描述符表、页表等、访问任何内存区域、捕获软件中断、捕获I/O 端口操作和内存访问等,甚至还可以截取硬件中断。1.2VxD 的运行机制尽管VxD 使用32位平面存储模式(flat memory model ,但它的代码和数据仍使用分段管理,段有6种类型,即实模式初始化、保护模式初始化、可分页、不可分页、静态和只调试(debug only ,每种类型又有代码段和数据段之分,所以VxD 共有12个段。实模式代码段和数据段为16位(分段
13、模式,其他段则是32位(平面模式。“实模式初始化”段包含了在Windows 初始化过程的最初阶段VMM 变为保护模式之前要执行的代码静态加载的VxD ,此时可以查看Windows 启动前的实模式环境,决定是否继续加载,并通知VMM ,加载完毕后,VMM 进入保护模式并执行保护模式初始化代码,同样将执行结果再通知VMM.初始化完成后,“保护模式初始化”段和“实模式初始化”段即被遗弃。VxD 的大部分代码都在其他的某一段中,“可分页”段允许虚拟存储管理器(Virtual Memory Manager 进行分页管理,大多数的VxD 代码都应当在“可分页”段。“不可分页”段的内容主要包括:VxD 的主
14、入口点、硬件中断处理函数、所访问的数据以及能被另一个VxD 中断处理函数调用的异步服务。“静态”段仅用于可以动态加载的VxD ,当VxD 卸载后,静态代码段和数据段都保留在内存中。“只调试”段只是VMM 在Soft-ICE for Win 95等调试环境下才将其载入。VMM 是通过VxD 的设备描述符块DDB63应用科技第28卷(Device Descriptor Block来识别的。DDB向VMM提供了VxD的主入口点,还向应用程序和其他的VxD提供了入口点。VMM利用这个主入口点将VM及Windows自身的状态通知给VxD,然后VxD通过相应的工作来响应这些事件。由于VxD不仅仅服务于一个
15、物理设备(比如多个串口或仅与一个VM发生联系,所以VxD 需状态信息。VxD用一个或多个设备上下文结构来保存设备信息,如I/O端口基地址、中断向量等,VxD将自己的每个VM的状态信息保存在VMM的VM控制块中。VMM提供的服务包括:事件服务、内存管理服务、兼容执行和保护模式执行的服务、登录表服务、调度程序服务、同步服务、调试服务、I/O捕获服务、处理错误和中断服务、VM中断和回调服务、配置管理程序服务以及其他杂项服务。2开发工具V ToolsD简介V ToolsD是专门用于开发VxD程序的一种工具软件,它包括VxD框架代码生成器Quicd2 VxD,C运行库、VMM/VxD服务库、VxD的C+
16、 +类库、VxDLoad和VxDView等实用工具以及大量的C,C+例程。由VC+,BC+的32位编译器编译生成的VxD程序可以脱离V ToolsD环境运行。利用QuickVxD可以方便、快捷地生成VxD 的框架,即生成后缀名为h,cpp和mak的3个文件。源文件包含了运行VxD的基本组件,其中包含控制消息处理、API入口点、以及VxD服务等函数框架,并且还定义了标志,设置了编译参数,声明了类别,然后在C+环境下,向生成的各个处理函数体内添加自己的代码,最后使用编译器NMA KE生成标准的VxD程序。由于VxD运行在ring0级,所以调试程序相当困难。使用的调试工具是Soft-ICE for
17、Win 95.目前V ToolsD的最新版本为3.0,它支持设备访问体系结构DAA(Device Access Architecture,所编写的程序代码将可以在所有Windows平台(包括Win95,Win98以及Windows N T上共享。当然也可以使用Microsoft公司的DD K(De2 vice Developer K it来开发VxD,但DD K不能象V ToolsD那样通过屏蔽系统及VxD的底层技术细节提供丰富的C运行库和C+类库,而是让开发人员充分享用面向对象编程方法的方便与快捷,因此仅就该点而言,使用DD K是不方便的。3VxD程序设计实例在开发电话网络测试系统的设计过程
18、中用V ToolsD,VC+6.0为自制的ISA卡开发了虚拟设备驱动程序Interrupt.vd.中断由应用程序动态载入系统的Interrupt.vxd响应并加以处理。中断服务程序ISR结束后,调用函数Shell-PostMessage(向应用程序窗口发送自定义消息。应用程序接受消息后,再通过函数DeviceI oC ontrol(与VxD接口函数OnW32Device IoControl(互传缓冲区数据。程序结束即可动态卸载VxD.Win95下硬件中断的处理过程。当中断发生时,处理器转换为ring0级保护模式。win2 odows系统并不象DOS那样通过中断描述符表ID T(Interrup
19、t Descriptor Table直接指向中断处理过程,而是由ID T入口指向VMM中的程序。该程序将判断是否为中断调用,如果是,则把中断控制权交给虚拟可编程中断控制器V PICD(Vir2 tual Programmable Interrupt Controller Device, V PICD实际上是一个重要的VxD,V PICD再将其交给另一个注册了该中断的VxD(如Inter2 rupt.vxd来处理。VxD程序是通过调用V PICD 服务V PICD-Virtualize-IRQ来注册中断的。此应用程序使用了下列函数:CreateFile(动态加载VxD,CloseHandle(并
20、动态卸载VxD,PreT rans2 lateMessage(截获消息、DeviceI oC ontrol(与VxD互传缓冲区数据。虚拟设备驱动程序Interrupt.vxd经调试后工作正常,未发生过任何丢失数据或死机的现象。下面是虚拟设备驱动程序interrupt.vxd的部分源代码Interrupt.h和Interrupt.cppInterrupt.h/IN TERRU PT.h-include file for VxD IN2 TERRU PT#define DEV ICE-CLASS InterruptDevice#define IN TERRU PT-Device ID UNDE2
21、FIN ED-DEV ICE-ID#define IN TERRU PT-Init-Order UNDE2 FIN ED-IN IT-ORDER#define IN TERRU PT-Major#define IN TERRU PT-Minor0#define M Y-IRQ9/定义9号中断class M YHw Int:public V Hardware Intpublic:MyHw Int(:V Hardware Int(M Y-IRQ,0,0, virtual VO ID OnHardware Int(VMHAN273第9期王磊,等:Win98下虚拟设备驱动程序的设计与实现DL E ;c
22、lass InterruptDevice :public VDevice pulice :virtual BOOL OnSysDynamicDevice Init (;virtual BOOL OnSysDynamicDeviceExit (;virtual DWORD OnW32Device IoControl (PI 2CO TL PARAMS pDIOCParams ;MyHw Int 3pMyIRQ ;class InterruptVM ;public VVirtualMachine public :InterruptVM (VMHANDL EHVM ;public :Interrup
23、t Thread (THREADHADANDL E h Thread Interrupt.cpp/IN TERRU PT.cpp -main module for VxD IN TERRU PT#define DEV ICE -MA IN #include “Interrupt.h ”Declare-Virtual-Device (IN TERRU PT #define WM-USER-POSTVXD 0x1000/自定义消息#undef DEV ICE -MA INInterruptVM :InterruptVM (VMHANDL E 2hVM :VVirtualMachine (hVM Interrupt Thread :Interrupt Thread (THREADHANDL Eh Thread :V Thread (h Thread BOOL InterruptDevice :OnSysDynam 2icDevice Init (/动态加载时初始化/硬件初始化pMyIRQ =new MyHw Int (;if (pMyIRQ &&pMyIRQ ->hook (/挂接中断pMyIRQ ->physicalUnmask (;/允许中断return TRU E ;else ret
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 南京医科大学康达学院《专业方向综合课程设计》2023-2024学年第一学期期末试卷
- 湖南省长沙市2024年中考数学模拟考试试卷含答案
- 九江学院《服装CAD制版》2023-2024学年第一学期期末试卷
- 江苏海洋大学《生化分离工程》2023-2024学年第一学期期末试卷
- 湖南九嶷职业技术学院《越南语阅读》2023-2024学年第一学期期末试卷
- 【物理】第十二章 简单机械 单元练习+2024-2025学年人教版物理八年级下册
- 黑龙江工商学院《文化与社会发展》2023-2024学年第一学期期末试卷
- 重庆第二师范学院《机器学习与人工智能》2023-2024学年第一学期期末试卷
- 浙江海洋大学《光电信息材料与技术》2023-2024学年第一学期期末试卷
- 中国科学技术大学《公关与营销策划》2023-2024学年第一学期期末试卷
- GB/T 16895.3-2024低压电气装置第5-54部分:电气设备的选择和安装接地配置和保护导体
- 2025湖北襄阳市12345政府热线话务员招聘5人高频重点提升(共500题)附带答案详解
- 2025年河北省职业院校技能大赛智能节水系统设计与安装(高职组)考试题库(含答案)
- 2024年下半年鄂州市城市发展投资控股集团限公司社会招聘【27人】易考易错模拟试题(共500题)试卷后附参考答案
- GB/T 29498-2024木门窗通用技术要求
- 《职业院校与本科高校对口贯通分段培养协议书》
- GB 4053.2-2009固定式钢梯及平台安全要求第2部分:钢斜梯
- 通力电梯培训教材:《LCE控制系统课程》
- 品管圈PDCA持续质量改进提高静脉血栓栓塞症规范预防率
- 一次函数单元测试卷(含答案)
- 陕西省榆林市各县区乡镇行政村村庄村名居民村民委员会明细
评论
0/150
提交评论