首页
社区
课程
招聘
[求助]请教虚拟设备的WDM驱动里AddDevice调用的发起原因?
发表于: 2008-12-16 01:49 6722

[求助]请教虚拟设备的WDM驱动里AddDevice调用的发起原因?

2008-12-16 01:49
6722
小弟最近正在看windows驱动的书,碰到了一个大大疑惑:
书上提到WDM是支持即插即用的驱动程序,因此不须要像NT驱动那样在DriverEntry中主动去创建设备,而是因为windows系统发现了新的设备,才把WDM驱动加载起来,并调用它的AddDevice例程。
这一点对于真实硬件来说可以理解,比如我插个u盘进去,操作系统发现后先创建一个PDO,然后再把上层驱动加起来并把它创建好的PDO作为参数扔过来。
但是,通常书上举例都是讲怎么去写一个“虚拟设备”的驱动,我就郁闷了,既然都是虚拟设备了,没有一个真实插入的事情,操作系统是怎么发现有一个这类的新设备出现了呢?虚拟设备,一般都是自己拿来做内核rookit用的吧,也就是说自己不创建的话,谁会帮你创建呢?

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (6)
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
汗,这么久了还没人来看,各位大哥不是忘了吧?我自己顶一个。。
2008-12-17 20:18
0
雪    币: 160
活跃值: (272)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
3
我也有这个疑惑...
2009-7-4 21:00
0
雪    币: 211
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
虚拟设备的WDM驱动? 能给个例子看看吗,你说的虚拟设备应该不是WDM的吧?只是普通的KMD?!
我也不懂。能个代码看看?
2009-7-5 09:21
0
雪    币: 160
活跃值: (272)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
5
不知道com0com的方式是什么,一般的虚拟驱动的方式都是在手动添加硬件然后有inf文件,这样激活了AddDevice
2009-7-5 09:47
0
雪    币: 211
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
楼上说的是安装驱动,安装驱动后面还有启动驱动,启动驱动后面可能才是addDevice. 我也迷惑中。
2009-8-10 20:02
0
雪    币: 211
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
我想大概是这样的,
安装虚拟设备一般要在控制面板里安装新设备,这时候系统会发出检测新设备的通知, PNP会调查有没有新的设备,其实这里的PNP管理器的名字会误导人,因为非PNP设备(比如,虚拟设备),也会被发现,PNP管理器会构造一个PDO,然后以这个参数调用addDevice, 这个PDO应该是挂在unknown总线上的。当然你也可以为虚拟设备再建立一个虚拟总线,当安装虚拟总线的时候,PNP管理器也会向系统报告说有一个设备加载了(用INF安装的时候),这时候系统还是会为虚拟总线创建一个PDO,总的来说,是系统在检测新设备的时候,非PNP设备也能检测到,所以说系统帮我们做了这个事情。
      以上是我在网上搜了一晚上,得出的一点结论,本人菜鸟一个,如果大家有什么好的见解,欢迎指正。
2009-8-11 14:13
0
游客
登录 | 注册 方可回帖
返回
//