阅读:1249回复:7
请教各位高手一个PNP的问题
各位高手,我想实现网卡PNP功能(插一块新网卡,系统自动识别为已经安装过的设备),我现在写了一个Group为Boot Bus Extender的驱动,就差如何得到HKLM\System\CurrentControlSet\Enum\PCI\<deviceID>\<instanceID>的instanceID,我查了资料,这个instanceID是一个由系统生成的hash值,不知道哪位高手知道如何组这个值。
另外,我看了一篇《动态加载pnp设备的步骤的文章》提到:http://blog.sina.com.cn/u/54351bd9010004n9 1)插入设备,向bus driver发IRP_MJ_IO_CONTROL的IRP。 2) bus driver创建设备,加入自己的子设备列表。 3) bus driver调用IoInvalidateDeviceRelations来通知pnp manager更新他的设备树。 4) pnp manager发送一个IRP_MN_QUERY_DEVICE_RELATIONS的IRP。 5) bus driver处理该IRP。 6) pnp manager根据该IRP返回的信息来更新自己的设备树,创建新设备的节点。 7) pnp manager发送一系列IRP来收集新设备的信息来配置设备: 我能否在我的程序中模拟PnP向PCI bus驱动程序发送挂接硬件请求,然后再发送请求以得到instance id呢?如果可以,有人有sample没有,谢谢! |
|
沙发#
发布于:2007-03-15 06:21
你的目的是什么呢?如果这个网卡是你自己开发的,想用别人的driver来驱动,那只要把各个deviceid设置的和别人的一样即可;如果是想用自己的driver,但不想出现“安装新硬件”,那就先用程序把driver安装好,再插硬件。向bus driver发那些东西,一般都是做虚拟设备用的。你做虚拟网卡?
|
|
|
板凳#
发布于:2007-03-15 09:35
我的目的是把已知的网卡driver装好后,随便插一个网卡在任意一个PCI插槽,希望系统能认为这个硬件是已经安装过的,不希望系统“找到新硬件,正在安装...”。我现在的做法是在Group为Boot Bus Extender的驱动中把HKLM\System\CurrentControlSet\Enum\PCI\<deviceID>\<instanceID>都创建起来,这样系统就认为这个硬件是已经安装过的。但这个instanceID如何组成,我现在还一筹莫展,希望高手帮忙,谢谢!
|
|
地板#
发布于:2007-03-15 11:55
难道现在所有的网卡厂商都用同一个公板?用同一个芯片?
|
|
|
地下室#
发布于:2007-03-15 13:42
对于驱动,我是预先安装好的,呵呵
|
|
5楼#
发布于:2007-03-15 18:20
各位高手,该出手时就出手啊
|
|
6楼#
发布于:2007-03-15 21:35
你搜一下驱网上的Diskft和它的测试程序吧,有对你需要部分的处理。
|
|
7楼#
发布于:2007-03-16 08:55
>>你搜一下驱网上的Diskft和它的测试程序吧,有对你需要部分的处理。
老大,我没有搜到,能告诉我相应的网址吗?或者你如果有代码的话,能不能发给我或者贴出来,我的mail:liangyufei2003@163.com,谢谢! |
|