首页
社区
课程
招聘
[求助]AddDevice这个函数有什么鬼用?
发表于: 2010-9-10 00:22 5250

[求助]AddDevice这个函数有什么鬼用?

2010-9-10 00:22
5250
看了很多源码,发现蛮多涉及到AddDevice这个函数(当然是自己新写的),都是建个设备然后丢到栈里就算完成工作了,看到参数有涉及下层真实设备,感觉还蛮重要的,所以想了解清楚,大家都这样做我也这样做终究不是办法,但是书也看了搜索也搜了,没一个说的清楚的,有人说这是"创建设备用的",你说听了气人不.
      所以各位乡亲父老,在下的问题是;
     1.什么样的设备建立的时候系统会调用该函数,就是要触发这个调用,我要怎么弄我的驱动
   2.在默认的情况下,系统调用这个函数的作用是什么,流程是什么.
    3.利用这个函数能干一些哪些比较有利的事情

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

收藏
免费 0
支持
分享
最新回复 (5)
雪    币: 63
活跃值: (17)
能力值: ( LV8,RANK:130 )
在线值:
发帖
回帖
粉丝
2
add device是WDM驱动的一个重要例程
请参考program windows driver model
2010-9-10 11:25
0
雪    币: 75
活跃值: (693)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
3
这跟windows的io管理器管理这些设备的模式有关,windows用的就是堆叠这种层次结构。如果你想让你的设备驱动能工作,需要加入进它的管理堆叠。adddevice就是完成这个工作,用于形成设备管理树。
单层驱动不需要调用这个函数,pnp设备需要调用这个

更详细的,看《windows内核情景分析》下册,第九章,看完了就明白了
2010-9-10 12:08
0
雪    币: 1
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
感谢帮助,通过看书大致了解了
每个新设备的产生都会调用这个例程,操作系统期望在里面处理新建的设备
但是除了方便和传进来的参数外,再没直接看到其他好处
求批评~ ~
2010-9-13 16:10
0
雪    币: 81
活跃值: (25)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
5
以前跟楼主一样对AddDevice的调用很不清楚,百度了很多也没找到答案,后来自己尝试了很多代码,并且实现了一个USB过滤驱动之后才有所了解,这里可以share一下。

首先,WDM驱动在注册时需要修改注册表(在你要过滤的设备的键下边你就能找到生成的驱动的名字)

然后在调用的时候,通常情况下是有新的设备接入或者删除(比如U盘插入了),操作系统就会遍历这个设备对应的注册表下的键,找到所有生成的过滤驱动,然后再调用它(这里就是调用的AddDevice)

ps:楼主说“每个新设备的产生都会调用这个例程”是不对的,只有你绑定的类型的新设备产生时才会调用对应的驱动,比如说你只过滤了USB的,那么不是USB的设备生成他是不会有反应的
2010-9-14 17:35
0
雪    币: 201
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
xyu
6
关于驱动开发的书籍,不知各位有什么好推荐,想买几本书来看看
2010-9-17 10:17
0
游客
登录 | 注册 方可回帖
返回
//