阅读:1978回复:11
如何让一个 Driver 像总线驱动程序那样枚举出一个新设备
比如,插入一个USB设备,USB总线会报告发现了一个新设备,USB\\VID_XXXX&PID_XXXX,从而根据这个Hardware ID寻找加载其 Driver。
我的目的是:让这个加载后的 Driver 再报告发现了新设备,比如 MyBus\\MyInst,从而加载另一个 Driver。 总线驱动程序是如何做的? 我不能把现有的 Driver 改成总线驱动,能做到那样吗? 欢迎任何提示,谢谢! (不知道我有多少分可送 :() |
|
|
沙发#
发布于:2003-06-09 08:48
|
|
|
板凳#
发布于:2003-06-09 11:57
还没人回答啊 :(
DIY一下先,好象是 IRP_MN_QUERY_DEVICE_RELATIONS IRP_MN_QUERY_ID 刚才看了一下 Mass Storage 的 Driver,然后就在我的 Mouse Driver 里试了一下,发现可以收到这个请求: 0x18: IRP_MN_QUERY_LEGACY_BUS_INFORMATION 0x0B: IRP_MN_QUERY_RESOURCE_REQUIREMENTS 0x0D: IRP_MN_FILTER_RESOURCE_REQUIREMENTS 0x00: IRP_MN_START_DEVICE 0x09: IRP_MN_QUERY_CAPABILITIES 0x14: IRP_MN_QUERY_PNP_DEVICE_STATE 0x07: IRP_MN_QUERY_DEVICE_RELATIONS 0x13: IRP_MN_QUERY_ID 给关心这个问题的人看看,也欢迎有经验的人指教。我只有继续踹了,呵呵 |
|
|
地板#
发布于:2003-06-18 15:37
做一个过滤启动程序就可以吧?
|
|
地下室#
发布于:2003-06-19 09:06
可以在任意的支持PNP IRP的驱动中增加类似于ENUMERATE CHILD DEVICE的功能.
|
|
|
5楼#
发布于:2003-06-19 12:09
理论上,我也认为是这样(即使我的是filter driver),但实际上,我没有成功 :(
http://www.driverdevelop.com/forum/viewthread.php?tid=43886 (简单地说,没有收到后续的请求,如query_device_id...) |
|
|
6楼#
发布于:2003-06-19 23:18
那是你没有正确地遵循BUS的所有IRP规则. 例如IoInvalidBusRelations等调用. 和正确处理各种IRP_MJ_PNP的IRP.
|
|
|
7楼#
发布于:2003-06-20 11:22
I think if the device driver is *.sys (written by WDM) that will be ok. But if it is vxd driver,how can a WDM bus driver load vxd driver (on win98)? Thanks.
|
|
8楼#
发布于:2003-06-22 03:36
CathySun:
我的是WDM,2K。 lu0老大: 我的确没调过IoInvalidBusRelations,但 我以为调用IoInvalidBusRelations无非是产生 IRP_MN_QUERY_DEVICE_RELATIONS 请求,但现在我已经收到IRP_MN_QUERY_DEVICE_RELATIONS了(初始化时 PNP mgr 就会发送一次),问题是响应这个请求(产生PDO后),收不到后续的 它们俩发送的这个请求有区别吗?――我觉得没有(好比装载bus driver时总线上已经有设备了,而不是后来插上去的) 至于其它的PnP请求,就很难说了,在这之前收到的请求是很有限的,我认为只有IRP_MN_QUERY_DEVICE_RELATIONS是有关的 :( |
|
|
9楼#
发布于:2003-06-22 03:39
反正,我现在已经做得差不多了。没用bus driver,可以work,就是没有用了bus driver来得自然。
如果以后谁写这方面的,欢迎交流 :) |
|
|
10楼#
发布于:2003-07-05 21:10
要用BUS DRIVER达到枚举一个设备并不难,在2K的DDK下有有一个BUS
DRIVER的例子ntddk\\src\\generic\\toaster,win98下有enum的例子,win98\\src\\plugplay\\examenum,但win98的例子不够完整. |
|
|
11楼#
发布于:2003-07-06 22:25
谢谢YiMin.Yang
toaster 我看过的,还看过serenum,umss,都差不多。:) 我怀疑是class driver做了什么处理,我这两个都是port/mini driver,都试过了,不行 :( |
|
|