twenke
驱动牛犊
驱动牛犊
  • 注册日期2002-10-09
  • 最后登录2002-11-04
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:2475回复:12

那位高手能详细分析一下用户插入一个硬件时,PnP管理器自动加载其驱动的具体过程

楼主#
更多 发布于:2002-11-04 12:51
即怎样和总线驱动合作,
搜索*.inf。
怎样inf加载驱动。
Dragon2008
驱动中牛
驱动中牛
  • 注册日期2002-04-01
  • 最后登录2006-03-13
  • 粉丝0
  • 关注0
  • 积分31分
  • 威望5点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2002-11-04 13:24
偶不懂USB,下面主要以PCI设备为例进行一下描述:

1、设备插入PC
2、PnP设备管理器检测到该设备,并正确完成对其配置,得到DID,VID
3、由该设备所属的总线类驱动程序为其创建一个PDO,并开始为该设备安装其真正的驱动
4、驱动安装向导根据该设备的DID、VID查找与其匹配的INF文件。
5、找到匹配的INF文件后,根据INF文件中指定的驱动程序名将该驱动复制到系统目录中,同时修改注册表并为该设备创建一个服务。

总之,设备通过VID和DID与INF联系,然后再通过INF与其驱动对应。
我姓龙,我属龙,我叫龙。。。
twenke
驱动牛犊
驱动牛犊
  • 注册日期2002-10-09
  • 最后登录2002-11-04
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2002-11-04 13:32
偶不懂USB,下面主要以PCI设备为例进行一下描述:

1、设备插入PC
2、PnP设备管理器检测到该设备,并正确完成对其配置,得到DID,VID
3、由该设备所属的总线类驱动程序为其创建一个PDO,并开始为该设备安装其真正的驱动
4、驱动安装向导根据该设备的DID、VID查找与其匹配的INF文件。
5、找到匹配的INF文件后,根据INF文件中指定的驱动程序名将该驱动复制到系统目录中,同时修改注册表并为该设备创建一个服务。

总之,设备通过VID和DID与INF联系,然后再通过INF与其驱动对应。
 
twenke
驱动牛犊
驱动牛犊
  • 注册日期2002-10-09
  • 最后登录2002-11-04
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2002-11-04 13:36
还有1点疑问:
1,何为DID, VID (很蠢的问题,hoho);PnP能为一个裸硬件配置?
Dragon2008
驱动中牛
驱动中牛
  • 注册日期2002-04-01
  • 最后登录2006-03-13
  • 粉丝0
  • 关注0
  • 积分31分
  • 威望5点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2002-11-04 13:48
还有1点疑问:
1,何为DID, VID (很蠢的问题,hoho);PnP能为一个裸硬件配置?
 


VID:Vender ID---厂商号。
DID:Device ID---设备号。
详细的有关内容可参考PCI总线规范中关于配置寄存器一节的内容。

PnP设备管理器也能为一个裸硬件正确完成配置,如果该设备有缺省的配置值的话。
我姓龙,我属龙,我叫龙。。。
taosa
驱动牛犊
驱动牛犊
  • 注册日期2002-07-29
  • 最后登录2005-01-06
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2002-11-04 14:23
usb or pci device or com based device?

I think usb and pci device is easy to understand, but the com based device is hard to read.
deltali
驱动小牛
驱动小牛
  • 注册日期2002-10-25
  • 最后登录2010-07-06
  • 粉丝0
  • 关注0
  • 积分2分
  • 威望23点
  • 贡献值0点
  • 好评度11点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2002-11-04 16:01
总线上有设备加入时,会发出电信号,通知总线驱动程序,有它按
标准建立pdo,然后再搜索注册表,找其所对应的filter driver,class driver.各driver在注册表中的次序是由inf文件决定的。
我又来了,生命不息,驱动不止。
zydcat
驱动老牛
驱动老牛
  • 注册日期2001-12-06
  • 最后登录2006-04-12
  • 粉丝0
  • 关注0
  • 积分9分
  • 威望2点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2002-11-04 16:02
霍霍
气氛不错
[color=red]肥虫虫[/color] [img]http://www.driverdevelop.com/forum/upload/bradley/2002-11-15_ig01.gif[/img]
ydyuse
驱动老牛
驱动老牛
  • 注册日期2002-07-25
  • 最后登录2005-03-26
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2002-11-04 17:41
供参考:
在Windows 2000和Windows 98中,通过使用总线驱动程序,PnP管理器能够自动检测硬件和分配I/O资源。大部分现代设备都有即插即用特征,可以允许系统软件自动检测并提取它们的I/O资源需求。

当PnP管理器检测到硬件时,它首先参考注册表以了解有哪些过滤器驱动程序将管理该硬件。

总线驱动程序会自动发觉PnP设备并使用其板上的数据构造设备标识符。然后系统寻找这个设备的预安装INF文件。
驱动程序根据INF文件中的指令安装。
生命驱动,活力无限!
taosa
驱动牛犊
驱动牛犊
  • 注册日期2002-07-29
  • 最后登录2005-01-06
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2002-11-05 09:33
借花献拂:
那位高手能解释一下基于COM口的即插即用原理?
我看过一些文档,现在有点糊涂(基于COM口的设备,系统什么时候检测呢?中断方式还是查询方式?)
Dragon2008
驱动中牛
驱动中牛
  • 注册日期2002-04-01
  • 最后登录2006-03-13
  • 粉丝0
  • 关注0
  • 积分31分
  • 威望5点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
10楼#
发布于:2002-11-05 17:37
给分,给分。
我姓龙,我属龙,我叫龙。。。
lzwf4
驱动小牛
驱动小牛
  • 注册日期2002-10-10
  • 最后登录2006-06-09
  • 粉丝0
  • 关注0
  • 积分22分
  • 威望3点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
11楼#
发布于:2002-11-05 19:47
真正过程都在CONFIGMG中!!!自己可以分析。还找INF文件不是由底层来完成的,是由WINDOWS的应用层来完成的,底层和WINDOWS的应用层之间是消息WM_DEVICECHANGE来联系的,还底层又通过SHELL_HookSystemBroadcast勾挂一个回调函数来拦消息WM_DEVICECHANGE,这样由INF中信息来配制设备的。这过程中当然离不开设备的枚举、裁判程序了,还些又是通过CFGMGR32.DLL调用CONFIGMG.VXD中的服务来完成的。真正祥细的具体过程自己去分析吧!!以CONFIGMG.VXD为中心!!!
shirullan
驱动牛犊
驱动牛犊
  • 注册日期2008-06-14
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分46分
  • 威望352点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
12楼#
发布于:2009-11-30 14:42
设备插上PC之后,PNP管理器会检测到,获取其设备ID之后,查找*.inf文件,然后调用AddDevice,之后PNP管理器会发送一个IRP_MN_START_DEVICE,好了。
游客

返回顶部