阅读:2476回复:12
那位高手能详细分析一下用户插入一个硬件时,PnP管理器自动加载其驱动的具体过程
即怎样和总线驱动合作,
搜索*.inf。 怎样inf加载驱动。 |
|
沙发#
发布于: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与其驱动对应。 |
|
|
板凳#
发布于:2002-11-04 13:32
偶不懂USB,下面主要以PCI设备为例进行一下描述: |
|
地板#
发布于:2002-11-04 13:36
还有1点疑问:
1,何为DID, VID (很蠢的问题,hoho);PnP能为一个裸硬件配置? |
|
地下室#
发布于:2002-11-04 13:48
还有1点疑问: VID:Vender ID---厂商号。 DID:Device ID---设备号。 详细的有关内容可参考PCI总线规范中关于配置寄存器一节的内容。 PnP设备管理器也能为一个裸硬件正确完成配置,如果该设备有缺省的配置值的话。 |
|
|
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. |
|
6楼#
发布于:2002-11-04 16:01
总线上有设备加入时,会发出电信号,通知总线驱动程序,有它按
标准建立pdo,然后再搜索注册表,找其所对应的filter driver,class driver.各driver在注册表中的次序是由inf文件决定的。 |
|
|
7楼#
发布于:2002-11-04 16:02
霍霍
气氛不错 |
|
|
8楼#
发布于:2002-11-04 17:41
供参考:
在Windows 2000和Windows 98中,通过使用总线驱动程序,PnP管理器能够自动检测硬件和分配I/O资源。大部分现代设备都有即插即用特征,可以允许系统软件自动检测并提取它们的I/O资源需求。 当PnP管理器检测到硬件时,它首先参考注册表以了解有哪些过滤器驱动程序将管理该硬件。 总线驱动程序会自动发觉PnP设备并使用其板上的数据构造设备标识符。然后系统寻找这个设备的预安装INF文件。 驱动程序根据INF文件中的指令安装。 |
|
|
9楼#
发布于:2002-11-05 09:33
借花献拂:
那位高手能解释一下基于COM口的即插即用原理? 我看过一些文档,现在有点糊涂(基于COM口的设备,系统什么时候检测呢?中断方式还是查询方式?) |
|
10楼#
发布于:2002-11-05 17:37
给分,给分。
|
|
|
11楼#
发布于:2002-11-05 19:47
真正过程都在CONFIGMG中!!!自己可以分析。还找INF文件不是由底层来完成的,是由WINDOWS的应用层来完成的,底层和WINDOWS的应用层之间是消息WM_DEVICECHANGE来联系的,还底层又通过SHELL_HookSystemBroadcast勾挂一个回调函数来拦消息WM_DEVICECHANGE,这样由INF中信息来配制设备的。这过程中当然离不开设备的枚举、裁判程序了,还些又是通过CFGMGR32.DLL调用CONFIGMG.VXD中的服务来完成的。真正祥细的具体过程自己去分析吧!!以CONFIGMG.VXD为中心!!!
|
|
12楼#
发布于:2009-11-30 14:42
设备插上PC之后,PNP管理器会检测到,获取其设备ID之后,查找*.inf文件,然后调用AddDevice,之后PNP管理器会发送一个IRP_MN_START_DEVICE,好了。
|
|