WDM驱动模型简介

WDM驱动是在NT驱动模型上进化而来的,因此在本质上,WDM驱动并没有太大区别,只是在支持即插即用、电源管理等功能上做了很多扩展,再多说一句,WDF驱动模型(UMDF、KMDF)也是对WDM的封装和扩展。不要纠结自己开发驱动应该使用哪种模型,需求明确了,模型也就知道了,当然,对于从零编写一个新驱动来说,建议使用最新的WDF驱动模型。

在加载驱动时,NT驱动是被动加载的,而WDM是主动加载的。NT驱动只有被动安装后,才可以工作,WDM驱动会在设备被发现时,提示安装驱动。WDM驱动是分层的(其实NT驱动也可以分层),一个WDM驱动至少有PDO和FDO两层(在没有过滤驱动的情况下),PDO有系统创建,确切的说是总线驱动创建。

1.WDM的驱动分类

(1)BUS DRIVER(总线驱动)总线驱动是要直接面对IO和卡曹的。也需要检测子设备的接入也就是枚举BUS上的设备,另外还要对PNP的请求进行响应。
(2)FUNCTION DRIVER(功能驱动)这是一个驱动的主要部分也就是主要实现功能的部分了。对设备进行读写操作和电源管理。
(3)FILTER DRIVER(过滤驱动),就是过滤分发和加工IRP请求的。

2.WDM驱动模型的逻辑关系

应用层
↓
上层过滤驱动(可选的,可以多层)
↓
FDO(必须的)
↓
下层过滤驱动(可选的,可以多层)
↓
PDO(必须的)

下层寻找上层设备对象:通过底层设备对象的AttachedDevice寻找
上层寻找下层设备对象:通过自定义设备扩展,指向下层设备对象

如果有多个同类设备,那么会分别创建FDO和PDO(如果有过滤驱动也会一并创建),水平设备之间是通过NextDevice指向的下一个的,直到NextDevice指向为空(NULL)。比如插入2块同样型号的网卡。插入第一个网卡的时候,系统会创建一个PDO,并且加载相应的FDO,插入第二个网卡的时候,系统创建另外一个PDO,并且加载相应的FDO。那么这两个PDO之间就是同一个水平层次,这两个FDO也处于同一个水平层次。

3.代码框架与NT驱动的变化

(1)设备创建
跟NT驱动不同,NT驱动一旦加载就创建设备,而WDM驱动是操作系统加载PDO以后,调用驱动的AddDevice例程,然后在AddDevice例程里面创建FDO,并且附加到PDO之上。

(2)设备卸载
设备卸载通过独立的派遣函数完成,派遣函数为IRP_MN_REMOVE_DEVICE,在里面删除设备即可,从PDO解除附加等,PDO是系统自动清理的,程序员不用管。因此,DriverUnload函数里面不需要处理什么事情了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: VS2015是一个强大的集成开发环境,其中包含了许多不同类型的项目模板,包括WDM模板。 WDM(Windows Driver Model)是Windows操作系统内核编程的一种方法。它提供了一系列的接口和协议,供开发人员编写设备驱动程序。设备驱动程序是系统与硬件设备之间的桥梁,允许软件与硬件进行通信。 VS2015的WDM模板为开发人员提供了一个快速起步的起点,使其可以创建一个基本的WDM驱动程序项目。该模板包含了一些常用的驱动程序功能,如设备初始化、I/O管理、内存管理等,以便开发人员可以更轻松地开始编写他们的驱动程序。 通过VS2015的WDM模板,开发人员可以轻松地创建一个符合Windows驱动程序模型驱动程序项目,并利用IDE的强大功能进行调试和测试。VS2015提供了丰富的调试和分析工具,使开发人员能够快速定位和修复驱动程序中的问题。 此外,VS2015的WDM模板还提供了一些示例代码和文档,帮助开发人员理解和学习WDM编程的基本概念和技术。这些示例和文档可以帮助开发人员更好地了解和使用WDM驱动程序开发的最佳实践。 总之,VS2015的WDM模板是一个非常有用的工具,它为开发人员提供了一种简单而高效的方式来创建和开发Windows设备驱动程序。通过这个模板,开发人员可以更快地启动他们的项目,并在整个开发过程中借助VS2015的强大功能进行调试和测试。 ### 回答2: VS2015是微软开发的一款集成开发环境,WDM(Windows Driver Model)则是Windows操作系统中的一个驱动程序模型。VS2015中提供了WDM模板,用于开发Windows驱动程序。 WDM模板提供了一套常见的驱动开发框架,开发者可以基于此框架快速构建符合Windows驱动程序模型驱动程序。WDM模板主要包括以下几个组件: 1. 驱动程序类型选择:WDM模板支持多种类型的驱动程序开发,包括内核驱动程序、文件系统驱动程序和设备驱动程序等。开发者可以根据具体需要选择合适的驱动程序类型。 2. 驱动程序框架生成:WDM模板能够自动生成基本的驱动程序框架代码,包括驱动程序入口点、设备对象创建与销毁、I/O请求处理等。开发者可以在这个框架的基础上进行具体的功能实现。 3. 驱动程序构建与调试:WDM模板允许开发者使用VS2015的构建工具进行驱动程序的编译和链接。此外,VS2015还提供了强大的调试功能,方便开发者在驱动程序开发过程中进行调试和排错。 使用WDM模板可以帮助开发者快速入门驱动程序开发,减少重复的底层代码编写工作。同时,WDM模板还提供了丰富的示例代码和文档,帮助开发者理解和学习驱动程序开发的关键概念和技术。 总结来说,VS2015中的WDM模板为开发者提供了一个简单、高效的驱动程序开发环境,方便开发者快速构建符合Windows驱动程序模型驱动程序。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值