当前位置: 首页 > article >正文

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函数里面不需要处理什么事情了。

http://www.lryc.cn/news/2414445.html

相关文章:

  • Flex4中文字幕教学视频(翻译自Adobe开发者中心)+ 离线下载播放器
  • 苹果电脑是“监狱”、弃用 Ubuntu,GNU 创始人斯托曼谈自由软件运动现状
  • 海龟绘图小案例(内含源码)
  • 针对没有光驱,NTLDR is missing系统无法启动的解决办法
  • 虚幻引擎3(Unreal Engine 3)概要
  • C 语言(基础笔记)
  • 最新d3dx9_33.dll文件丢失解决
  • 《社交网络》中Facemash算法分析
  • Android 版本区别
  • 网络通信原理——OSI模型、TCP/IP模型、数据通信原理
  • 常见的用户密码在后台数据库中加密存储方式
  • 办公楼综合布线系统详细设计方案
  • 路由器的类型及衡量路由器性能的主要参数指标
  • html引入html include_CSS的引入方式笔记
  • 为什么在Spring应用中不建议使用属性注入(Field Injection)
  • 本地代码与托管代码
  • mysqlbinlog -v与-vv --base64-output 与不加的区别
  • 海外代理IP如何获取?
  • 个人博客系统源码 溯雪Sxlog轻博客源码 PHP开源 简洁干净轻博客源码
  • WinPE能破解Windows的密码,这样Windows就不安全吗?
  • 十种不同风格的网站导航菜单
  • nagios安装教程
  • jQuery.validationEngine.js学习
  • 网站建设经验分享:如何进行网站内容更新与维护?
  • MYSQL入门-mysql的下载与安装(1)
  • 文件粉碎机(file pulverizer) v4.2 怎么用
  • 马士兵servlet、jsp、oracle视频地址
  • winform控件之maskedTextBox
  • 2022年网络安全面试题总结
  • linux pci串口驱动下载,PCI串行口驱动下载_PCI串行口驱动官方下载-太平洋下载中心...