阅读:1256回复:1
KMD中如何AddDevice?高手帮忙讨论下
根据我的了解,WDM驱动中是PNP管理器调用DriverObject->AddDevice例程,通知驱动程序新的设备到达,然后我们可以绑定该设备,如果我的驱动想动态加载和卸载,也就是KMD的方式,就不能使用AddDevice例程了,那PNP管理器怎么通知我的驱动呢?怎样邦定该设备呢?
我有个想法,调用IoRegisterPlugPlayNotification(),注册设备的到达函数,这样获取设备的接入信息,不过有个疑问,是不是当系统使用CallBack通知我的驱动时候,PNP管理器已经对该设备IRP_START_DEVICE了? 不知道还有没有其他方法 |
|
沙发#
发布于:2007-11-15 13:21
应该还没发送IRP_START_DEVICE吧,看了oney的书上说 "一旦资源分配确定,PnP管理器通过向每个设备发送一个带IRP_MN_START_DEVICE副功能码的PnP请求来通知设备。通常过滤器驱动程序对这个IRP不感兴趣,所以它们使用DefaultPnpHandler方式把请求向下传。而功能驱动程序正好相反,它需要在这个IRP上做大量工作,包括分配并配置额外的软件资源以及为设备操作做准备。这个工作需要在PASSIVE_LEVEL级上进行,并在低层驱动程序处理完该IRP后完成。"
|
|