- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Windows 驱动程序设计 Windows 驱动程序简介 Windows 下有两种不同结构的驱动程序,(Virtual Device Driver)VxD和 Windows Driver Model WDM。VxD只能够运行在Win95和Win98环境下,WDM能够在Win98和Win2000下运行。
Windows95下的VxD
所有的设备驱动程序都有一个具有管理功能的核心虚拟机VMM 虚拟机管理器 管理。Windows对中断的处理与MS-DOS大不一样。当中断发生时,处理器转换为ring0级保护模式。Windows系统并不像MS-DOS那样通过中断描述符表IDT Interrupt Descriptor Table 直接指向中断处理过程,而是由IDT入口指向VMM中的程序。该程序将判断是否为中断调用,如果是,则把中断控制权交给虚拟可编程中断控制器VPICD Virtual Programmable Interrupt Controller Device ,VPICD实际上是一个重要的VxD。VPICD再将其交给另一个注册了该中断的VxD(如Audcard.vxd)来处理。VxD程序是通过调用VPICD服务VPICD_Virtualize_IRQ来注册中断的。
Windows 95 对于设备 device 的处理,一般的模型是:由一个 VxD 掌管所有中断并执行所有数据传输,应用程序则使用函数调用 function calls 的方式对 VxDs 发出服务请求。只需使用 Win32 的 DeviceIoControl API 函数,以及那些支持所谓 alertable waits” 即时唤醒,大意是那些可以在VXD中调用的Windows 32位 API函数,但数量极其有限, 的 Win32 API 即可。这两个接口可以让你把 VxD 当做 32 位应用程序的扩展组件。
Windows982kNT下的WDM
WDM模型(Windows Driver Model)是微软公司为当前主流操作系统Windows98和Windows 2000的驱动程序设计的一种构架。它和传统的win3.x和win95使用的vxd的驱动是完全不同的体系结构。不过对于最终用户来说,WDM驱动程序在Windows98和Windows2000下的表现很相似。作为驱动开发人员来说,它在两者中有很多的不同。并且Windows98中的WDM只能算是Windowss2000中的WDM的一个了集。在Windows98中有一些驱动程序只能使用VXD来实现,如串行通讯驱动等。
要写驱动程序,首先要了解操作系统的结构。在WDM体系中,windows2000操作系统中是最标准的实现方式,Windows98则是部分兼容WDM结构。照微软的说法,Windows98和Windows2000 X86 Intel 架构 版本实现二进制码兼容 参见98DDK ,Windows2000 x86版本与其它CPU平台版本实现源码级兼容 因为Windows 2000是基本NT相似的结构,最底层是硬件抽象层HAL, 。但实际上,Windows2000的WDM实现中有很多例程在Win98中没有实现。
相对而言,VxD的结构比较简单,WDM牵涉的概念较多,因为时间较短,很多同学以前没有windsows下的驱动程序的开发经验,所以推荐选择VxD。
开发VxD可以使用汇编的方法,直接用98DDK,要用到很多的汇编语言,开发的效率较低。VtoolsD开发包提供了对VxD编程的全线C++类库支持。使用Vtoolsd的封装环境,我们可以很方便的写出高效率的驱动。
VToolsD的使用
在VtoolsD中有一个最重要的VxD开发工具:QuickVxD。QuickVxD可以为我们自动生成VxD源程序框架,而且QuickVxD提供了许多VxD的特性选项,例如可以选择要生成的VxD是动态加载或是静态加载的,要使用的编程语言是C还是C++等等。C/C++头文件,C/C++代码文件,C/C++工程文件。头文件含有VxD所必需的类声明,还有VxD控制消息处理函数声明,Windows ring3 API调用VxD的调用入口声明以及VxD其他服务函数声明等必要声明,此外,头文件还定义了许多全局变量和类变量。代码文件中,QuickVxD预先生成了许多须继续编程来扩充其内在功能的类成员函数。通过在这些类成员函数中添加代码,从而完成定制功能。
驱动程序有两种调用方式:静态加载和动态加载。所谓静态加载就是指在系统启动后自动加载,这样在驱动程序中必须在系统启动的时候响应Device_Init的消息,在系统退出的时候响应System_Exit的消息。但是静态加载还要涉及到和其他驱动程序的配合问题,往往会使系统启动不起来,开发的时候
您可能关注的文档
最近下载
- 中学食堂建设项目社会稳定风险评估报告(模板范文).docx
- 第9课 互传密信有诀窍 教案 义务教育人教版信息科技五年级全一册.docx VIP
- 根本原因分析精神病人自杀RCA.pptx VIP
- SL523-2024 水土保持监理规范.docx VIP
- 路面结构层厚度评定表(代表值自动计算).xls VIP
- 雨虹防水质保合同范本Word模板.docx VIP
- 旅游产品策划与设计422全书教学课件电子教案.ppt
- Toll样受体信号通路中MyD88的研究进展_吴燕燕.pdf VIP
- 2024水土保持工程施工监理规范.docx VIP
- 义务教育版(2024)五年级全一册 第1课 生活处处有算法 教案.docx VIP
文档评论(0)